Skip to content

Ensoniq ESQ-1: MIDI CC, NRPN and OSC map

The Ensoniq ESQ-1 as named OSC addresses — 146 NRPN — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.

Device Ensoniq ESQ-1
Vendor Ensoniq
OSC prefix /esq_1
Source 🎛️ Derived from an Electra One community preset
Revision per Electra preset
Upstream electra-preset
Driver file devices/ensoniq/esq_1.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/ensoniq/esq_1.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /esq_1/osc_1_oct 3

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

MIDI CC and NRPN parameters (146)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/esq_1/osc_1_oct 0 / 64 0–6 discrete
/esq_1/semitone 0 / 65 0–11 discrete
/esq_1/fine 0 / 66 0–31 discrete
/esq_1/waveform 0 / 67 0–31 discrete
/esq_1/mod_1 0 / 68 0–15 discrete
/esq_1/mod_1_depth 0 / 69 -63–63 continuous
/esq_1/osc_1_oct 0 / 72 0–6 discrete
/esq_1/semitone 0 / 73 0–11 discrete
/esq_1/fine 0 / 74 0–31 discrete
/esq_1/waveform 0 / 75 0–31 discrete
/esq_1/mod_1 0 / 76 0–15 discrete
/esq_1/mod_1_depth 0 / 77 -63–63 continuous
/esq_1/osc_1_oct 0 / 80 0–6 discrete
/esq_1/semitone 0 / 81 0–11 discrete
/esq_1/fine 0 / 82 0–31 discrete
/esq_1/waveform 0 / 83 0–31 discrete
/esq_1/mod_1 0 / 84 0–15 discrete
/esq_1/mod_1_depth 0 / 85 -63–63 continuous
/esq_1/mod_2 0 / 70 0–15 discrete
/esq_1/mod_2_depth 0 / 71 -63–63 continuous
/esq_1/mod_2 0 / 78 0–15 discrete
/esq_1/mod_2_depth 0 / 79 -63–63 continuous
/esq_1/mod_2 0 / 86 0–15 discrete
/esq_1/mod_2_depth 0 / 87 -63–63 continuous
/esq_1/cutoff_freq 0 / 110 0–127 continuous
/esq_1/resonance 0 / 111 0–31 discrete
/esq_1/keyb_track 0 / 112 0–63 continuous
/esq_1/osc_1_2_sync 0 / 120 0–1 switch
/esq_1/env_4_mod_amnt 0 / 106 0–63 continuous
/esq_1/dca_4_pan 0 / 107 0–15 discrete
/esq_1/mod_1 0 / 113 0–15 discrete
/esq_1/mod_1_depth 0 / 114 -63–63 continuous
/esq_1/mod_2 0 / 115 0–15 discrete
/esq_1/mod_2_depth 0 / 116 -63–63 continuous
/esq_1/pan_modulator 0 / 108 0–15 discrete
/esq_1/pan_mod_depth 0 / 109 -63–63 continuous
/esq_1/env_1_l1 0 / 0 -63–63 continuous
/esq_1/t1 0 / 5 0–127 continuous
/esq_1/l2 0 / 1 -63–63 continuous
/esq_1/t2 0 / 6 0–63 continuous
/esq_1/l3 0 / 2 -63–63 continuous
/esq_1/t3 0 / 7 0–63 continuous
/esq_1/t4 0 / 8 0–63 continuous
/esq_1/vel_lvl_ctrl 0 / 3 0–63 continuous
/esq_1/vel_t1 0 / 4 0–63 continuous
/esq_1/t_kbd_decay_sc 0 / 9 0–63 continuous
/esq_1/env_2_l1 0 / 10 -63–63 continuous
/esq_1/t1 0 / 15 0–127 continuous
/esq_1/l2 0 / 11 -63–63 continuous
/esq_1/t2 0 / 16 0–63 continuous
/esq_1/l3 0 / 12 -63–63 continuous
/esq_1/t3 0 / 17 0–63 continuous
/esq_1/t4 0 / 18 0–63 continuous
/esq_1/vel_lvl_ctrl 0 / 13 0–63 continuous
/esq_1/vel_att_cntl 0 / 14 0–63 continuous
/esq_1/t_kbd_decay_sc 0 / 19 0–63 continuous
/esq_1/env_3_l1 0 / 20 -63–63 continuous
/esq_1/t1 0 / 25 0–127 continuous
/esq_1/l2 0 / 21 -63–63 continuous
/esq_1/t2 0 / 26 0–63 continuous
/esq_1/l3 0 / 22 -63–63 continuous
/esq_1/t3 0 / 27 0–63 continuous
/esq_1/t4 0 / 28 0–63 continuous
/esq_1/vel_lvl_ctrl 0 / 23 0–63 continuous
/esq_1/vel_att_cntl 0 / 24 0–63 continuous
/esq_1/t_kbd_decay_sc 0 / 29 0–63 continuous
/esq_1/env_4_l1 0 / 30 -63–63 continuous
/esq_1/t1 0 / 35 0–63 continuous
/esq_1/l2 0 / 31 -63–63 continuous
/esq_1/t2 0 / 36 0–63 continuous
/esq_1/l3 0 / 32 -63–63 continuous
/esq_1/t3 0 / 37 0–63 continuous
/esq_1/t4 0 / 38 0–63 continuous
/esq_1/vel_lvl_ctrl 0 / 33 0–63 continuous
/esq_1/vel_att_cntl 0 / 34 0–63 continuous
/esq_1/t_kbd_decay_sc 0 / 39 0–63 continuous
/esq_1/split_layer_on 0 / 125 0–1 switch
/esq_1/sl_pgm 0 / 126 0–79 continuous
/esq_1/layer_on 0 / 127 0–1 switch
/esq_1/layer_pgm 1 / 0 0–79 continuous
/esq_1/split_pgm 1 / 1 0–2 discrete
/esq_1/split_prg 1 / 2 0–79 continuous
/esq_1/level 0 / 88 0–63 continuous
/esq_1/dca_1_status 0 / 89 0–1 switch
/esq_1/mod_1 0 / 90 0–15 discrete
/esq_1/mod_1_depth 0 / 91 -63–63 continuous
/esq_1/mod_1 0 / 92 0–15 discrete
/esq_1/mod_1_depth 0 / 93 -63–63 continuous
/esq_1/level 0 / 94 0–63 continuous
/esq_1/dca_1_status 0 / 95 0–1 switch
/esq_1/mod_1 0 / 96 0–15 discrete
/esq_1/mod_1_depth 0 / 97 -63–63 continuous
/esq_1/mod_1 0 / 98 0–15 discrete
/esq_1/mod_1_depth 0 / 99 -63–63 continuous
/esq_1/level 0 / 100 0–63 continuous
/esq_1/dca_1_status 0 / 101 0–1 switch
/esq_1/mod_1 0 / 102 0–15 discrete
/esq_1/mod_1_depth 0 / 103 -63–63 continuous
/esq_1/mod_1 0 / 104 0–15 discrete
/esq_1/mod_1_depth 0 / 105 -63–63 continuous
/esq_1/lfo_1_freq 0 / 40 0–63 continuous
/esq_1/lfo_reset 0 / 41 0–1 switch
/esq_1/human 0 / 42 0–1 switch
/esq_1/waveform 0 / 43 0–3 discrete
/esq_1/level_1 0 / 44 0–127 continuous
/esq_1/delay_rate 0 / 45 0–127 continuous
/esq_1/lev_2 0 / 46 0–127 continuous
/esq_1/mod_source 0 / 47 0–15 discrete
/esq_1/lfo_2_freq 0 / 48 0–127 continuous
/esq_1/lfo_reset 0 / 49 0–1 switch
/esq_1/human 0 / 50 0–1 switch
/esq_1/waveform 0 / 51 0–3 discrete
/esq_1/level_1 0 / 52 0–127 continuous
/esq_1/delay_rate 0 / 53 0–127 continuous
/esq_1/lev_2 0 / 54 0–127 continuous
/esq_1/mod_source 0 / 55 0–15 discrete
/esq_1/lfo_3_freq 0 / 56 0–127 continuous
/esq_1/lfo_reset 0 / 57 0–1 switch
/esq_1/human 0 / 58 0–1 switch
/esq_1/waveform 0 / 59 0–3 discrete
/esq_1/level_1 0 / 60 0–127 continuous
/esq_1/delay_rate 0 / 61 0–127 continuous
/esq_1/lev_2 0 / 62 0–127 continuous
/esq_1/mod_source 0 / 63 0–15 discrete
/esq_1/mode_amoun_on 0 / 117 0–1 switch
/esq_1/env_cycle_on 0 / 124 0–1 switch
/esq_1/mono_mode_on 0 / 119 0–1 switch
/esq_1/reset_voice_on 0 / 121 0–1 switch
/esq_1/reset_env_on 0 / 122 0–1 switch
/esq_1/reset_osc_on 0 / 123 0–1 switch
/esq_1/midi_enable 1 / 14 0–3 discrete
/esq_1/midi_track 1 / 15 0–12 discrete
/esq_1/midi_to_prg 1 / 16 0–3 discrete
/esq_1/midi_to_mix 1 / 17 0–3 discrete
/esq_1/glide 0 / 118 0–63 continuous
/esq_1/split_key 1 / 3 21–108 continuous
/esq_1/master_tuning 1 / 4 -31–31 continuous
/esq_1/mst_vel_sens 1 / 5 0–1 switch
/esq_1/mst_pedal 1 / 6 0–1 switch
/esq_1/mst_bend_range 1 / 7 0–12 discrete
/esq_1/mst_bend_type 1 / 8 0–1 switch
/esq_1/midi_base_chan 1 / 9 1–17 discrete
/esq_1/midi_ovflow 1 / 10 0–1 switch
/esq_1/midi_xcontrl 1 / 11 0–95 continuous
/esq_1/midi_pressure 1 / 12 0–2 discrete
/esq_1/midimode 1 / 13 0–3 discrete

Performance MIDI

Notes, pitch bend and any CC are also available: /esq_1/note/on <note> <velocity>, /esq_1/cc/<number> <value>, /esq_1/pitchbend <0-16383>, /esq_1/program_change <n>.

Limitations

Imported from an Electra One community preset. The mapping reflects the preset author's editorial choices: parameter naming, ranges, and which params are exposed. Untested on hardware in this repo.