PreenFM2 (PreenFM3) MIDI CC chart, NRPN and OSC map¶
The PreenFM2 (PreenFM3) MIDI implementation: 76 CC, 211 NRPN, each named, for Claude (MCP), SuperCollider or any OSC app.
| Device | PreenFM2 (PreenFM3) |
|---|---|
| Vendor | PreenFM |
| OSC prefix | /preenfm2_preenfm3 |
| Source | π¦ Derived from MIDI Guide (community CC/NRPN data) |
| Firmware | unknown |
| Revision | per pencilresearch canonical CSV |
| Upstream | pencilresearch |
| Data licence | CC-BY-SA-4.0 β MIDI Guide (https://midi.guide) by Pencil Research and contributors |
| Driver file | devices/preenfm/preenfm2_preenfm3.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.
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/preenfm/preenfm2_preenfm3.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 preenfm2_preenfm3: ask βwhat can the PreenFM2 (PreenFM3) do?β and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (223)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/preenfm2_preenfm3/midi/bank_select |
0 | 0β3 | continuous | MIDI | |
/preenfm2_preenfm3/midi/bank_select_lsb |
32 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/mod_wheel |
1 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/hold_pedal |
64 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/all_sounds_off |
120 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/all_notes_off |
123 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/omni_on |
124 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/omni_off |
125 | 0β127 | continuous | MIDI | |
/preenfm2_preenfm3/midi/parameter_flush |
127 / 127 | 0β16383 | continuous | MIDI | |
/preenfm2_preenfm3/engine/algorithm_number |
16 | 0 / 0 | 0β127 | continuous | Engine |
/preenfm2_preenfm3/engine/velocity |
0 / 1 | 0β16 | discrete | Engine | |
/preenfm2_preenfm3/engine/voice |
0 / 2 | 0β16 | discrete | Engine | |
/preenfm2_preenfm3/engine/glide |
0 / 3 | 0β10 | discrete | Engine | |
/preenfm2_preenfm3/modulation/index_1 |
17 | 0 / 4 | 0β127 | continuous | Modulation |
/preenfm2_preenfm3/modulation/index_1_velocity |
0 / 5 | 0β1600 | continuous | Modulation | |
/preenfm2_preenfm3/modulation/index_2 |
18 | 0 / 6 | 0β127 | continuous | Modulation |
/preenfm2_preenfm3/modulation/index_2_velocity |
0 / 7 | 0β1600 | continuous | Modulation | |
/preenfm2_preenfm3/modulation/index_3 |
19 | 0 / 8 | 0β127 | continuous | Modulation |
/preenfm2_preenfm3/modulation/index_3_velocity |
0 / 9 | 0β1600 | continuous | Modulation | |
/preenfm2_preenfm3/modulation/index_4 |
20 | 0 / 10 | 0β127 | continuous | Modulation |
/preenfm2_preenfm3/modulation/index_4_velocity |
0 / 11 | 0β1600 | continuous | Modulation | |
/preenfm2_preenfm3/modulation/index_5 |
21 | 0 / 12 | 0β127 | continuous | Modulation |
/preenfm2_preenfm3/modulation/index_5_velocity |
0 / 13 | 0β1600 | continuous | Modulation | |
/preenfm2_preenfm3/mixer/mix_1 |
22 | 0 / 16 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/pan_1 |
23 | 0 / 17 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/mix_2 |
24 | 0 / 18 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/pan_2 |
25 | 0 / 19 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/mix_3 |
26 | 0 / 20 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/pan_3 |
27 | 0 / 21 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/mix_4 |
28 | 0 / 22 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/pan_4 |
29 | 0 / 23 | 0β127 | continuous | Mixer |
/preenfm2_preenfm3/mixer/mix_5 |
0 / 24 | 0β100 | continuous | Mixer | |
/preenfm2_preenfm3/mixer/pan_5 |
0 / 25 | 0β200 | continuous | Mixer | |
/preenfm2_preenfm3/mixer/mix_6 |
0 / 26 | 0β100 | continuous | Mixer | |
/preenfm2_preenfm3/mixer/pan_6 |
0 / 27 | 0β200 | continuous | Mixer | |
/preenfm2_preenfm3/arpeggiator/clock |
97 | 0 / 28 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/tempo |
98 | 0 / 29 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/direction |
0 / 30 | 0β16383 | continuous | Arpeggiator | |
/preenfm2_preenfm3/arpeggiator/octave |
99 | 0 / 31 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/pattern |
100 | 0 / 32 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/division |
101 | 0 / 33 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/duration |
102 | 0 / 34 | 0β127 | continuous | Arpeggiator |
/preenfm2_preenfm3/arpeggiator/latch |
0 / 35 | 0β16383 | continuous | Arpeggiator | |
/preenfm2_preenfm3/filter/type |
70 | 0 / 40 | 0β127 | continuous | Filter |
/preenfm2_preenfm3/filter/parameter_1 |
71 | 0 / 41 | 0β127 | continuous | Filter |
/preenfm2_preenfm3/filter/parameter_2 |
72 | 0 / 42 | 0β127 | continuous | Filter |
/preenfm2_preenfm3/filter/gain |
73 | 0 / 43 | 0β127 | continuous | Filter |
/preenfm2_preenfm3/operator_1/shape |
0 / 44 | 0β7 | discrete | Operator 1 | |
/preenfm2_preenfm3/operator_1/frequency_type |
0 / 45 | 0β1 | switch | Operator 1 | |
/preenfm2_preenfm3/operator_1/frequency |
50 | 0 / 46 | 0β127 | continuous | Operator 1 |
/preenfm2_preenfm3/operator_1/fine_tune |
0 / 47 | 0β16383 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_attack |
74 | 0 / 68 | 0β127 | continuous | Operator 1 |
/preenfm2_preenfm3/operator_1/envelope_attack_level |
0 / 69 | 0β100 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_decay |
0 / 70 | 0β1600 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_decay_level |
0 / 71 | 0β100 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_sustain |
0 / 72 | 0β1600 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_sustain_level |
0 / 73 | 0β100 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_1/envelope_release |
82 | 0 / 74 | 0β127 | continuous | Operator 1 |
/preenfm2_preenfm3/operator_1/envelope_release_level |
0 / 75 | 0β100 | continuous | Operator 1 | |
/preenfm2_preenfm3/operator_2/shape |
0 / 48 | 0β7 | discrete | Operator 2 | |
/preenfm2_preenfm3/operator_2/frequency_type |
0 / 49 | 0β1 | switch | Operator 2 | |
/preenfm2_preenfm3/operator_2/frequency |
51 | 0 / 50 | 0β127 | continuous | Operator 2 |
/preenfm2_preenfm3/operator_2/fine_tune |
0 / 51 | 0β16383 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_attack |
75 | 0 / 76 | 0β127 | continuous | Operator 2 |
/preenfm2_preenfm3/operator_2/envelope_attack_level |
0 / 77 | 0β100 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_decay |
0 / 78 | 0β1600 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_decay_level |
0 / 79 | 0β100 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_sustain |
0 / 80 | 0β1600 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_sustain_level |
0 / 81 | 0β100 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_2/envelope_release |
83 | 0 / 82 | 0β127 | continuous | Operator 2 |
/preenfm2_preenfm3/operator_2/envelope_release_level |
0 / 83 | 0β100 | continuous | Operator 2 | |
/preenfm2_preenfm3/operator_3/shape |
0 / 52 | 0β7 | discrete | Operator 3 | |
/preenfm2_preenfm3/operator_3/frequency_type |
0 / 53 | 0β1 | switch | Operator 3 | |
/preenfm2_preenfm3/operator_3/frequency |
52 | 0 / 54 | 0β127 | continuous | Operator 3 |
/preenfm2_preenfm3/operator_3/fine_tune |
0 / 55 | 0β16383 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_attack |
76 | 0 / 84 | 0β127 | continuous | Operator 3 |
/preenfm2_preenfm3/operator_3/envelope_attack_level |
0 / 85 | 0β100 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_decay |
0 / 86 | 0β1600 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_decay_level |
0 / 87 | 0β100 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_sustain |
0 / 88 | 0β1600 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_sustain_level |
0 / 89 | 0β100 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_3/envelope_release |
84 | 0 / 90 | 0β127 | continuous | Operator 3 |
/preenfm2_preenfm3/operator_3/envelope_release_level |
0 / 91 | 0β100 | continuous | Operator 3 | |
/preenfm2_preenfm3/operator_4/shape |
0 / 56 | 0β7 | discrete | Operator 4 | |
/preenfm2_preenfm3/operator_4/frequency_type |
0 / 57 | 0β1 | switch | Operator 4 | |
/preenfm2_preenfm3/operator_4/frequency |
53 | 0 / 58 | 0β127 | continuous | Operator 4 |
/preenfm2_preenfm3/operator_4/fine_tune |
0 / 59 | 0β16383 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_attack |
77 | 0 / 92 | 0β127 | continuous | Operator 4 |
/preenfm2_preenfm3/operator_4/envelope_attack_level |
0 / 93 | 0β100 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_decay |
0 / 94 | 0β1600 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_decay_level |
0 / 95 | 0β100 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_sustain |
0 / 96 | 0β1600 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_sustain_level |
0 / 97 | 0β100 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_4/envelope_release |
85 | 0 / 98 | 0β127 | continuous | Operator 4 |
/preenfm2_preenfm3/operator_4/envelope_release_level |
0 / 99 | 0β100 | continuous | Operator 4 | |
/preenfm2_preenfm3/operator_5/shape |
0 / 60 | 0β7 | discrete | Operator 5 | |
/preenfm2_preenfm3/operator_5/frequency_type |
0 / 61 | 0β1 | switch | Operator 5 | |
/preenfm2_preenfm3/operator_5/frequency |
54 | 0 / 62 | 0β127 | continuous | Operator 5 |
/preenfm2_preenfm3/operator_5/fine_tune |
0 / 63 | 0β16383 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_attack |
78 | 0 / 100 | 0β127 | continuous | Operator 5 |
/preenfm2_preenfm3/operator_5/envelope_attack_level |
0 / 101 | 0β100 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_decay |
0 / 102 | 0β1600 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_decay_level |
0 / 103 | 0β100 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_sustain |
0 / 104 | 0β1600 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_sustain_level |
0 / 105 | 0β100 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_5/envelope_release |
86 | 0 / 106 | 0β127 | continuous | Operator 5 |
/preenfm2_preenfm3/operator_5/envelope_release_level |
0 / 107 | 0β100 | continuous | Operator 5 | |
/preenfm2_preenfm3/operator_6/shape |
0 / 64 | 0β7 | discrete | Operator 6 | |
/preenfm2_preenfm3/operator_6/frequency_type |
0 / 65 | 0β1 | switch | Operator 6 | |
/preenfm2_preenfm3/operator_6/frequency |
55 | 0 / 66 | 0β127 | continuous | Operator 6 |
/preenfm2_preenfm3/operator_6/fine_tune |
0 / 67 | 0β16383 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_attack |
79 | 0 / 108 | 0β127 | continuous | Operator 6 |
/preenfm2_preenfm3/operator_6/envelope_attack_level |
0 / 109 | 0β100 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_decay |
0 / 110 | 0β1600 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_decay_level |
0 / 111 | 0β100 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_sustain |
0 / 112 | 0β1600 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_sustain_level |
0 / 113 | 0β100 | continuous | Operator 6 | |
/preenfm2_preenfm3/operator_6/envelope_release |
87 | 0 / 114 | 0β127 | continuous | Operator 6 |
/preenfm2_preenfm3/operator_6/envelope_release_level |
0 / 115 | 0β100 | continuous | Operator 6 | |
/preenfm2_preenfm3/envelope/carrier_operator_envelope_attack |
80 | 0β127 | continuous | Envelope | |
/preenfm2_preenfm3/envelope/carrier_operator_envelope_release |
81 | 0β127 | continuous | Envelope | |
/preenfm2_preenfm3/envelope/modulator_operator_envelope_attack |
62 | 0β127 | continuous | Envelope | |
/preenfm2_preenfm3/envelope/modulator_operator_envelope_release |
63 | 0β127 | continuous | Envelope | |
/preenfm2_preenfm3/matrix/row_1_source |
0 / 116 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_1_multiplier |
46 | 0 / 117 | 0β127 | continuous | Matrix |
/preenfm2_preenfm3/matrix/row_1_destination |
0 / 118 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_2_source |
0 / 120 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_2_multiplier |
47 | 0 / 121 | 0β127 | continuous | Matrix |
/preenfm2_preenfm3/matrix/row_2_destination |
0 / 122 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_3_source |
0 / 124 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_3_multiplier |
48 | 0 / 125 | 0β127 | continuous | Matrix |
/preenfm2_preenfm3/matrix/row_3_destination |
0 / 126 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_4_source |
1 / 0 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_4_multiplier |
49 | 1 / 1 | 0β127 | continuous | Matrix |
/preenfm2_preenfm3/matrix/row_4_destination |
1 / 2 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_5_source |
1 / 4 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_5_multiplier |
1 / 5 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_5_destination |
1 / 6 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_6_source |
1 / 8 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_6_multiplier |
1 / 9 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_6_destination |
1 / 10 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_7_source |
1 / 12 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_7_multiplier |
1 / 13 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_7_destination |
1 / 14 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_8_source |
1 / 16 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_8_multiplier |
1 / 17 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_8_destination |
1 / 18 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_9_source |
1 / 20 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_9_multiplier |
1 / 21 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_9_destination |
1 / 22 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_10_source |
1 / 24 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_10_multiplier |
1 / 25 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_10_destination |
1 / 26 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_11_source |
1 / 28 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_11_multiplier |
1 / 29 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_11_destination |
1 / 30 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_12_source |
1 / 32 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_12_multiplier |
1 / 33 | 0β2000 | continuous | Matrix | |
/preenfm2_preenfm3/matrix/row_12_destination |
1 / 34 | 0β16383 | continuous | Matrix | |
/preenfm2_preenfm3/performance/parameter_1 |
115 | 1 / 36 | 0β127 | continuous | Performance |
/preenfm2_preenfm3/performance/parameter_2 |
116 | 1 / 37 | 0β127 | continuous | Performance |
/preenfm2_preenfm3/performance/parameter_3 |
117 | 1 / 38 | 0β127 | continuous | Performance |
/preenfm2_preenfm3/lfo_1/shape |
94 | 1 / 40 | 0β127 | continuous | LFO 1 |
/preenfm2_preenfm3/lfo_1/frequency |
56 | 1 / 41 | 0β127 | continuous | LFO 1 |
/preenfm2_preenfm3/lfo_1/bias |
91 | 1 / 42 | 0β127 | continuous | LFO 1 |
/preenfm2_preenfm3/lfo_1/key_sync |
1 / 43 | 0β16383 | continuous | LFO 1 | |
/preenfm2_preenfm3/lfo_1/phase |
88 | 1 / 68 | 0β127 | continuous | LFO 1 |
/preenfm2_preenfm3/lfo_2/shape |
95 | 1 / 44 | 0β127 | continuous | LFO 2 |
/preenfm2_preenfm3/lfo_2/frequency |
57 | 1 / 45 | 0β127 | continuous | LFO 2 |
/preenfm2_preenfm3/lfo_2/bias |
92 | 1 / 46 | 0β127 | continuous | LFO 2 |
/preenfm2_preenfm3/lfo_2/key_sync |
1 / 47 | 0β16383 | continuous | LFO 2 | |
/preenfm2_preenfm3/lfo_2/phase |
89 | 1 / 69 | 0β127 | continuous | LFO 2 |
/preenfm2_preenfm3/lfo_3/shape |
96 | 1 / 48 | 0β127 | continuous | LFO 3 |
/preenfm2_preenfm3/lfo_3/frequency |
58 | 1 / 49 | 0β127 | continuous | LFO 3 |
/preenfm2_preenfm3/lfo_3/bias |
93 | 1 / 50 | 0β127 | continuous | LFO 3 |
/preenfm2_preenfm3/lfo_3/key_sync |
1 / 51 | 0β16383 | continuous | LFO 3 | |
/preenfm2_preenfm3/lfo_3/phase |
90 | 1 / 70 | 0β127 | continuous | LFO 3 |
/preenfm2_preenfm3/free_envelope_1/attack |
1 / 52 | 0β16383 | continuous | Free envelope 1 | |
/preenfm2_preenfm3/free_envelope_1/decay |
1 / 53 | 0β16383 | continuous | Free envelope 1 | |
/preenfm2_preenfm3/free_envelope_1/sustain |
1 / 54 | 0β16383 | continuous | Free envelope 1 | |
/preenfm2_preenfm3/free_envelope_1/release |
1 / 55 | 0β16383 | continuous | Free envelope 1 | |
/preenfm2_preenfm3/free_envelope_2/silence |
60 | 1 / 56 | 0β127 | continuous | Free envelope 2 |
/preenfm2_preenfm3/free_envelope_2/attack |
1 / 57 | 0β16383 | continuous | Free envelope 2 | |
/preenfm2_preenfm3/free_envelope_2/decay |
1 / 58 | 0β16383 | continuous | Free envelope 2 | |
/preenfm2_preenfm3/free_envelope_2/loop |
1 / 59 | 0β16383 | continuous | Free envelope 2 | |
/preenfm2_preenfm3/step_sequencer_1/tempo |
1 / 60 | 0β16383 | continuous | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/gate |
61 | 1 / 61 | 0β127 | continuous | Step sequencer 1 |
/preenfm2_preenfm3/step_sequencer_1/step_0 |
2 / 0 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_1 |
2 / 1 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_2 |
2 / 2 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_3 |
2 / 3 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_4 |
2 / 4 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_5 |
2 / 5 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_6 |
2 / 6 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_7 |
2 / 7 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_8 |
2 / 8 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_9 |
2 / 9 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_10 |
2 / 10 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_11 |
2 / 11 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_12 |
2 / 12 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_13 |
2 / 13 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_14 |
2 / 14 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_15 |
2 / 15 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_1/step_16 |
2 / 16 | 0β16 | discrete | Step sequencer 1 | |
/preenfm2_preenfm3/step_sequencer_2/tempo |
1 / 64 | 0β16383 | continuous | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/gate |
62 | 1 / 65 | 0β127 | continuous | Step sequencer 2 |
/preenfm2_preenfm3/step_sequencer_2/step_0 |
3 / 0 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_1 |
3 / 1 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_2 |
3 / 2 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_3 |
3 / 3 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_4 |
3 / 4 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_5 |
3 / 5 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_6 |
3 / 6 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_7 |
3 / 7 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_8 |
3 / 8 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_9 |
3 / 9 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_10 |
3 / 10 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_11 |
3 / 11 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_12 |
3 / 12 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_13 |
3 / 13 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_14 |
3 / 14 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_15 |
3 / 15 | 0β16 | discrete | Step sequencer 2 | |
/preenfm2_preenfm3/step_sequencer_2/step_16 |
3 / 16 | 0β16 | discrete | Step sequencer 2 |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /preenfm2_preenfm3/note/on <note> <velocity>, /preenfm2_preenfm3/cc/<number> <value>, /preenfm2_preenfm3/pitchbend <0-16383>, /preenfm2_preenfm3/program_change <n>.
Limitations¶
CC/NRPN only. SysEx (preset management, display control, bulk dump/load, vendor-proprietary opcodes) is NOT covered by pencilresearch. To extend this device with SysEx, sniff the vendor editor, add `sysex.header/footer` + `commands` blocks, and use `update_device.md` PR template.
Frequently asked questions¶
Which MIDI CC controls the filter cutoff on the PreenFM2 (PreenFM3)?
CC 70 (0β127), named /preenfm2_preenfm3/filter/type in SynthHub's map.
How many parameters of the PreenFM2 (PreenFM3) can be controlled over MIDI?
SynthHub's map of the PreenFM2 (PreenFM3) lists 76 MIDI CC and 211 NRPN 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 PreenFM2 (PreenFM3)?
Yes: SynthHub's hosted MCP server knows the PreenFM2 (PreenFM3)'s MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.