Skip to content

Twisted Electrons TWISTfm MIDI CC chart, NRPN and OSC map

The Twisted Electrons TWISTfm MIDI implementation: 80 CC, each named, for Claude (MCP), SuperCollider or any OSC app.

Device Twisted Electrons TWISTfm
Vendor Twisted Electrons
OSC prefix /twistfm
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/twisted-electrons/twistfm.pencilresearch.fw-unknown.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/twisted-electrons/twistfm.pencilresearch.fw-unknown.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /twistfm/layer_1/algorithm 63

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as twistfm: ask β€œwhat can the Twisted Electrons TWISTfm do?” and it reads this map with list_routes. See the MCP guide.

MIDI CC and NRPN parameters (80)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/twistfm/layer_1/algorithm 10 0–127 continuous Layer 1
/twistfm/layer_1/feedback 16 0–127 continuous Layer 1
/twistfm/operator_1/op1_level 13 0–127 continuous Operator 1
/twistfm/operator_1/op1_waveform 19 0–127 continuous Operator 1
/twistfm/operator_1/op1_multiplier 22 0–127 continuous Operator 1
/twistfm/operator_1/op1_attack 25 0–127 continuous Operator 1
/twistfm/operator_1/op1_decay 28 0–127 continuous Operator 1
/twistfm/operator_1/op1_sustain 31 0–127 continuous Operator 1
/twistfm/operator_1/op1_release 34 0–127 continuous Operator 1
/twistfm/operator_2/op2_level 37 0–127 continuous Operator 2
/twistfm/operator_2/op2_waveform 40 0–127 continuous Operator 2
/twistfm/operator_2/op2_multiplier 43 0–127 continuous Operator 2
/twistfm/operator_2/op2_attack 46 0–127 continuous Operator 2
/twistfm/operator_2/op2_decay 49 0–127 continuous Operator 2
/twistfm/operator_2/op2_sustain 52 0–127 continuous Operator 2
/twistfm/operator_2/op2_release 55 0–127 continuous Operator 2
/twistfm/operator_3/op3_level 58 0–127 continuous Operator 3
/twistfm/operator_3/op3_waveform 61 0–127 continuous Operator 3
/twistfm/operator_3/op3_multiplier 48 0–127 continuous Operator 3
/twistfm/operator_3/op3_attack 51 0–127 continuous Operator 3
/twistfm/operator_3/op3_decay 54 0–127 continuous Operator 3
/twistfm/operator_3/op3_sustain 57 0–127 continuous Operator 3
/twistfm/operator_3/op3_release 60 0–127 continuous Operator 3
/twistfm/operator_4/op4_level 63 0–127 continuous Operator 4
/twistfm/operator_4/op4_waveform 45 0–127 continuous Operator 4
/twistfm/operator_4/op4_multiplier 42 0–127 continuous Operator 4
/twistfm/operator_4/op4_attack 39 0–127 continuous Operator 4
/twistfm/operator_4/op4_decay 62 0–127 continuous Operator 4
/twistfm/operator_4/op4_sustain 36 0–127 continuous Operator 4
/twistfm/operator_4/op4_release 33 0–127 continuous Operator 4
/twistfm/layer_2/algorithm 9 0–127 continuous Layer 2
/twistfm/layer_2/feedback 15 0–127 continuous Layer 2
/twistfm/layer_2/tune 86 0–127 continuous Layer 2
/twistfm/operator_5/op5_level 12 0–127 continuous Operator 5
/twistfm/operator_5/op5_waveform 18 0–127 continuous Operator 5
/twistfm/operator_5/op5_multiplier 21 0–127 continuous Operator 5
/twistfm/operator_5/op5_attack 24 0–127 continuous Operator 5
/twistfm/operator_5/op5_decay 27 0–127 continuous Operator 5
/twistfm/operator_5/op5_sustain 30 0–127 continuous Operator 5
/twistfm/operator_5/op5_release 8 0–127 continuous Operator 5
/twistfm/operator_6/op6_level 11 0–127 continuous Operator 6
/twistfm/operator_6/op6_waveform 14 0–127 continuous Operator 6
/twistfm/operator_6/op6_multiplier 17 0–127 continuous Operator 6
/twistfm/operator_6/op6_attack 20 0–127 continuous Operator 6
/twistfm/operator_6/op6_decay 23 0–127 continuous Operator 6
/twistfm/operator_6/op6_sustain 26 0–127 continuous Operator 6
/twistfm/operator_6/op6_release 29 0–127 continuous Operator 6
/twistfm/voice/fat 85 0–127 continuous Voice
/twistfm/voice/glide 56 0–127 continuous Voice
/twistfm/voice/rise 59 0–127 continuous Voice
/twistfm/voice/fall 87 0–127 continuous Voice
/twistfm/voice/vibrato_rate 66 0–127 continuous Voice
/twistfm/voice/vibrato_depth 68 0–127 continuous Voice
/twistfm/filter/cutoff 32 0–127 continuous Filter
/twistfm/filter/resonance 35 0–127 continuous Filter
/twistfm/filter/type 38 0–127 continuous Filter
/twistfm/filter/envelope_amount 41 0–127 continuous Filter
/twistfm/filter/envelope_attack 44 0–127 continuous Filter
/twistfm/filter/envelope_decay 47 0–127 continuous Filter
/twistfm/filter/envelope_sustain 50 0–127 continuous Filter
/twistfm/filter/envelope_release 53 0–127 continuous Filter
/twistfm/filter/heat 94 0–127 continuous Filter
/twistfm/lfo_1/rate 70 0–127 continuous LFO 1
/twistfm/lfo_1/depth 72 0–127 continuous LFO 1
/twistfm/lfo_1/shape 95 0–127 continuous LFO 1
/twistfm/lfo_2/shape 77 0–127 continuous LFO 2
/twistfm/lfo_2/rate 78 0–127 continuous LFO 2
/twistfm/lfo_2/depth 82 0–127 continuous LFO 2
/twistfm/lfo_3/depth 79 0–127 continuous LFO 3
/twistfm/lfo_3/rate 80 0–127 continuous LFO 3
/twistfm/lfo_3/shape 83 0–127 continuous LFO 3
/twistfm/pressure_modulator/pressure_attack 65 0–127 continuous Pressure modulator
/twistfm/pressure_modulator/pressure_depth 67 0–127 continuous Pressure modulator
/twistfm/pressure_modulator/pressure_release 69 0–127 continuous Pressure modulator
/twistfm/modulation_envelope/mod_envelope_depth 71 0–127 continuous Modulation envelope
/twistfm/modulation_envelope/mod_envelope_attack 73 0–127 continuous Modulation envelope
/twistfm/modulation_envelope/mod_envelope_decay 75 0–127 continuous Modulation envelope
/twistfm/modulation_envelope/mod_envelope_sustain 81 0–127 continuous Modulation envelope
/twistfm/modulation_envelope/mod_envelope_release 76 0–127 continuous Modulation envelope
/twistfm/performance/ribbon 88 0–127 continuous Performance

Performance MIDI

Notes, pitch bend and any CC are also available: /twistfm/note/on <note> <velocity>, /twistfm/cc/<number> <value>, /twistfm/pitchbend <0-16383>, /twistfm/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 Twisted Electrons TWISTfm?

CC 32 (0–127), named /twistfm/filter/cutoff in SynthHub's map.

How many parameters of the Twisted Electrons TWISTfm can be controlled over MIDI?

SynthHub's map of the Twisted Electrons TWISTfm lists 80 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 Twisted Electrons TWISTfm?

Yes: SynthHub's hosted MCP server knows the Twisted Electrons TWISTfm's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.