M-VAVE FM-1: MIDI CC, NRPN and OSC map¶
The M-VAVE FM-1 as named OSC addresses — 54 CC, 3 SysEx commands — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | M-VAVE FM-1 |
|---|---|
| Vendor | M-VAVE |
| OSC prefix | /fm1 |
| 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 variants of this device: fm-1.vendor.fw-15, fm-1.vendor.fw-16, fm-1.vendor.fw-386dx-1.0.2, fm-1.vendor.fw-amb-1.3, fm-1.vendor.fw-beetle-1.4.25, fm-1.vendor.fw-bunker-1.0.0, fm-1.vendor.fw-bytemania-1.2.0, fm-1.vendor.fw-carnac-0.9.3, fm-1.vendor.fw-chipbox-1.2.4, fm-1.vendor.fw-choralroot-0.26.1, fm-1.vendor.fw-chord-0.3, fm-1.vendor.fw-clipper-1.1-experimental, fm-1.vendor.fw-coralflower-0.5, fm-1.vendor.fw-cs1-2026.10.22, fm-1.vendor.fw-ctl-1.0, fm-1.vendor.fw-cutador-1.2.1, fm-1.vendor.fw-dinghy-0.4, fm-1.vendor.fw-drift-0.8, fm-1.vendor.fw-dub-1.3.0, fm-1.vendor.fw-duell-1.0, fm-1.vendor.fw-emb-1.5.2, fm-1.vendor.fw-etch-1.61, fm-1.vendor.fw-fart-1.1.0, fm-1.vendor.fw-felucca-1.6.1, fm-1.vendor.fw-felucca-salt-0.9-salt14, fm-1.vendor.fw-felucca8-1.6.1-and-sequences, fm-1.vendor.fw-fimba-0.6.1, fm-1.vendor.fw-flyfish-1.0.1-4e5efb8, fm-1.vendor.fw-fm1gm-1.0.2, fm-1.vendor.fw-fmel-1.0, fm-1.vendor.fw-fmini-1.8.0, fm-1.vendor.fw-fomajam-0.1.6, fm-1.vendor.fw-fomni-0.4, fm-1.vendor.fw-frasil-1.0, fm-1.vendor.fw-frodhes-0.9.4, fm-1.vendor.fw-fumi-1.1.0, fm-1.vendor.fw-gammawave-1.0-gw, fm-1.vendor.fw-ghoulbox-2.3.2, fm-1.vendor.fw-golana-1.2, fm-1.vendor.fw-golanadz-0.1.0-beta, fm-1.vendor.fw-grimm-1.0, fm-1.vendor.fw-hera-1.1, fm-1.vendor.fw-hortator-0.23.3, fm-1.vendor.fw-hyp1-1.5.54, fm-1.vendor.fw-jangada-1.0.1, fm-1.vendor.fw-jiant-0.9.9-beta4a-813869d, fm-1.vendor.fw-kawa-0.5, fm-1.vendor.fw-ketch-0.1-beta, fm-1.vendor.fw-loom-0.7, fm-1.vendor.fw-maku-1.0, fm-1.vendor.fw-mc1-1.2.0, fm-1.vendor.fw-melodee-1.4.5, fm-1.vendor.fw-min1-0.2.1, fm-1.vendor.fw-minitone-1.0.2, fm-1.vendor.fw-modelar-0.3, fm-1.vendor.fw-monk-0.9.1, fm-1.vendor.fw-morpheus-1.0.0, fm-1.vendor.fw-mutable-1.0, fm-1.vendor.fw-mycelium-1.0-test, fm-1.vendor.fw-niagara-0.2, fm-1.vendor.fw-nmsfm-0.5, fm-1.vendor.fw-noizdemons-666, fm-1.vendor.fw-obervave-3.0.1, fm-1.vendor.fw-open-14, fm-1.vendor.fw-opn1-2.0.0, fm-1.vendor.fw-orbit-0.7.1, fm-1.vendor.fw-pigeon-0.5.0-beta.1, fm-1.vendor.fw-polly-0.5, fm-1.vendor.fw-purplemonkey-0.11, fm-1.vendor.fw-quest-38, fm-1.vendor.fw-rainbow-1.1.5-rb, fm-1.vendor.fw-shineon-3.0.1, fm-1.vendor.fw-sid-0.1, fm-1.vendor.fw-sid1-1.0.0, fm-1.vendor.fw-sidou-0.3.1, fm-1.vendor.fw-skiff-1.4, fm-1.vendor.fw-sloop-2.8.1, fm-1.vendor.fw-sloop-alg-alg05-test, fm-1.vendor.fw-sloop-banks-2.5-b28-test, fm-1.vendor.fw-sloop-floyd-2.4, fm-1.vendor.fw-sloopdx-4.0, fm-1.vendor.fw-tessera-2.0.1, fm-1.vendor.fw-tonitor-2026.10.23, fm-1.vendor.fw-tribe-0.3-beta, fm-1.vendor.fw-tuna-1.0-fbc56d3, fm-1.vendor.fw-unholy-0.2.3, fm-1.vendor.fw-vector37-0.3.2, fm-1.vendor.fw-waveloop-1.0.5.2-midi23, fm-1.vendor.fw-winampfm-0.12, fm-1.vendor.fw-x0x-1.1.0, fm-1.vendor.fw-x0xrmx-1.1.0, fm-1.vendor.fw-zen-1.2, fm-1.vendor.fw-zp12-2.5.
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: 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/bank_select_msb |
0 | 0–127 | continuous | Track | |
/fm1/mod_wheel_dco_lfo_depth |
1 | 0–127 | continuous | Track | |
/fm1/volume_vca_level |
7 | 0–127 | continuous | Track | |
/fm1/sub_level |
9 | 0–127 | continuous | Track | |
/fm1/vca_level |
11 | 0–127 | continuous | Track | |
/fm1/hpf_mode |
12 | 0–127 | continuous | Track | |
/fm1/noise_level |
13 | 0–127 | continuous | Track | |
/fm1/bank_select_lsb |
32 | 0–127 | continuous | Track | |
/fm1/sustain |
64 | 0–127 | switch | Track | |
/fm1/env_sustain |
70 | 0–127 | continuous | Track | |
/fm1/vcf_resonance |
71 | 0–127 | continuous | Track | |
/fm1/env_release |
72 | 0–127 | continuous | Track | |
/fm1/env_attack |
73 | 0–127 | continuous | Track | |
/fm1/vcf_cutoff |
74 | 0–127 | continuous | Track | |
/fm1/env_decay |
75 | 0–127 | continuous | Track | |
/fm1/vcf_env_mod |
76 | 0–127 | continuous | Track | |
/fm1/vcf_lfo_mod |
77 | 0–127 | continuous | Track | |
/fm1/vcf_key_track |
78 | 0–127 | continuous | Track | |
/fm1/dco_pwm_depth |
79 | 0–127 | continuous | Track | |
/fm1/lfo_rate |
80 | 0–127 | continuous | Track | |
/fm1/lfo_delay |
81 | 0–127 | continuous | Track | |
/fm1/arp_rate |
82 | 0–127 | continuous | Track | |
/fm1/fx_1_type |
83 | 0–127 | continuous | Track | |
/fm1/fx_1_mix |
84 | 0–127 | continuous | Track | |
/fm1/fx_1_rate |
85 | 0–127 | continuous | Track | |
/fm1/fx_1_character |
86 | 0–127 | continuous | Track | |
/fm1/bender_dco |
87 | 0–127 | continuous | Track | |
/fm1/bender_vcf |
88 | 0–127 | continuous | Track | |
/fm1/arp_mode |
89 | 0–127 | continuous | Track | |
/fm1/arp_range |
90 | 0–127 | continuous | Track | |
/fm1/dco_pulse_on |
91 | 0–127 | continuous | Track | |
/fm1/dco_saw_on |
92 | 0–127 | continuous | Track | |
/fm1/chorus_mode |
93 | 0–127 | continuous | Track | |
/fm1/dco_sub_on |
94 | 0–127 | continuous | Track | |
/fm1/dco_range |
95 | 0–127 | continuous | Track | |
/fm1/pwm_mode |
96 | 0–127 | continuous | Track | |
/fm1/env_polarity |
97 | 0–127 | continuous | Track | |
/fm1/vca_mode |
98 | 0–127 | continuous | Track | |
/fm1/step_accent |
99 | 0–127 | continuous | Track | |
/fm1/step_slide |
100 | 0–127 | continuous | Track | |
/fm1/step_ratchet |
101 | 0–8 | continuous | Track | |
/fm1/seq_tempo |
102 | 0–127 | continuous | Track | |
/fm1/seq_step_division |
103 | 0–9 | continuous | Track | |
/fm1/seq_pattern_length |
104 | 0–127 | continuous | Track | |
/fm1/seq_gate_length |
105 | 0–127 | continuous | Track | |
/fm1/seq_swing |
106 | 0–100 | continuous | Track | |
/fm1/transport |
107 | 0–3 | continuous | Track | |
/fm1/record_arm |
108 | 0–127 | continuous | Track | |
/fm1/clear_all_p_locks |
109 | 64–127 | continuous | Track | |
/fm1/edit_cursor_step |
110 | 0–127 | continuous | Track | |
/fm1/edit_cursor_pitch_row |
111 | 1–127 | continuous | Track | |
/fm1/clear_cursor_step |
112 | 64–127 | continuous | Track | |
/fm1/sync_mode |
113 | 0–2 | continuous | Track | |
/fm1/debug_telemetry_query |
119 | 0–127 | continuous | Track |
SysEx commands (3)¶
| OSC address | Arguments |
|---|---|
/fm1/program |
program: u7 |
/fm1/system/info |
|
/fm1/system/identify |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /fm1/note/on <note> <velocity>, /fm1/cc/<number> <value>, /fm1/pitchbend <0-16383>, /fm1/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).
Try it in your browser
Play a virtual FM-1 with any of its community firmwares: M-VAVE FM-1.
Shared sounds¶
192 made on this device by SynthHub users, under CC BY-SA 4.0: listen and load them into it from the browser.
- Nangs LFO Pulse — sound
- Less I Know Key — sound
- Borderline Keys (Psychwave_Bank) — sound
- Breathe 90s Pno — sound
- Let It Bloom — sound
- Past Life Drone (Psychwave_Bank) — sound
- Disciples Brass (Psychwave_Bank) — sound
- Mind Mischief (Psychwave_Bank) — sound
- Elephant Grit (Psychwave_Bank) — sound
- Less I Know Bas (Psychwave_Bank) — sound
- Nangs Sub Thump — sound
- Breathe 303 Bas (Psychwave_Bank) — sound
- Borderline Sub (Psychwave_Bank) — sound
- Lost Yest Bass — sound
- Currents LowEnd (Psychwave_Bank) — sound
- Might Be Time B — sound
- Apocalypse Swl (Psychwave_Bank) — sound
- Endors Toi Lead (Psychwave_Bank) — sound
- Solitude Flute — sound
- Alter Ego Lead — sound
- Lucidity Solo (Psychwave_Bank) — sound
- Feels Like Lead — sound
- Love/Paranoia — sound
- Posthumous Lead — sound
- Tape Warble Key — sound
- Phased Sky Pad — sound
- Glimmer Bell — sound
- Sundown Organ (Psychwave_Bank) — sound
- Innerspk Organ (Psychwave_Bank) — sound
- Laser Beam Zap — sound
- Reso Noise Rise (Psychwave_Bank) — sound
- Currents Drift — sound
- Nightcall Bass — sound
- Miami 84 Slap — sound
- Turbo Drive Bas — sound
- Reese Sub Bass — sound
- Neon Grid Bass — sound
- Cyber Highway B — sound
- Midnight Punch — sound
- Darkwave Cold B — sound
- Nightcall Arp — sound
- Days Of Thunder — sound
- Sunset Blvd Key — sound
- Timecop Chords — sound
- VHS Mem Pluck — sound
- Starcadian Funk — sound
- Arcade 84 Arp — sound
- Cyber LaserHarp — sound
- TheMidnight Pad — sound
- BladeRunner Brs — sound
- Dreamwave Silk — sound
- Endless Summer — sound
- Neon Horizon Sw — sound
- Retroland Str — sound
- Cyberpunk Brass — sound
- Analog Sunset — sound
- Turbo Lead (Psychwave_Bank) — sound
- Sunset Cruiser — sound
- Miami Vice Solo — sound
- Overdrive Glide — sound
- Shuttle Sweep — sound
- VHS Tape Drift — sound
- Dark Alley Dron — sound
- 198X Cyber Hit — sound
- Miami Nights — sound
- Outrun Poly — sound
- Cyberpunk Stab — sound
- Sunset Highway — sound
- Lazerhawk Hit — sound
- Turbo Drive — sound
- Nightcall Keys — sound
- Neon City 1984 — sound
- VHS Tape Pad — sound
- Blade Runner — sound
- Dreamwave Air — sound
- Palm Tree Glow — sound
- Midnight Cruise — sound
- Distant Arcade — sound
- Cassette Warmth — sound
- Infinite Sunset — sound
- Running 16ths — sound
- Miami Bassline — sound
- Darksynth Growl — sound
- Slap Synth Bass — sound
- Sub Pumper — sound
- FM Digital Bass — sound
- Italo Disco Bas — sound
- Overdrive 80s — sound
- Neon Arp — sound
- Laser Runner — sound
- Kavinsky Pluck — sound
- Grid Climber — sound
- Midnight Pulse — sound
- Cyber Runner — sound
- Starlight Arp — sound
- Clockwork 84 — sound
- Miami Vice Horn — sound
- Power Synthbras — sound
- Terminator Bras — sound
- Synthwave Fanfr — sound
- Dark Knight Hrn — sound
- Top Gun Brass — sound
- Mellow FrenchHn — sound
- Stadium Brass — sound
- Laser Solo Lead — sound
- Turbo Lead (Synthwave_Bank) — sound
- Chorused Glide — sound
- Cyber Whistle — sound
- Miami Sunset Ld — sound
- Hardwired Solo — sound
- Vapor Solo — sound
- Outrun Hero — sound
- Laser Zap Down — sound
- Laser Zap Up — sound
- Whiteout Riser — sound
- Sub Drop Bomb — sound
- Alien Radar — sound
- Arcade Explosion — sound
- Tape Stop Dive — sound
- Cyberspace Wind — sound
- Miami Ballad Key — sound
- DX Warm EPiano — sound
- Crystal Tines — sound
- Neon Harpsichd — sound
- Drive Movie Org — sound
- Careless Keys — sound
- Analog Chime — sound
- Sunset Outro — sound
- Less I Know Keys — sound
- Let It Pad — sound
- Nangs Wobble — sound
- Eventually Hit — sound
- Borderline Keys (Tame_Impala_Bank) — sound
- Breathe Piano — sound
- Past Life Drone (Tame_Impala_Bank) — sound
- Disciples Brass (Tame_Impala_Bank) — sound
- Slow Rush Pad — sound
- Lonerism String — sound
- Alter Ego Swirl — sound
- Yes Im Changing — sound
- Posthumous Air — sound
- Mind Mischief (Tame_Impala_Bank) — sound
- Apocalypse Swl (Tame_Impala_Bank) — sound
- One More Hour — sound
- Less I Know Bas (Tame_Impala_Bank) — sound
- Lost Yesterday — sound
- Is It True Bas — sound
- Elephant Grit (Tame_Impala_Bank) — sound
- Breathe 303 Bas (Tame_Impala_Bank) — sound
- Borderline Sub (Tame_Impala_Bank) — sound
- Nangs Fat Bass — sound
- Currents LowEnd (Tame_Impala_Bank) — sound
- Let It Arp — sound
- Glimmer Pluck — sound
- Why Wont Pluck — sound
- Music To Walk — sound
- Beverly Laurel — sound
- Might Be Time — sound
- Runway Pluck — sound
- Expectation Stb — sound
- Feels Like Keys — sound
- On Track Rhodes — sound
- Reality Motion — sound
- Sundown Organ (Tame_Impala_Bank) — sound
- Tape Wurlitzer — sound
- Detuned Psych — sound
- Kevins EPiano — sound
- Innerspk Organ (Tame_Impala_Bank) — sound
- Mind Lead — sound
- Lucidity Solo (Tame_Impala_Bank) — sound
- Endors Toi Lead (Tame_Impala_Bank) — sound
- Solitude Lead — sound
- Alter Ego Saw — sound
- Cause Im A Man — sound
- Powerlines Lead — sound
- Tomorrows Dust — sound
- Phased Sweep — sound
- Osc Laser Zap — sound
- Tape Flutter FX — sound
- Reso Noise Rise (Tame_Impala_Bank) — sound
- Psych UFO Swp — sound
- Submarine Drone — sound
- Echo Chamber FX — sound
- Siren Filter — sound
- New Person Dark — sound
- Suns Coming Up — sound
- Keep On Lying — sound
- Patience Dream — sound
- Instant Destiny — sound
- Borderline Intro — sound
- Silver Lake Pad — sound
- Currents Outro — sound