Skip to content

PWM Mantis: MIDI CC, NRPN and OSC map

The PWM Mantis as named OSC addresses — 30 CC, 61 NRPN — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.

Device PWM Mantis
Vendor PWM
OSC prefix /mantis
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/pwm/mantis.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/pwm/mantis.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 /mantis/standard_controls/bank_select 63

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as mantis: ask “what can the PWM Mantis do?” and it reads this map with list_routes. See the MCP guide.

MIDI CC and NRPN parameters (91)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/mantis/standard_controls/bank_select 0 0–127 continuous Standard controls
/mantis/standard_controls/modulation_wheel 1 0–127 continuous Standard controls
/mantis/standard_controls/expression 11 0–127 continuous Standard controls
/mantis/standard_controls/sustain_pedal 64 0–127 continuous Standard controls
/mantis/standard_controls/all_sound_off 120 0–127 continuous Standard controls
/mantis/standard_controls/local_control 122 0–127 continuous Standard controls
/mantis/standard_controls/all_notes_off 123 0–127 continuous Standard controls
/mantis/voicing/mode 0 / 66 0–2 discrete Voicing
/mantis/voicing/voice_spread 0 / 51 0–127 continuous Voicing
/mantis/keyboard/octave 0 / 5 60–67 discrete Keyboard
/mantis/glide/time 5 0–127 continuous Glide
/mantis/glide/auto 35 0–1 switch Glide
/mantis/oscillator_1/wave 0 / 14 0–5 discrete Oscillator 1
/mantis/oscillator_1/shape 12 / 44 0–16383 continuous Oscillator 1
/mantis/oscillator_1/shape_modulation_amount 0 / 21 0–127 continuous Oscillator 1
/mantis/oscillator_1/pitch_modulation_amount 0 / 22 0–127 continuous Oscillator 1
/mantis/oscillator_1/octave 0 / 24 0–5 discrete Oscillator 1
/mantis/oscillator_2/wave 0 / 23 0–5 discrete Oscillator 2
/mantis/oscillator_2/shape 19 / 51 0–16383 continuous Oscillator 2
/mantis/oscillator_2/shape_modulation_amount 0 / 30 0–127 continuous Oscillator 2
/mantis/oscillator_2/pitch_modulation_amount 0 / 31 0–127 continuous Oscillator 2
/mantis/oscillator_2/octave 0 / 32 0–5 discrete Oscillator 2
/mantis/oscillator_2/semitone 0 / 28 52–76 discrete Oscillator 2
/mantis/oscillator_2/cents 0 / 29 0–127 continuous Oscillator 2
/mantis/oscillator_2/density 0 / 26 0–127 continuous Oscillator 2
/mantis/oscillator_2/density_rate 0 / 27 0–127 continuous Oscillator 2
/mantis/oscillators/sub_oscillator 24 0–127 continuous Oscillators
/mantis/oscillators/oscillator_drift 0 / 10 0–127 continuous Oscillators
/mantis/mix/oscillator_balance 23 0–127 continuous Mix
/mantis/mix/noise_balance 27 0–127 continuous Mix
/mantis/mix/ring_modulation_balance 26 0–127 continuous Mix
/mantis/mix/oscillator_level_trim 7 0–127 continuous Mix
/mantis/mix/noise_density 0 / 123 0–127 continuous Mix
/mantis/filter/cutoff 74 / 61 0–16383 continuous Filter
/mantis/filter/resonance 71 0–127 continuous Filter
/mantis/filter/width 75 0–127 continuous Filter
/mantis/filter/drive 80 0–127 continuous Filter
/mantis/filter/type 0 / 46 0–7 discrete Filter
/mantis/filter/keytrack 0 / 48 0–127 continuous Filter
/mantis/filter/cutoff_modulation_amount 0 / 49 0–127 continuous Filter
/mantis/filter/width_modulation_amount 0 / 50 0–127 continuous Filter
/mantis/envelope_1/attack 82 0–127 continuous Envelope 1
/mantis/envelope_1/decay 83 0–127 continuous Envelope 1
/mantis/envelope_1/sustain 84 0–127 continuous Envelope 1
/mantis/envelope_1/release 85 0–127 continuous Envelope 1
/mantis/envelope_1/sustain_fall 0 / 57 0–127 continuous Envelope 1
/mantis/envelope_1/velocity 0 / 55 0–127 continuous Envelope 1
/mantis/envelope_1/repeat 0 / 25 0–1 switch Envelope 1
/mantis/envelope_1/legato 0 / 56 0–1 switch Envelope 1
/mantis/envelope_2/attack 86 0–127 continuous Envelope 2
/mantis/envelope_2/decay 87 0–127 continuous Envelope 2
/mantis/envelope_2/sustain 88 0–127 continuous Envelope 2
/mantis/envelope_2/release 89 0–127 continuous Envelope 2
/mantis/envelope_2/sustain_fall 0 / 62 0–127 continuous Envelope 2
/mantis/envelope_2/velocity 0 / 60 0–127 continuous Envelope 2
/mantis/envelope_2/repeat 0 / 33 0–1 switch Envelope 2
/mantis/envelope_2/legato 0 / 61 0–1 switch Envelope 2
/mantis/lfo_1/wave 0 / 69 0–5 discrete LFO 1
/mantis/lfo_1/sync_mode 0 / 68 0–2 discrete LFO 1
/mantis/lfo_1/rate_sync_off 0 / 70 0–127 continuous LFO 1
/mantis/lfo_1/rate_sync_on 0 / 71 0–127 continuous LFO 1
/mantis/lfo_1/fade 0 / 67 0–127 continuous LFO 1
/mantis/lfo_1/retrigger 0 / 74 0–1 switch LFO 1
/mantis/lfo_2/wave 0 / 78 0–5 discrete LFO 2
/mantis/lfo_2/sync_mode 0 / 77 0–2 discrete LFO 2
/mantis/lfo_2/rate_sync_off 0 / 79 0–127 continuous LFO 2
/mantis/lfo_2/rate_sync_on 0 / 80 0–127 continuous LFO 2
/mantis/lfo_2/fade 0 / 76 0–127 continuous LFO 2
/mantis/lfo_2/retrigger 0 / 83 0–1 switch LFO 2
/mantis/modulation_routing/oscillator_1_shape_modulation_source 1 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_1_shape_modulation_scale 1 / 1 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_2_shape_modulation_source 2 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_2_shape_modulation_scale 2 / 1 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_1_pitch_modulation_source 3 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_1_pitch_modulation_scale 3 / 1 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_2_pitch_modulation_source 4 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/oscillator_2_pitch_modulation_scale 4 / 1 0–5 discrete Modulation routing
/mantis/modulation_routing/filter_cutoff_modulation_source 5 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/filter_cutoff_modulation_scale 5 / 1 0–5 discrete Modulation routing
/mantis/modulation_routing/filter_width_modulation_source 6 / 0 0–5 discrete Modulation routing
/mantis/modulation_routing/filter_width_modulation_scale 6 / 1 0–5 discrete Modulation routing
/mantis/arpeggiator/enable 0 / 121 0–1 switch Arpeggiator
/mantis/arpeggiator/mode 0 / 117 0–5 discrete Arpeggiator
/mantis/arpeggiator/octave 0 / 119 0–5 discrete Arpeggiator
/mantis/arpeggiator/swing 0 / 120 0–127 continuous Arpeggiator
/mantis/arpeggiator/sync 0 / 116 3–15 discrete Arpeggiator
/mantis/effects/reverb_level 91 0–127 continuous Effects
/mantis/effects/reverb_type 0 / 102 0–7 discrete Effects
/mantis/effects/reverb_time 0 / 103 0–127 continuous Effects
/mantis/effects/chorus_level 93 0–127 continuous Effects
/mantis/effects/chorus_type 0 / 111 0–3 discrete Effects

Performance MIDI

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