Tutorials
Each tutorial builds one thing from nothing and explains what it is doing as it goes. The user guide tells you what a setting is; a tutorial shows you when to use it.
Read them in any order. Each one starts by explaining what you will learn and what gear you need. Completing all of them will give you a solid understanding of Electra One.
The tutorials only scratch the surface of Lua programming. Unleashing its full power requires spending some time learning the Lua programming language.
How Controls Work
Builds a preset with one control of each kind: a fader, a dial, a list, a pad and a note. Covers proportional, discrete and state controls, the value on the screen versus the value in the message, and how to send a Control Change, a 14-bit Control Change, a Program Change and a note. No instrument needed.
MIDI Learn
How to build controls by turning knobs on your instrument instead of typing message details in. Covers both ways of learning, which messages can be learned, how the editor works out a range and finds the value byte of a SysEx message, and how to fix it with Change type when it gets one wrong.
Control Events
How to get more than one parameter out of a single knob, using its press and touch events, and how to turn a group into a display by having it follow a MIDI parameter. Examples: a filter that switches its own type, pads that change the page, and an envelope that shows the knob you are touching.
Revisions and Releases
How preset history works in the editor: saving a revision with a description, tidying away the automatic saves, marking a revision as a release, going back to an earlier one, and branching an old revision into a new preset.
Formatting Values with Lua
Seven short Lua formatters to copy, for percentages, times, tunings, panning, note names, decibels and plurals, so a control shows what your instrument's own screen would show. Written for people who have not written Lua before, with a section on adapting a formatter to your own instrument.
Sending SysEx Messages
How to write a SysEx message for a control byte by byte. Builds eight controls for a Yamaha DX7, six of which share a single value byte - one bit each - and shows how the controller maps a control's value into the bits it owns.
Device SysEx Messages
How to write an instrument's parameter change format once on the device rather than once per control. Eight DX7 controls share one template that carries the parameter number as well as the value, uses Lua for the channel byte, and listens as well as sends, so the synthesizer can move your controls.
Patch Request and Response
How to ask an instrument for its current sound and fill the whole preset from the answer. Covers the request message, the response header that identifies the dump, and the rules that take bytes - and single bits - out of it into controls. Ends by adding a pad that sends the request.
Editing a Patch Name
How to handle text in a patch dump, which mapping rules cannot reach. Lua reads the ten bytes of a DX7 voice name, a text box shows them, the controller's keyboard edits them, and ten parameter changes write the name back to the synthesizer.
Drawing a Custom Control
How to draw a control yourself with the graphics library. Turns the DX7 Algorithm dial into a picture of the thirty-two operator arrangements, and covers the paint callback, the display thread, the pot callback and asking for a repaint.
Debugging a Preset's Lua
How to stop a preset's script on the controller at a line you choose, and read its variables, call stack and threads while the instrument is playing. Covers every place a preset's Lua runs: formatters, value functions, events, timers, MIDI callbacks and painting.
Building a Preset with AI
How to describe a preset in plain language and let an AI coding agent build it. Covers the folder the desktop app watches, working in VS Code with Claude Code, letting the agent read the controller's screen and log to check its own work, and keeping what works with tests and git.
Building an Arpeggiator in One Prompt
How a single, specific request to the desktop app's built-in AI panel builds a whole preset: an arpeggiator with a configurable source and destination, tempo and pattern knobs, and its own Lua tests, written, uploaded and verified clean on the controller without a second message.
iConnectivity Routers
How to connect the controller to a mioXL or mioXM over a single USB cable, and which routes a working setup needs. Also covers custom port names, several controllers on one network, and recording a synthesizer from a DAW.