M-VAVE FM-1 (FM-106 Beta4): 192 free presets & MIDI CC chart¶
192 free presets to load from the browser, and M-VAVE FM-1 MIDI implementation: 54 CC, 3 SysEx commands, each named, for Claude (MCP), SuperCollider or any OSC app.
| Device | M-VAVE FM-1 |
|---|---|
| Vendor | M-VAVE |
| OSC prefix | /fm1_fm106 |
| Source | 📘 From the manufacturer's documentation |
| Firmware | fm106-beta4 |
| Revision | FM-106 Beta4 (alternative firmware by PatttF) |
| Upstream | vendor-doc |
| Driver file | devices/m-vave/fm-1.vendor.fw-fm106-beta4.json |
Not tested on the device yet
This driver comes from documentation or community data and has not been checked on real hardware. If you own one, a quick test and a pull request promoting it helps everyone — see CONTRIBUTING.
Other versions of the M-VAVE FM-1 (93)
stock firmware V15 · stock firmware V16 · 386DX 1.0.2 · AMB-1 1.3 · BEETLE 1.4.25 · Bunker Evolved 1.0.0 · Bytemania 1.2.0 · Carnac OS 0.9.3 · Chipbox 1.2.4 · ChoralRoot 0.26.1 · fm1-chord 0.3 · Clipper 1.1-experimental · CoralFlower 0.5 · CS-1 2026.10.22 · CTL-1 1.0 · Cut-A-Dor 1.2.1 · Dinghy 0.4 · DRIFT 0.8 · DUB-1 1.3.0 · DUELL 1.0 · Evander's Music Box 1.5.2 · ETCH 1.61 · Fart Machine One 1.1.0 · Felucca 1.6.1 · Felucca [Salt] 0.9-salt14 · Felucca 8 Patterns 1.6.1_and_sequences · FiMba-1 0.6.1 · Flyfish 1.0.1-4e5efb8 · FM1-GM 1.0.2 · FMEL-1 1.0 · FMini-1 1.8.0 · FOMAJAM 0.1.6 · FoMni 0.4 · FRASIL 1.0 · Frodhes 0.9.4 · FuMi-1 1.1.0 · Pocket GammaWave 1.0-GW · GHOULBOX 2.3.2 · Golana 1.2 · Golana DZ Edition 0.1.0-beta · GR!MM 1.0 · HERA 1.1 · Hortator 0.23.3 · HYP-1 1.5.54 · Jangada 1.0.1 · JIANT FM 0.9.9-beta4a-813869d · KAWA 0.5 · Ketch 0.1-beta · LOOM-8 0.7 · MAKU 1.0 · MC-1 1.2.0 · Melodee 1.4.5 · MIN-1 0.2.1 · Mini-Tone 1.0.2 · MODELAR 0.3 · MONK-1 0.9.1 · MORPHEUS 1.0.0 · Mutable Dreams 1.0 · MYCELIUM 1.0-test · Niagara Drift 0.2 · No Man Sky FM 0.5 · NOIZ DEMONS 666 · OberVave 3.0.1 · FM1 Open V14 · OPN-1 2.0.0 · ORBIT 0.7.1 · PIGEON 0.5.0-beta.1 · Polly 0.5 · PurpleMonkey 0.11 · FM1 Quest 38 · Rainbow Mode 1.1.5-rb · Shine On 3.0.1 · FM-1 SID 0.1 · SID-1 1.0.0 · SIDOU 0.3.1 · Skiff 1.4 · SLOOP 2.8.1 · SLOOP ALG ALG05-TEST · SLOOP DX7 Banks 2.5-b28-test · SLOOP Floyd FM 2.4 · sloopDX 4.0 · Tessera 2.0.1 · Tonitor 2026.10.23 · TRIBE 0.3-beta · Tuna 1.0-fbc56d3 · Unholy Union 0.2.3 · Vector37 0.3.2 · WaveLoop FM-1 1.0.5.2-midi23 · winampFM Synth 0.12 · X0X 1.1.0 · X0X-RMX 1.1.0 · ZEN-1 1.2 · zp12 2.5
Try it in your browser
Play a virtual FM-1 with any of its community firmwares: M-VAVE FM-1.
Sounds for it¶
192 sounds shared for it, each with its author's credit and licence: open one to listen and load it into your device from the browser.
How do you control it?¶
Find the MIDI ports, then start the bridge with this driver:
osc-bridge detect # prints the ready-to-run line for what is plugged in
osc-bridge run --device devices/m-vave/fm-1.vendor.fw-fm106-beta4.json --out-port <N> --in-port <M>
Then send OSC to 127.0.0.1:7777, for example:
From Claude or any MCP client, the osc-bridge mcp server exposes this driver as fm1_fm106: ask “what can the M-VAVE FM-1 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (54)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/fm1_fm106/bank_select_msb |
0 | 0–127 | continuous | Track | |
/fm1_fm106/mod_wheel_dco_lfo_depth |
1 | 0–127 | continuous | Track | |
/fm1_fm106/volume_vca_level |
7 | 0–127 | continuous | Track | |
/fm1_fm106/sub_level |
9 | 0–127 | continuous | Track | |
/fm1_fm106/vca_level |
11 | 0–127 | continuous | Track | |
/fm1_fm106/hpf_mode |
12 | 0–127 | continuous | Track | |
/fm1_fm106/noise_level |
13 | 0–127 | continuous | Track | |
/fm1_fm106/bank_select_lsb |
32 | 0–127 | continuous | Track | |
/fm1_fm106/sustain |
64 | 0–127 | switch | Track | |
/fm1_fm106/env_sustain |
70 | 0–127 | continuous | Track | |
/fm1_fm106/vcf_resonance |
71 | 0–127 | continuous | Track | |
/fm1_fm106/env_release |
72 | 0–127 | continuous | Track | |
/fm1_fm106/env_attack |
73 | 0–127 | continuous | Track | |
/fm1_fm106/vcf_cutoff |
74 | 0–127 | continuous | Track | |
/fm1_fm106/env_decay |
75 | 0–127 | continuous | Track | |
/fm1_fm106/vcf_env_mod |
76 | 0–127 | continuous | Track | |
/fm1_fm106/vcf_lfo_mod |
77 | 0–127 | continuous | Track | |
/fm1_fm106/vcf_key_track |
78 | 0–127 | continuous | Track | |
/fm1_fm106/dco_pwm_depth |
79 | 0–127 | continuous | Track | |
/fm1_fm106/lfo_rate |
80 | 0–127 | continuous | Track | |
/fm1_fm106/lfo_delay |
81 | 0–127 | continuous | Track | |
/fm1_fm106/arp_rate |
82 | 0–127 | continuous | Track | |
/fm1_fm106/fx_1_type |
83 | 0–127 | continuous | Track | |
/fm1_fm106/fx_1_mix |
84 | 0–127 | continuous | Track | |
/fm1_fm106/fx_1_rate |
85 | 0–127 | continuous | Track | |
/fm1_fm106/fx_1_character |
86 | 0–127 | continuous | Track | |
/fm1_fm106/bender_dco |
87 | 0–127 | continuous | Track | |
/fm1_fm106/bender_vcf |
88 | 0–127 | continuous | Track | |
/fm1_fm106/arp_mode |
89 | 0–127 | continuous | Track | |
/fm1_fm106/arp_range |
90 | 0–127 | continuous | Track | |
/fm1_fm106/dco_pulse_on |
91 | 0–127 | continuous | Track | |
/fm1_fm106/dco_saw_on |
92 | 0–127 | continuous | Track | |
/fm1_fm106/chorus_mode |
93 | 0–127 | continuous | Track | |
/fm1_fm106/dco_sub_on |
94 | 0–127 | continuous | Track | |
/fm1_fm106/dco_range |
95 | 0–127 | continuous | Track | |
/fm1_fm106/pwm_mode |
96 | 0–127 | continuous | Track | |
/fm1_fm106/env_polarity |
97 | 0–127 | continuous | Track | |
/fm1_fm106/vca_mode |
98 | 0–127 | continuous | Track | |
/fm1_fm106/step_accent |
99 | 0–127 | continuous | Track | |
/fm1_fm106/step_slide |
100 | 0–127 | continuous | Track | |
/fm1_fm106/step_ratchet |
101 | 0–8 | continuous | Track | |
/fm1_fm106/seq_tempo |
102 | 0–127 | continuous | Track | |
/fm1_fm106/seq_step_division |
103 | 0–9 | continuous | Track | |
/fm1_fm106/seq_pattern_length |
104 | 0–127 | continuous | Track | |
/fm1_fm106/seq_gate_length |
105 | 0–127 | continuous | Track | |
/fm1_fm106/seq_swing |
106 | 0–100 | continuous | Track | |
/fm1_fm106/transport |
107 | 0–3 | continuous | Track | |
/fm1_fm106/record_arm |
108 | 0–127 | continuous | Track | |
/fm1_fm106/clear_all_p_locks |
109 | 64–127 | continuous | Track | |
/fm1_fm106/edit_cursor_step |
110 | 0–127 | continuous | Track | |
/fm1_fm106/edit_cursor_pitch_row |
111 | 1–127 | continuous | Track | |
/fm1_fm106/clear_cursor_step |
112 | 64–127 | continuous | Track | |
/fm1_fm106/sync_mode |
113 | 0–2 | continuous | Track | |
/fm1_fm106/debug_telemetry_query |
119 | 0–127 | continuous | Track |
SysEx commands (3)¶
| OSC address | Arguments |
|---|---|
/fm1_fm106/program |
program: u7 |
/fm1_fm106/system/info |
|
/fm1_fm106/system/identify |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /fm1_fm106/note/on <note> <velocity>, /fm1_fm106/cc/<number> <value>, /fm1_fm106/pitchbend <0-16383>, /fm1_fm106/program_change <n>.
Limitations¶
FM-106 Beta4 by PatttF (GPL-3.0), a instrument firmware for the FM-1. real firmware in firmware/src/ (src/ is an older copy); Roland Juno-106 SysEx subset (F0 41 3x); no CC120/123, no CC10/91. Channels: one MIDI IN channel: 0 = All/omni (default) or 1-16; separate MIDI OUT channel (default 1); USB and TRS MIDI IN. Pitch bend: 14-bit pitch bend; depth via bender DCO/VCF params (CC87/88); no RPN. Aftertouch: none. Clock: SYNC mode (CC113 / menu): slave follows F8 and FA/FB/FC; master sends F8/FA/FB/FC; off ignores. MIDI out: USB: every sound parameter change as its CC (g_param_cc table) on MIDI OUT channel, seq params CC102-106, transport CC107, seq notes, clock when master; Juno-106 APR patch dumps. NRPN: none. SysEx `F0 pack7(00 59 cmd len24 body chk) F7`: M-UPGRADE vendor update protocol (installers, hub): cmd 0x11 handshake answers the package identity; F0 22 24 35 7F F7 starts the pulled update. SysEx `F0 22 24 35 7D F7`: soft key: reboot into the bootloader. SysEx `F0 41`: Roland Juno-106 style: 32 IPR param (ctrl 0x00-0x0F + switches), 31 APR manual audition, 30 APR store to slot, 33 rename, 34 dump request -> APR reply, 35 commit to flash (ack), 36 reset user presets (ack), 37 patch/bank select, 39 battery query; channel nibble not checked. SysEx `F0 7D 46 4C`: absent: no Felucca editor protocol, no INFO reply. SysEx `F0 43`: absent: no raw DX7 SysEx parser. Identity: vendor identify FM-1_906 (tools/build.py:50; platform.c default FM-1_907 overridden), rescue FM-1_000; no editor INFO; USB product "FM-106" (usb.c:278).
Frequently asked questions¶
Where can I find free presets for the M-VAVE FM-1?
SynthHub has 192 free sounds for the M-VAVE FM-1, shared by 1 creator with their credit and licence. Open one and load it into the synth from the browser (Chrome, Edge, Opera or Firefox), with nothing to install.
Which MIDI CC controls the filter cutoff on the M-VAVE FM-1?
CC 74 (0–127), named /fm1_fm106/vcf_cutoff in SynthHub's map.
How many parameters of the M-VAVE FM-1 can be controlled over MIDI?
SynthHub's map of the M-VAVE FM-1 lists 54 MIDI CC parameters, each with its number, range and a readable name; the full chart is on this page.
Can an AI agent like Claude control the M-VAVE FM-1?
Yes: SynthHub's hosted MCP server knows the M-VAVE FM-1's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.