Hi all,
Sharing a project that might be of interest to anyone using the EL1 alongside OSC-speaking software (live coding, networked performance, custom controller surfaces, generative patches). `osc-bridge` is a Rust binary that gives the Electra One a clean named OSC surface — so any OSC client on your network can talk to the device by name, not by raw MIDI CC numbers.
GPL-3.0
EL1 MK2 driver is hardware-verified on firmware 4.1.4 (round-trip preset upload, live mutation, Lua scripting, dynamic CC<->OSC route rewiring, real-time touch events).
What it gives you for the EL1 specifically
# Upload a preset over OSC — the bridge parses the JSON,
# reconfigures the device over SysEx, AND rewires its own
# CC↔OSC routing so each new knob is reachable by name
/electra1/preset/upload "<preset JSON string>"
# Now drive controls by their semantic name (slugified from the preset)
/electra1/page1/filter_cutoff 0.72
/electra1/page1/osc1_mix 0.4
# Listen for the device's events
/electra1/page/switched 1
/electra1/preset/switched 0 5
/electra1/pot/touch 3 0 1 1 # pot 3 touched, control_id=1
# Mutate a live preset without re-uploading (firmware 4.x)
/electra1/control/update 1 '{"name":"NEW LABEL","color":"F45C51"}'
# Run Lua on the device (REPL-style — non-persistent)
/electra1/lua 'controls.get(1):setColor(0xE5823E)'
Every knob in the uploaded preset becomes a normalized 0..1 float OSC address. Routes are introspectable (`/electra1/routes/list` returns the address table — no client-side slugification rules to guess).
Use cases
- TouchOSC / Lemur / Open Stage Control on iPad — your EL1 becomes another surface you can control from your tablet, including by-name bindings that survive a preset upload (the bridge rewires routes on upload).
- SuperCollider / Sonic Pi / Max-MSP / Pure Data / TouchDesigner / VCV Rack — networked OSC integration for the EL1, no hand-rolling SysEx framing per gig.
- DAW integration — Ableton Live (via AbletonOSC), Bitwig, Reaper — you get a unified named OSC surface for both the EL1 and your DAW.
- Networked / headless performance setups — Raspberry Pi running osc-bridge connects to the EL1 over USB and serves OSC to anything on the LAN.
- Live “control mutations” — rename / recolor / hide individual EL1 controls live from a script (via `/control/update`, firmware 0x14 0x07), or hot-mutate the preset’s Lua runtime via `/lua` (firmware 0x08 0x0D). Great for performance setups where one device drives different “scenes” without preset switching latency.
Acknowledgements
- Martin Pavlas and kris for the publicly-documented Lua API + the staff replies on this forum that informed the empirical findings.
- `jorisroling/bitwig-electra-one` — `Electra One.control.js` was the reference impl I used to reverse-engineer the `/control/update` byte format.
- `xot/ElectraOne` (Codeberg) — reference for the simple `01 01` upload path.
Feedback / use-case stories / device-driver PRs welcome. Especially curious whether anyone here has tried EL1 over OSC in a live setup — I’d love to hear what works / what breaks.
Romi