ChoralRoot FM-1
Telepathic chord machine for the MVave FM-1
- Custom firmware
- Beta
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
ChoralRoot 0.27 brings FX routing: a Routing page in the FX layer that draws the chorus, the delay, the reverb and the master filter as boxes on a wire, where you reorder them and choose between Parallel, the three send buses ChoralRoot always had, and Chain, one path through the four blocks in the order on the screen, the original firmware's way. In Parallel the filter can now sit before the effects, so a high cut keeps the fizz out of the reverb and a low cut the bass out of the delay. The web device manager finds an FM-1 that the computer still calls "FM-1". Parallel with the filter after the effects, where every FM-1 starts, is 0.26.1's sound bit for bit. 0.27 replaces 0.26.1 as the web installer's default; updating keeps your settings, sounds, loops and favorites, and going back to 0.26.1 is possible at any time.
FX routing (new in 0.27)
Hold FX for the FX layer and turn SELECT to the last page, Routing.
- The picture. The effects are boxes on a wire from
intoout: Chorus blue, Delay orange, Reverb yellow, the master Filter white (hollow while the filter is Off). In Parallel the three effects stand side by side betweeninand a sum, the Filter before or after them; in Chain the four are in a row, each feeding the next. - Moving a block. Five black keys are shortcuts on this page: C#4 Chorus, D#4 Delay, F#4 Reverb, G#4 Filter. Hold one and its box lifts above the row; turn KNOB 1 while you hold it, one click one place, the other boxes sliding over to make room; let go and it lands. Every other key plays as usual, so you hear the effects while you route them.
- Parallel or Chain. A#4 (a tap) or KNOB 2 switches the mode; the small line at the top says which.
- Parallel is ChoralRoot as it always was: three buses side by side, each fed by the parts' sends and added back into the mix. The effects' order is kept but not heard here. The Filter has two places: hold G#4 and turn KNOB 1 anticlockwise to put it before the buses (the effects hear the filtered signal, the dry sound is filtered too), clockwise to put it back after them, on the whole output, as before.
- Chain is one path: the dry mix goes into the first block, each effect adds its sound to everything before it and passes it all on, and the filter filters everything that reached it. Chorus into Delay into Reverb makes the echoes shimmer and then washes them out; Reverb first gives a delay that repeats a whole hall. In Chain each effect's amount is the chord part's send into it (the Sends page); the bass part's own sends rest, the bass goes through the chain with the chords. The drive stays in each part's sound, before everything, in both modes.
- Kept with the instrument. Mode and order are set once, like the other effect settings, and kept by SAVE held.
- The same sound unless you change it. Parallel with the filter after the effects, where every FM-1 starts, is exactly 0.26.1: not one sample differs. On the FM-1 the reverb still runs on the second core in both modes.
- The manual's Routing section has the details. GitHub issue 21 asked for this; the design is FX.md "The routing".
The device manager finds an FM-1 called "FM-1" (new in 0.27)
- On a Mac the web device manager could say "FM-1 not found" while the installer saw the FM-1 fine (GitHub issue 32). ChoralRoot names its USB port "ChoralRoot FM-1", but macOS keeps the name it first saw for a USB device, so an FM-1 updated from the stock firmware stays "FM-1" in the computer's MIDI list. The manager now takes either name and checks, as it always did, that the port answers as ChoralRoot before it reads anything.
Installing
- The web installer's default is 0.27: press Install. Options > Version reads
ChoralRoot 0.27. - From 0.26.1 or 0.26 nothing needs doing: your sounds, loops, favorites and settings are all there, and the effects sound as they did until you open the Routing page.
- From 0.25.1 or older: install 0.27 as you would 0.26.1; 0.25.1.md "Installing" says what the update from those changes (your FM-1 is moved to the FM-1 chord keys once).
- A Single core package for FM-1s that have trouble with Dual Core: the web installer's Advanced > Hardware
fallback. Options > Version then reads
ChoralRoot 0.27 1-core. The routing works the same on one core. - Signed builds: as 0.26.1, GitHub built these packages from the tag's source and signed them;
0.26.1.md "Checking a package" says how to check one (
choralroot-0.27.fwsc). - The SMK-37: the community test build stays
0.26-smk37(SMK37.md); the routing page is not on it yet.
Going back to 0.26.1
The installer offers 0.26.1 under Other versions.
- Your settings, sounds, loops and favorites stay as they are: 0.27 stores everything exactly as 0.26.1 does. The routing's mode and order are kept in the same record under two new tags that 0.26.1 skips, so it comes up in Parallel with the filter after the effects, its own sound.
- One exception: if you had moved the filter before the effects AND set every one of the filter's four cells off its default, 0.26.1 takes the effects' global settings (the reverb's, delay's and chorus's own parameters and the bass part's sends) back to their defaults once; your sounds, loops and the chord part's sends are untouched.
- The Routing page is not there; the FX layer has eight pages again.
ChoralRoot 0.27 for the M-VAVE FM-1 (identity FM-1_920).
Install from the browser at https://quixotic7.github.io/ChoralRootFM1/ (Chrome or Edge, the FM-1 connected by USB), or with the command-line installer: python3 tools/fm1_install.py choralroot-0.27.fwsc.
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?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did ChoralRoot FM-1 v0.27 work on your M-VAVE FM-1?
No reports yet for v0.27.
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"):
Try it in the browser first: (the same firmware, with sound, no FM-1 needed).
From the browser: open the web installer at in Chrome or Edge, connect the FM-1 and press Install. The button names the version it writes (the newest), and the page lists what is new in it beside the button. "Other versions" under the button offers the older ones from 0.16 on, each with its notes and a sentence on what going back means (0.15 and older are only on Releases: no protected update path). Beta releases (0.22-beta1) are opt-in: tick "Show beta releases" under the versions to see them (the page remembers it in that browser). A beta may have bugs and the latest stable release can replace it at any time; Install's default is always the newest stable release, also when the FM-1 runs a beta. Nothing is installed on the computer: the page talks to the FM-1 over Web MIDI, and the firmware files come from the site itself (firmware/, with their SHA-256, which the page checks before it writes). Do not unplug while it writes; an interrupted install is resumed by pressing Install again (after a power loss too, from 0.16 on: see "If an install was interrupted"). An update keeps your saved sounds, loops and settings. Afterwards the FM-1 restarts and reports the identity FM-1920. Before installing, the page saves a backup of what is stored on the FM-1 (settings, user sounds, loops, FM6 patches) to a file, and after installing over …
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Install"):
Try it in the browser first: (the same firmware, with sound, no FM-1 needed).
From the browser: open the web installer at in Chrome or Edge, connect the FM-1 and press Install. The button names the version it writes (the newest), and the page lists what is new in it beside the button. "Other versions" under the button offers the older ones from 0.16 on, each with its notes and a sentence on what going back means (0.15 and older are only on Releases: no protected update path). Beta releases (0.22-beta1) are opt-in: tick "Show beta releases" under the versions to see them (the page remembers it in that browser). A beta may have bugs and the latest stable release can replace it at any time; Install's default is always the newest stable release, also when the FM-1 runs a beta. Nothing is installed on the computer: the page talks to the FM-1 over Web MIDI, and the firmware files come from the site itself (firmware/, with their SHA-256, which the page checks before it writes). Do not unplug while it writes; an interrupted install is resumed by pressing Install again (after a power loss too, from 0.16 on: see "If an install was interrupted"). An update keeps your saved sounds, loops and settings. Afterwards the FM-1 restarts and reports the identity FM-1920. Before installing, the page saves a backup of what is stored on the FM-1 (settings, user sounds, loops, FM6 patches) to a file, and after installing over …
Releases
| Version | Name | Released |
|---|---|---|
| v0.27-smk37 | ChoralRoot 0.27-smk37 for the SMK-37 (community test)Pre-release | 26 October 2026 |
| v0.27 | ChoralRoot 0.27Latest | 26 October 2026 |
| v0.26.1 | ChoralRoot 0.26.1 | 20 October 2026 |
| v0.26-smk37 | ChoralRoot 0.26-smk37 for the SMK-37 (community test)Pre-release | 20 October 2026 |
| v0.26 | ChoralRoot 0.26 | 20 October 2026 |
| v0.25.1 | ChoralRoot 0.25.1 | 17 October 2026 |
| v0.25-smk37 | ChoralRoot 0.25-smk37 for the SMK-37 (community test)Pre-release | 17 October 2026 |
| v0.25 | ChoralRoot 0.25 | 17 October 2026 |
| v0.24-beta3-smk37.1 | ChoralRoot 0.24-beta3-smk37.1 for the SMK-37 (community test)Pre-release | 17 October 2026 |
| v0.24 | ChoralRoot 0.24 | 17 October 2026 |
| v0.24-beta3-smk37 | ChoralRoot 0.24-beta3-smk37 for the SMK-37 (community test)Pre-release | 16 October 2026 |
| v0.24-beta3 | ChoralRoot 0.24-beta3Pre-release | 16 October 2026 |
| v0.24-beta2-smk37 | ChoralRoot 0.24-beta2-smk37 for the SMK-37 (community test)Pre-release | 16 October 2026 |
| v0.24-beta2 | ChoralRoot 0.24-beta2Pre-release | 16 October 2026 |
| v0.24-beta1 | ChoralRoot 0.24-beta1Pre-release | 16 October 2026 |
| v0.23 | ChoralRoot 0.23 | 16 October 2026 |
| v0.22-beta4 | ChoralRoot 0.22-beta4Pre-release | 16 October 2026 |
| v0.22 | ChoralRoot 0.22 | 16 October 2026 |
| v0.22-beta3 | ChoralRoot 0.22-beta3Pre-release | 15 October 2026 |
| v0.22-beta2 | ChoralRoot 0.22-beta2Pre-release | 15 October 2026 |
| v0.22-beta1 | ChoralRoot 0.22-beta1Pre-release | 15 October 2026 |
| v0.21 | ChoralRoot 0.21 | 13 October 2026 |
| v0.20 | ChoralRoot 0.20 | 13 October 2026 |
| v0.19 | ChoralRoot 0.19 | 12 October 2026 |
| v0.18 | ChoralRoot 0.18Pre-release | 12 October 2026 |
| v0.17 | ChoralRoot 0.17Pre-release | 11 October 2026 |
| v0.16 | ChoralRoot 0.16Pre-release | 11 October 2026 |
| v0.15 | ChoralRoot 0.15Pre-release | 10 October 2026 |
| v0.14 | ChoralRoot 0.14Pre-release | 10 October 2026 |
| v0.13 | ChoralRoot 0.13Pre-release | 7 October 2026 |
| v0.12 | ChoralRoot 0.12Pre-release | 7 October 2026 |
| v0.11 | ChoralRoot 0.11Pre-release | 7 October 2026 |
Credits, license and support
- License
- GPL-3.0