M-VAVE FM-1 (DUELL 1.0): 128 free presets & MIDI CC chart¶
128 free presets to load from the browser, and M-VAVE FM-1 MIDI implementation: 72 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_duell |
| Source | 📘 From the manufacturer's documentation |
| Firmware | duell-1.0 |
| Revision | DUELL 1.0 (alternative firmware by OSCILL/R) |
| Upstream | vendor-doc |
| Driver file | devices/m-vave/fm-1.vendor.fw-duell-1.0.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 · 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 · FM-106 Beta4 · 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¶
128 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-duell-1.0.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_duell: 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 (72)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/fm1_duell/mod_wheel |
1 | 0–127 | continuous | Track | |
/fm1_duell/glide |
5 | 0–127 | continuous | Track | |
/fm1_duell/level |
7 | 0–127 | continuous | Track | |
/fm1_duell/pan |
10 | 0–127 | continuous | Track | |
/fm1_duell/insert_a |
12 | 0–127 | continuous | Track | |
/fm1_duell/insert_b |
13 | 0–127 | continuous | Track | |
/fm1_duell/sub_osc_1_14_17_sub_oscillator |
14 | 0–127 | continuous | Track | |
/fm1_duell/sub_osc_2 |
15 | 0–127 | continuous | Track | |
/fm1_duell/sub_osc_3 |
16 | 0–127 | continuous | Track | |
/fm1_duell/sub_osc_4 |
17 | 0–127 | continuous | Track | |
/fm1_duell/multi_filter_1 |
18 | 0–127 | continuous | Track | |
/fm1_duell/multi_filter_2 |
19 | 0–127 | continuous | Track | |
/fm1_duell/multi_filter_3 |
20 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_1_21_29 |
21 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_2 |
22 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_3 |
23 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_4 |
24 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_5 |
25 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_6 |
26 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_7 |
27 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_8 |
28 | 0–127 | continuous | Track | |
/fm1_duell/twin_filter_9 |
29 | 0–127 | continuous | Track | |
/fm1_duell/lfo1_twin_cutoff |
30 | 0–127 | continuous | Track | |
/fm1_duell/lfo2_twin_cutoff |
31 | 0–127 | continuous | Track | |
/fm1_duell/spread |
34 | 0–127 | continuous | Track | |
/fm1_duell/saturation |
35 | 0–127 | continuous | Track | |
/fm1_duell/insert_c |
36 | 0–127 | continuous | Track | |
/fm1_duell/multi_filter_4 |
41 | 0–127 | continuous | Track | |
/fm1_duell/engine_e1 |
44 | 0–127 | continuous | Track | |
/fm1_duell/engine_e2 |
45 | 0–127 | continuous | Track | |
/fm1_duell/engine_e3 |
46 | 0–127 | continuous | Track | |
/fm1_duell/engine_e4 |
47 | 0–127 | continuous | Track | |
/fm1_duell/engine_e5 |
48 | 0–127 | continuous | Track | |
/fm1_duell/engine_e6 |
49 | 0–127 | continuous | Track | |
/fm1_duell/engine_e7 |
50 | 0–127 | continuous | Track | |
/fm1_duell/engine_e8 |
51 | 0–127 | continuous | Track | |
/fm1_duell/env2_attack |
52 | 0–127 | continuous | Track | |
/fm1_duell/env2_decay |
53 | 0–127 | continuous | Track | |
/fm1_duell/env2_sustain |
54 | 0–127 | continuous | Track | |
/fm1_duell/env2_release |
55 | 0–127 | continuous | Track | |
/fm1_duell/sustain |
64 | 0–127 | switch | Track | |
/fm1_duell/morph_fader |
70 | 0–127 | continuous | Track | |
/fm1_duell/resonance |
71 | 0–127 | continuous | Track | |
/fm1_duell/release |
72 | 0–127 | continuous | Track | |
/fm1_duell/attack |
73 | 0–127 | continuous | Track | |
/fm1_duell/cutoff |
74 | 0–127 | continuous | Track | |
/fm1_duell/decay |
75 | 0–127 | continuous | Track | |
/fm1_duell/lfo_rate |
76 | 0–127 | continuous | Track | |
/fm1_duell/vibrato_depth |
77 | 0–127 | continuous | Track | |
/fm1_duell/vibrato_fade |
78 | 0–127 | continuous | Track | |
/fm1_duell/sustain_79 |
79 | 0–127 | continuous | Track | |
/fm1_duell/chorus_rate_global |
80 | 0–127 | continuous | Track | |
/fm1_duell/chorus_depth_global |
81 | 0–127 | continuous | Track | |
/fm1_duell/delay_time_global |
82 | 0–127 | continuous | Track | |
/fm1_duell/delay_feedback_global |
83 | 0–127 | continuous | Track | |
/fm1_duell/delay_colour_global |
85 | 0–127 | continuous | Track | |
/fm1_duell/delay_mix_global |
86 | 0–127 | continuous | Track | |
/fm1_duell/reverb_size_global |
87 | 0–127 | continuous | Track | |
/fm1_duell/reverb_damp_global |
89 | 0–127 | continuous | Track | |
/fm1_duell/reverb_low_cut_global |
90 | 0–127 | continuous | Track | |
/fm1_duell/reverb_send |
91 | 0–127 | continuous | Track | |
/fm1_duell/delay_send |
92 | 0–127 | continuous | Track | |
/fm1_duell/chorus_send |
93 | 0–127 | continuous | Track | |
/fm1_duell/detune |
94 | 0–127 | continuous | Track | |
/fm1_duell/imix |
95 | 0–127 | continuous | Track | |
/fm1_duell/morph_roll |
102 | 0–127 | continuous | Track | |
/fm1_duell/morph_amount |
103 | 0–127 | continuous | Track | |
/fm1_duell/cycle_envelope_1_114_118 |
114 | 0–127 | continuous | Track | |
/fm1_duell/cycle_envelope_2 |
115 | 0–127 | continuous | Track | |
/fm1_duell/cycle_envelope_3 |
116 | 0–127 | continuous | Track | |
/fm1_duell/cycle_envelope_4 |
117 | 0–127 | continuous | Track | |
/fm1_duell/cycle_envelope_5 |
118 | 0–127 | continuous | Track |
SysEx commands (3)¶
| OSC address | Arguments |
|---|---|
/fm1_duell/program |
program: u7 |
/fm1_duell/system/info |
|
/fm1_duell/system/identify |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /fm1_duell/note/on <note> <velocity>, /fm1_duell/cc/<number> <value>, /fm1_duell/pitchbend <0-16383>, /fm1_duell/program_change <n>.
Limitations¶
DUELL 1.0 by OSCILL/R (GPL-3.0), a instrument firmware for the FM-1. 2 parts; 128-entry CC table (docs/MIDI_MAP_DEFAULTS.csv); CC92 = delay send, CC94 = detune (differs from Felucca); bank select CC0/CC32 + PC. Channels: 2 parts; routing CH1-4: ch1 -> part 1, ch2 -> part 2; SEL -> selected part; LAYER uses part 1's channel. Pitch bend: RPN0 (Felucca). Aftertouch: Felucca. Clock: in AUTO/INT/USB/TRS. MIDI out: Felucca. NRPN: none. SysEx `F0 7D 46 4C`: Felucca editor + raw patch records (editor_patchraw.c); INFO 'FELUCCA DUELL x.y'. SysEx `F0 43`: DX7 .syx parsed only in web editor (web/editor/patchfile.js:90). SysEx `F0 00 32 45 00 00 00 40 7F F7`: vendor update identify query (00 59 11 packed); update protocol kept. Identity: vendor identify FM-1_901; editor INFO 'FELUCCA DUELL x.y'; USB 'DUELL'.
Frequently asked questions¶
Where can I find free presets for the M-VAVE FM-1?
SynthHub has 128 free sounds for the M-VAVE FM-1, shared by 2 creators 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 30 (0–127), named /fm1_duell/lfo1_twin_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 72 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.