Skip to content
roomi fields

Audio and hardware

Electra One — widgets and plugin

A library of Lua widgets for the Electra One MIDI controller, and a Claude Code plugin to develop them on the device.

active licence MIT

Try it Source code Website

Electra One presets only offer faders, knobs, pads, lists and ADSR envelopes; these two repositories add the rest in Lua (XY pads, step sequencers, scopes, LFO visualisers) and the tooling to develop it on the device. Their main limit: since 28 September 2026, the nine animated widgets rely on the schedule.* scheduler of firmware 5.0.0f, still in beta, whereas the plugin was developed against firmware 4.1.4.

The demo runs in the browser: the emulator runs the widgets’ Lua on a 1016 × 560 screen, the MK2’s.

A widget is a folder, the plugin is the workbench

Each widget lives in widgets/<name>/: the code (widget.lua), a preset that loads it as is (demo.preset.json), a screenshot and integration notes. The gallery shows 21: 10 built on a shared theme and primitives (lib/theme.lua, lib/primitives/), 11 taken from widgets shared on the Electra forum, with their author.

The electra-one-mcp plugin is for developing them from Claude Code, with the device connected over USB: send a preset, run Lua on the device and read what it prints, listen to its events, pull a preset back into the repository.

Getting started

Without a device: open the emulator, choose a widget, touch it with the mouse.

With an MK2: take a widget’s demo.preset.json and send it from Electra’s web editor, or through the plugin. In Claude Code:

/plugin marketplace add roomi-fields/claude-plugins
/plugin install electra-one@roomi-fields

You need Python 3.10 or later and the MCP SDK (pip install -r requirements.txt in the plugin’s folder). After a restart, the tool push_to_device(preset_path="widgets/step-seq-16/demo.preset.json", bank=0, slot=0) sends the preset and checks every acknowledgement.

What they do

  • The widgets: XY pad, 16-step sequencer, Waldorf Q-style 16-note list, three-band equaliser, meters, cube LFO, spatial panner, multiple envelopes, metronomes.
  • Push to the device: push_to_device converts the repository’s format into the one the firmware reads, splits out the Lua and sends it in five checked steps.
  • Inspect: execute_lua runs a snippet without saving it and returns its output; device_state returns the current bank, slot and page.
  • Pull back: pull_preset brings preset and Lua back down, converted to the repository’s format, ready for a git diff.
  • Search the documentation: the 79 pages of docs.electra.one locally, 180 Lua functions, 62 SysEx commands, 17 pitfalls observed on the device.

Twenty tools in all, listed in the plugin’s README.

Common issues

A widget does not reach the device, with no error. A non-ASCII byte in the Lua (a degree sign, a flat) makes the SysEx upload invalid, and the device answers nothing: no acknowledgement, no refusal, no log. The whole library has been 7-bit ASCII since 28 September 2026.

graphics.drawText does not exist on the device. Use graphics.print(x, y, text, width, align).

Reloading a slot is refused on 4.1.4. Command 08 08 returns a refusal despite the documentation; the plugin switches to another slot and back.

On Windows, a large preset arrives truncated. Beyond about 5 KB in a single SysEx message, since the late-2025 updates; the plugin keeps uploads short.

Where they stand

The plugin is at version 0.1.0, published on 26 May 2026. The library has no numbered version; it was migrated to firmware 5.0.0f on 28 September 2026, and what was measured on that firmware is recorded in V5_FINDINGS.md. Not yet covered by the plugin: MIDI capture and playback, and snapshots.

Widgets · Plugin · Gallery · osc-bridge

Thanks to the Electra One team, Martin Pavlas and Thomas Moravansky, for the device and its documented Lua interface; to the authors of the widgets shared on the forum; to xot/ElectraOne, johnnyclem/electra-one and elliotwoods/simularca-electra-one-plugin, which served as references for the SysEx protocol.

How it was made. Claude Code (Claude Opus 5.5), from the repository, its README and its release notes. Method