Skip to content

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:

osc-bridge osc-send /preenfm2_preenfm3/midi/bank_select 1

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.