Does a modern hardware MIDI controller with the ability to add your own features sound too good to be true?
The Electra One, by a company of the same name, is a small desktop MIDI controller with a touchscreen, a dozen high‑resolution rotary pots, six buttons, and USB and DIN MIDI ports. Its superpower is a mature Web MIDI platform that allows you to create custom controllers and switch between them at the touch of a button. There’s even a scripting language enabling anyone with a small amount of programming or scripting skill to create custom features, including two‑way MIDI communication, bulk SysEx interpretation, custom display formatting, and MIDI effects like arpeggiators and LFOs.
In essence, the Electra One can be a controller for DAWs, live performances or an editor/librarian for any MIDI equipment, new or old. At first, I was most excited about making editors for some older rack equipment in my studio, like the Roland MKS‑50, Yamaha TX81Z, and the Korg 03R/W. These are great synths hamstrung by awful UX design, and many software editors no longer work on modern Macs and PCs. The idea of having a small desktop device that can easily edit sounds on these old synths, switching from one profile to another, with the added reliability of hardware, is very appealing. However, I quickly found other uses for the Electra One as a DAW controller and partner for specific pieces of equipment, essentially adding more physical controls and features.
MIDI Chameleon
At 206 x 189 x 38mm, the Electra One will take up very little space on your desktop. The aluminium enclosure is reassuringly solid, and there is no wobble in the touch‑sensitive knobs. The screen is a 7‑inch colour LCD with 1024x600 resolution and looks great. Power comes from the USB Type‑B port on the back, which also supplies two virtual MIDI ports and a control port for sending data back and forth from the Web MIDI interface. While I would usually moan about the lack of a dedicated power supply, in this case, it’s OK. The Electra One does not generate audio, so those pesky ground‑loop hums caused by USB‑powered equipment are not an issue.
On the rear of the unit, we also find a USB Type‑A host port and two sets of MIDI DIN in/out ports. The USB host can be used to connect any USB MIDI class‑compliant device. If you want to connect more devices, you can use a USB hub. All these MIDI ports can send and receive MIDI, and a programable MIDI router and merger allows you to configure the unit to your setup.
A typical setup might be USB Type‑B to the computer for power, Web MIDI editing, and two‑way DAW control; USB Type‑A host port connected to a a master keyboard and modern sequencer for live performance enhancement; and MIDI DIN ports used for older equipment without USB. With this setup correctly configured, you can switch between presets to use the Electra One as a DAW controller, sequencer partner, or ancient synth editor without rewiring. You can also use the Web MIDI environment any time to edit your presets and upload them to the unit.
At the back of the Electra One we find a dual pair of MIDI I/O sockets and a brace of USB ports.
Hands On
The Electra One screen can contain up to 36 parameters, and an instrument (or ‘preset’ in Electra One lingo) can have up to 12 pages, allowing you to configure up to 432 parameters per preset. The screen is divided into three rows with 12 parameters on each row. One row is active at a time, and the 12 endless encoders control the parameters of that row. You can use the buttons on the left to move between rows or just touch the screen.
A preset contains everything you need for one configuration — perhaps a synth, DAW, or something more unusual like a bank of MIDI LFOs or a custom MIDI Clock generator. If required, you can address up to 32 different devices from a single preset. Devices are configured separately and contain information about what MIDI channel they respond to and what port they are on. The unit can store 72 presets and switch between them at the touch of a button. On the newer MkII unit, an upgraded CPU allows you to run up to 12 presets concurrently, which means that even background presets continue to process. The older MkI units could only process one preset at a time. Once you transfer a preset to the unit, you can disconnect it from the computer and use it standalone — ideal for live performers wanting to take it on stage.
Creating your own presets is entirely optional. Electra One have a busy community of creators uploading their work to the Electra One preset library, part of the broader set of Web MIDI tools that communicate directly with the Electra One hardware. Adding one of these presets to your preset library and onwards to one of the 72 preset slots on the hardware is easily achieved using the Web MIDI online interface.
Electra One’s online preset library contains pre‑made MIDI controllers that you can use and edit.
The library contains hundreds of presets, including synth editors, MIDI processors, sequencers, DAW controllers, and useful code examples. Sometimes, when using presets created by others, they need some tweaking to get working. MIDI can be a complex beast, and if the creator has set up their preset to use specific MIDI channels or SysEx IDs, you might have to edit the preset before it will work in your setup. If the preset has been configured correctly, this is trivial. However, sometimes, the preset creator may have written scripts that use specific MIDI channels, which can be more challenging to fix. As a non‑programmer myself (although I dabble in a bit of scripting), I got most presets working, if not instantly then with a small amount of editing. And if you do get stuck, Electra One’s helpful forum community is willing to help.
DIY
Although you don’t need to, if you buy an Electra One, it’s probably because you want to make something specific to your needs. The suite of tools available to assist you in this goal is impressive and, perhaps, a little bit daunting. The good news is that you don’t need to do any scripting to get started.
The online preset editor works via Web MIDI, a browser API that allows your Web browser to communicate via your computer’s MIDI ports. Anyone can create an Electra One MIDI controller by dragging and dropping controls in the editor. The Web editor mimics the hardware screen, and you drag and drop controls to slots and configure them to your needs.
Drag and drop to create your ideal MIDI controller, then make it look pretty with colours and groupings.
There are five control types: fader, list, button, envelope, and ‘relative’ (a special control type for relative MIDI messages). Each control can be configured to send a MIDI message: NRPN, PRN, SysEx, aftertouch (poly or channel), pitch‑bend, Program Change, and Continuous Controller (normal or relative). You can colour and name each control and change pages to fill more slots. Having named pages makes things easier to organise. If you are creating a controller for a synthesizer, you might have a page for oscillators, another for filters, and one for effects. You can also group parameters within a page so that controls are boxed off with headings like ‘Oscillator 1’, ‘LFO 2’, etc.
There is a lot of flexibility in individual controls. For example, let’s say you create a control for a synthesizer’s oscillator waveform parameter. You pick a fader that can scroll through the waveforms available. But instead of simply showing a number, you can specify text overlays for every value, allowing you to type in the name of each waveform and have those appear on the screen instead. You can even draw icons for each item using the built‑in 48x18 pixel image editor, giving you a customised graphic for each waveform.
The envelope control type I mentioned earlier is a special case. It takes up a single slot on the screen but allows you to specify all the MIDI necessary to edit an ADSR, ADR or ADDSR envelope. Touching the slot on the screen opens a graphical envelope where you can drag the envelope stages, making editing intuitive and fast. It’s a shame only three envelope types are available, as many synthesizers and samplers have unique envelope designs. In these cases, you need to use a slot per envelope stage.
The Web MIDI preset editor has plenty of helpful tools. There’s undo and redo. You can easily copy and paste controls and test your creations by monitoring their output in the MIDI monitor. You can even save revisions of your preset and revert to a previous revision if you want to try out different configurations or layouts. The editor feels like a mature development environment and is a pleasure to work with.
Changes made to a preset in the Web environment are not immediately reflected on the hardware. However, a simple push of a button and the hardware is updated in seconds, so there is no discernible gap between editing and testing in the real world.
SysEx & LUA Scripting
SysEx, any intrepid MIDI explorer will tell you, is a pain in the backside to work with. But the Electra One has a set of editors and systems designed to make it slightly less so. A visual SysEx editor is used to set up templates. You use templates because SysEx strings tend to repeat a lot. You can work in hexadecimal, binary or decimal, and the system will convert to whatever is necessary. There’s also a Learn function which listens to the MIDI inputs and learns the message type, making it easy if your chosen MIDI device sends MIDI for the relevant parameter.
Electra One’s SysEx mapper helps you interpret SysEx dumps. Here, we can see where the MKS‑50’s Patch Transpose parameter is mapped inside a SysEx dump.
There are also tools to deal with preset SysEx dumps (as opposed to individual parameters). You can inspect patch SysEx dumps and map parameters to the relevant byte positions within. Again, the MIDI Learn function helps. The result is that the Electra One can receive a MIDI SysEx patch dump and update all on‑screen parameters accordingly. There is one caveat to this, which is that there is no real way to deal with bulk dumps of multiple presets at once. But this is still one of Electra One’s defining strengths. The ability to map SysEx dump bytes directly to parameters is something that many MIDI editors shy away from. My Roland MKS‑50 will send out a SysEx dump of the new preset whenever you change presets. The Electra One will receive this and parse the SysEx, updating all the on‑screen controls to the correct values for the current patch.
What On Earth Is LUA?
LUA is a popular scripting language used in gaming, industrial applications, and some audio applications you might already have heard of, like Reaper, Reason and Kontakt. It is optimised for embedded systems, meaning you can run it on hardware. Electra One’s LUA implementation has an impressive API (Application Programming Interface). An API is a library of pre‑written functions and callbacks you can call upon that are specific to the task at hand — in this case, MIDI control and the manipulation of the Electra One hardware. Using scripting, you can monitor the actions of the hardware, intercept controls, alter anything on the screen, manipulate MIDI messages, and much more.
The online Electra One documentation is exhaustive and impressive. It includes detailed information on the API, LUA implementation, SysEx, and MIDI handling. It’s beyond my ability to describe all the possibilities of the API, but it handles every aspect of the Electra One hardware and the MIDI it can send and receive. In a few paragraphs, I’ll give examples of what LUA scripting can do and leave it there because a full dive into the complexities would fill a book.
There is one LUA script per Electra One preset. This is where you write all your custom functions. Each function is named, and you can call functions from different places. For example, every control in a preset can call a function whenever it is changed. This allows you to interpret and display the data differently if you wish. You can also call functions whenever MIDI is received, whenever a new preset is loaded, when a page is changed, when a particular knob is moved, or button is pressed.
The Web MIDI development environment includes a script editor, debugger, MIDI console and JSON editor (JSON is the file format used to store data). With these tools, you have everything you need to write scripts, debug them, and monitor the MIDI inputs and outputs. A preset’s LUA script is an integral part of the preset and works fully from the hardware once the preset is updated and transferred across.
The final LUA script for my MKS‑50 editor.
In Action
During my time with the Electra One, I wanted to experience creating a preset controller from scratch. I have good knowledge of MIDI but have not done any programming since my BTEC in Computer Science 25 years ago. I have occasionally tinkered with scripts in other languages (Kontakt’s KSP, for example), but LUA was new to me.
I started by downloading and studying a few presets from the Electra One preset library. Even though there was already a preset for my Roland MKS‑50 in the Electra One library, I decided to create one from scratch, allowing me to add some missing features and lay it out differently.
The MKS‑50 uses SysEx to communicate. Thankfully, Roland’s manual has a comprehensive SysEx MIDI implementation chart, so I studied that and figured out the correct SysEx strings for most parameters.
Using the Electra One SysEx editor, you set up a basic SysEx structure, which is repeated for all parameters, and then simply change any bytes to suit the parameter as needed. The process took a while to figure out. I would label it as intermediate‑level difficulty.
The process of drag and drop to lay out the pages and parameters is simple, and I quickly had a configuration I was happy with. After figuring out the SysEx strings, assigning them to the correct controls was simple enough. So far, I had two pages of parameters with a combination of sliders, buttons, customised lists and even waveform graphics copied from the Roland manual.
It was time to check out some scripting. First, I wanted to alter the visibility of some controls depending on the state of others. The MKS‑50 can operate in three polyphony modes: Mono, Poly or Chord Memory. In Chord Memory mode, its six voices can be stacked into a chord with each voice being transposed. I only wanted these six voice‑transpose parameters to be visible when in Chord Memory mode, and hidden when in the other two modes.
As a non‑programmer, my first instinct was to check out some other LUA scripts to see if anyone else was doing something similar. Sure enough, I found a similar function on another preset from the Electra One preset library. It was easy to copy and adapt the script for my use. I had a custom function called chordMode, which, when called, would receive the current value of a parameter (the polyphony mode) and set the visibility of other parameters based on that. The code for this function was seven lines long. The last step was to put the function’s name (chordMode) into the inspector for the polyphony mode parameter so that it could be called whenever that parameter was changed.
I noticed in the same preset that I’d found the hide/show script, another function for displaying MIDI notes instead of numbers. It’s a simple four‑line function that takes a parameter number, say 61, and converts it to a MIDI note name: C#3. I called that function for any parameter that used notes, such as the Key Range for the MKS‑50’s patch.
The next bit of scripting was a bit more involved. I mentioned earlier that two‑way communication is a big part of Electra One’s power, and I wanted to implement this in my MKS‑50 editor. Although this doesn’t necessarily need scripting, I wanted to display the patch name on screen, which would require a custom function.
First, I had to teach the Electra One what the MKS‑50 preset SysEx dumps look like and how to interpret them. Once again, the Roland MKS‑50 manual was invaluable. Every time the MKS‑50 patch changes, it sends out a full SysEx dump of the new patch. I used the Electra One Learn function to capture a typical SysEx dump, and then used its mapping tool to map all the parameters I had already set up to specific bytes inside the SysEx dump. This is venturing into the advanced side of the Electra One’s capabilities. It wasn’t easy to learn, and it took some trial and error to get right, but I got there in the end. The result is that the Electra One always shows the correct values for all parameters when you change a preset, which is something even the original dedicated Roland PG‑300 MIDI controller could not do.
The finishing touch was to script a function to be called whenever a SysEx dump was received. This function would look in a specific location within the dump and extract the patch name to display on screen. Roland didn’t include any SysEx to rename patches remotely; otherwise, I would have liked to include that in my custom MIDI controller as well, but these are the limitations sometimes. Even though I can’t rename patches from the Electra One, it’s still very satisfying to see which patch is loaded without looking at the synth.
Overall, I ended up with a highly functional, specifically customised MIDI controller for my Roland MKS‑50 that is as good as any commercially available controller for that synth, if not better. Making your own controller forces you to better understand your equipment, and the result is customised to you. I was blown away by how well the Electra One worked and adapted to this particular synth. The power of LUA scripting and the excellent Electra One API, which allows you to manipulate both MIDI and the Electra One itself in a huge variety of ways, is very impressive.
The Electra One has the power to be useful to almost anyone with a MIDI setup.
Conclusion
The Electra One has the power to be useful to almost anyone with a MIDI setup. It’s still a very versatile controller, even if you never touch the LUA scripting or the SysEx editor. Some people might not take to the touchscreen, and might want more controls, but I never really felt like having 12 knobs was a barrier to quick editing. And the touchscreen is almost entirely optional if you’re more of a button pusher.
Even after a few months of having the Electra One around my studio, I’m still discovering new ways to use it. For example, you can pair it with something like an Elektron Octatrack to extend the functionality and give you more knobs to tweak during a live performance. The Electra One could be an amazing live performance partner for many reasons.
It’s also useful if you want a DAW controller. There are some quite sophisticated presets in the Electra One library for Ableton, Bitwig and other DAWs that have full two‑way communication, live clip launching, device awareness, and transport controls. If you don’t have space on your desktop for something like the Ableton Push, the Electra One can give you some of the same functionality in a much smaller space.
The Electra One, apart from being a MIDI Swiss Army knife, is also a great way to teach yourself some coding. And those that already know their stuff will very quickly be reaping the rewards. I’ve been very impressed by its abilities, and I’ve barely scratched the surface. It will definitely be staying in my studio to help fight the good MIDI fight.
Librarian?
I mentioned during the early paragraphs of this review that the Electra One could function as a librarian. That is perhaps only partially true. A click of the middle button on the right will bring up the Snapshots page. A Snapshot is a saved state of the current preset editor. You can save up to 432 Snapshots per preset, organised into 12 banks of 24. If you have every parameter of a synth mapped in the controller, you could use the Electra One to store and recall synth presets.
Snapshots can be saved, recalled and deleted from the hardware unit, and the Web MIDI editor also allows you to rearrange, rename and colour them. I said that it only partially qualifies as a librarian because, to fully qualify, it should be able to receive and manipulate bulk dumps of multiple presets from synths, samplers or other MIDI equipment. Currently, there is no way to achieve this. However, Snapshots go some way towards that goal, and the Electra One online manual does mention that the Snapshots editor is still in development, so more features may be added in the future.
Pros
- An incredibly flexible MIDI controller in a small footprint.
- Mature development environment with custom API and LUA scripting.
- A growing library of pre‑made controllers available for download.
- Creating custom MIDI controllers doesn’t have to be complicated but...
Cons
- ...there is a steep learning curve if you want to make the most out of it.
Summary
The Electra One is a customisable MIDI controller based on a large touchscreen and 12 touch‑sensitive encoders. Its ability to integrate new features via an impressive API and LUA scripting might just make it the most flexible hardware MIDI controller on the market.