Matryoshka
Open the Matryoshka editor to make patches and upload them to the FM-1.
- Custom firmware
- Stable
- High brick risk
- Reversible
Source codeWebsite: glvno.github.io
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
Matryoshka 1.6.0 changes how the FM-1 decides what its keys play. SEL arms a device so the keys play it, and SEL again disarms it. On the environment page, SEL layers several devices. REC now records the same way on every page. Also in this release: the piano roll's black keys pick rows, ties on drum grids, and two XL fixes.
Install: open https://matryoshka.lol/, go to the Flash tab, and install FM-1_716 (v1.6.0). It plays patches from 1.5; the patch format is unchanged.
Checked on these exact bytes: the emulator smoke test (182 checks), the scripted checks on our test FM-1 (108 checks), and the owner's hands-on check on that FM-1.
Changes
- On the FM-1, SEL arms what the keys play (#395). SEL on a device page arms that device and disarms the others, so the keys play it; an instrument whose keys come through a track and an Arpeggiator (every factory instrument) is armed with them, and REC records that track. On a device with no keys input, or an Arpeggiator alone, the bar says NOTHING HERE TAKES KEYS and nothing changes. In the editor, arming an instrument works the same way. SEL on an armed device's page disarms it again (the others stay armed; the last one out leaves the keys wired). SEL on an environment row adds that device to the armed ones or takes it out (a layer or a split); REC there no longer arms. With nothing armed the keys are wired: Main's cables decide where they go, as before, and the footer says KEYS WIRED after the patch's name. A patch loads wired. The SEQ page arms the track it shows when it opens and when ALGO picks another. SEL no longer opens the SEQ page (SEQ does), a row's device pages, or an assembly's preset list; a device's presets are still stepped with PRESET or ALGO on its environment row. On the SEQ page the track line's SEQ+REC: CLEAR hint no longer fits next to ARMED.
- On the FM-1, REC records the same way on every page (#395). With the transport stopped, REC starts it and records; running, REC records; REC again stops recording and the transport goes on. PLAY stops both. What records is every armed Steps track, over the notes already there, and a track armed while REC is on records from then on (ALGO on the SEQ page included). REC never changes the page: it no longer opens the SEQ page, and SEQ is the only way there. With no track armed REC still runs and the bar says REC: NO TRACK ARMED. On a drum grid a black key now always sounds its row and picks it, and while recording it also records the hit; SELECT moves the row silently. On the piano roll, all 27 keys play and record while REC records, and the black keys pick rows otherwise. Gone: REC with nothing armed recording hits from the black keys, REC on the SEQ page while stopped, and REC arming the roll's track itself.
- On the FM-1's piano roll the black keys pick the rows, not the track (#387). Black keys 1 to 8 are the 8 pitches on screen, black key 1 the bottom one, and they follow the window as SELECT scrolls it. With the transport stopped the row picked sounds, with REC on or off; its black key is lit, as on the drum grid. ALGO picks the track. Before, black key n switched to track n, so in a one-track patch only the first did anything. SEQ held or REC held + a black key still mutes or arms track n, and a live take still plays all 27 keys.
Patches
- 8 Lire XL's TUNE is continuous, as the Lyra-8's knob: each
tunerow is an Offset into its voice's pitch, ±4 octaves in hundredths of an octave (12 cents), from the voice's own tuning. It stepped in semitones before. The default sound is unchanged (rendered sample for sample); the XL has 151 modules (143) and an estimated 146 % CPU (144 %). - Meridian 8 XL's gate inputs take any voltage, as the NOON's: the inputs
gate 1..gate 8power their channel directly, after its mute button, so an offset, a held gate, an LFO or an oscillator there drones the channels that hold a sound (DOT, for one) with no key held. The keys still play the channels as before. The default sound is unchanged (rendered sample for sample); the XL has 180 modules (172) and an estimated 148 % CPU (143 %).
Fixes
- Choosing what an assembly's card shows: a switch row's check box no longer covers its name. On rows with named positions (a Selector, such as Io 4's ASSIGN or LEGATO) the name now moves right of the box and gets more of the row, as on a slider's row (#342).
- Space after clicking Octave down / Octave up starts the transport again. The button no longer keeps the focus after a click, so Space no longer pressed it a second time. Reached from the keyboard, it keeps the focus (#208).
- Ties on the FM-1's drum-track grids, and ties that reach (#368). On the SEQ page, LFO held + a white key now ties a note on a track that plays a Drum map, as it already did on the piano roll. A Drum map row stays up while its note sounds, so a tie holds a voice that sustains, such as a Lire plate or an Elvira voice. On both grids the tie now reaches: the row's last note before that step is extended to end on it, so one press ties step 1 through step 16 (before, the key only tied the note sounding on the step before). LFO + a step inside a note ends it there, and LFO + its last step makes it one step again (before, a tied step cut the note before it). With no note before the step the bar says NOTHING TO TIE; a tie does not run across the end of the loop. The grid draws a tied note's steps dim and joined, and a white key on a step a tie runs through cuts the tie there and starts a hit. Notes made longer in the editor's piano roll now show their length on the FM-1 too.
- Held black keys on the FM-1's drum grids (#368). On a drum track's SEQ page a black key now sounds its row for as long as it is held, not as a one-step hit, with REC on or off and the transport running or stopped. With REC on and
Before you start
- How hard is it?
- EasyCopy a file or use a web page. No extra software.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Could leave your device unusable.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did Matryoshka v1.6.0 work on your M-VAVE FM-1?
No reports yet for v1.6.0.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: M-VAVE FM-1.
No compatibility information yet.
Getting started
From the project's README ("Install on the FM-1"):
Two ways, the same update protocol (Felucca's, over USB MIDI):
- The Install panel of the editor: Get started > Install (it names the firmware version, "Install v1.2"), Commands (Ctrl/Cmd+K) > Install firmware, or open the editor with #flash at the end of the address. It needs Web MIDI with SysEx (Chrome or Edge). Tick "I understand and accept the risk", then Install Matryoshka firmware; Return to official V15 puts M-VAVE's firmware back. Keep the tab open until it says done.
- tools/fm1install.py from a checkout of this repository: python3 tools/fm1install.py web/public/firmware/matryoshka.fwsc, or FM-1015.fwsc from the same folder to return to stock.
Return to stock first if the FM-1 runs anything other than the official V15 or Matryoshka (Felucca, Sloop, M-VAVE Open or another build): Return to official V15, check that it boots, then install Matryoshka (for an FM-1 set up by M-VAVE Official Open, see below). The Install panel says so when it sees such an identity (fm1install.py --info prints it); nothing else is refused, but over Felucca (read the note above first) it installs only after you tick its warning.
Update mode: hold OCT- and OCT+ while switching the FM-1 on, or choose MENU > SYSTEM > UPDATE MODE. An install works from there too, and it is the way in when the firmware does not start. …
Risk and recovery
- Brick risk
- High
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Install on the FM-1"):
Two ways, the same update protocol (Felucca's, over USB MIDI):
- The Install panel of the editor: Get started > Install (it names the firmware version, "Install v1.2"), Commands (Ctrl/Cmd+K) > Install firmware, or open the editor with #flash at the end of the address. It needs Web MIDI with SysEx (Chrome or Edge). Tick "I understand and accept the risk", then Install Matryoshka firmware; Return to official V15 puts M-VAVE's firmware back. Keep the tab open until it says done.
- tools/fm1install.py from a checkout of this repository: python3 tools/fm1install.py web/public/firmware/matryoshka.fwsc, or FM-1015.fwsc from the same folder to return to stock.
Return to stock first if the FM-1 runs anything other than the official V15 or Matryoshka (Felucca, Sloop, M-VAVE Open or another build): Return to official V15, check that it boots, then install Matryoshka (for an FM-1 set up by M-VAVE Official Open, see below). The Install panel says so when it sees such an identity (fm1install.py --info prints it); nothing else is refused, but over Felucca (read the note above first) it installs only after you tick its warning.
Update mode: hold OCT- and OCT+ while switching the FM-1 on, or choose MENU > SYSTEM > UPDATE MODE. An install works from there too, and it is the way in when the firmware does not start. …
Releases
| Version | Name | Released |
|---|---|---|
| v1.6.0 | Matryoshka 1.6.0Latest | 29 October 2026 |
| v1.5.1 | Matryoshka 1.5.1 (web only) | 27 October 2026 |
| v1.5.0 | Matryoshka 1.5.0 | 27 October 2026 |
| v1.4.2 | Matryoshka 1.4.2 | 26 October 2026 |
| v1.4.1 | Matryoshka 1.4.1 | 26 October 2026 |
| v1.4.0 | 1.4.0 | 26 October 2026 |
| v1.3.5 | 1.3.5 | 25 October 2026 |
| v1.3.4 | 1.3.4 | 25 October 2026 |
| v1.3.3 | Matryoshka 1.3.3 | 25 October 2026 |
| v1.3.1 | Matryoshka 1.3.1 | 25 October 2026 |
| v1.3.0 | Matryoshka 1.3.0 | 25 October 2026 |
| v1.2.2 | Matryoshka 1.2.2 | 24 October 2026 |
| v1.2.1 | Matryoshka 1.2.1 | 24 October 2026 |
| v1.2.0 | Matryoshka 1.2.0 | 24 October 2026 |
| v1.1.0 | Matryoshka 1.1.0 | 22 October 2026 |
| v1.0.0 | Matryoshka 1.0.0 | 22 October 2026 |
Credits, license and support
- License
- GPL-3.0