Development plan

Could someone clarify “virtual parameter” please? thanx guys

This is a good example to explain virtual param: Firmware 1.5 - #7 by martin

1 Like

Just an update on this one.

A teaser first:

With numerous feature requests after the last production batch I have decided to find a way to make it possible for you users to implement it by yourself :slight_smile:

Making the beta firmware a regular release has been postponed to make it possible to add a Lua scripting language. I tried to design the Lua interface to so that it addresses the recurring pains and allows scripting of the features on the list above. The beta is available for download, but, of course, it is meant for testing purposes only so far. Of course, the scripting is not for everybody. It is, however, fairly simple for many to spice up the scripts and also it will allow me to be more efficient in providing help.

A good thing I would like to share with you is that current beta firmware allowed me to:

  • Update presets at the runtime. This means to show and hide controls, change their labels, colours, groups, etc. This is meant primarily for integrations with DAWs. With this DAWcan rearrange presets to match the channel strips or plugin parameters.
  • Update preset layout based on values of particular control (see above)
  • Insert calculated bytes to the SysEx templates. This is resolves the long-awaited possibility to adjust the channel/device bytes in the SysEx messages, add possibility to write own checksum calculators, etc.
  • Send multiple MIDI messages with one control and trigger them on conditions
  • Change channel and port assignments dynamically with controls (for example with a list)
  • Allow groups to be rectangular
  • Implement sending of Midi messages and / or modulate parameter values on MIDI clock or make Electra a source of such generated data. This allows implementation of any type of MIDI LFOs, etc.

Whoever wants to test, please check the information at Please do not use it for anything other than testing. As of today, I will not be adding any new features to the beta, just fixing bugs reported by testers and on the forum. Once it looks stable enough, it will be released as a regular version.


Wow - that looks like a great direction to solve all the requests!

1 Like

about Windows and Midi multiclient drivers I found this:

One great feature of the new API is that it is multi-client. As long as all apps with the port open are using the Windows 10 UWP MIDI API and not the older Win32 MME or DirectMusic APIs, they can share the same device. This is something the older APIs don’t handle without custom drivers and was a common request from our partners and customers.

Finally, it’s important to note that the Windows 10 UWP MIDI API works with all recognized MIDI devices, whether they use class drivers or their own custom drivers. This includes many software-based MIDI utilities implemented as drivers on Windows 10.

1 Like

Last bits before making the firmware github repo public. 5 point multi-touch for all Electras!


Yeah, but problem with this is, that nobody (as in DAWs) uses the new uwp api. But they are working on bringing multi client to the old drivers as well.

1 Like

Hi @martin,

I know you are super busy, but a LUA question (request?)

Could we get access to Overlays (Lists), as in being able to add/remove Overlay entries (List Items), or create new Overlays (Lists) via the Preset Lua extension.



Currently, one can switch the lists. Modifying the lists is not possible. The reason behind that is that lists have a static definition and modifying them would cause memory fragmentation. It is an explanation of why it has not been so far. It is not that trivial to do :slight_smile:

The management of lists will be change as part of porting the ctrlv2 app onto the new opensource base firmware. Once it is done, it should be much easier to implement. It is definitely on my todo.


If I understand correctly, this pinned topic was designed for the users to follow the development plan of the E1. It seems like the last post was almost two years ago.

@martin why not continue this thread letting the users know what is the next upcoming version and the features that are included?

otherwise, I don’t see why the thread is pinned and not archived; it’s a little confusing for a new user like I am. I expected an up-to-date software (and maybe hardware) development plan


So cool! I’ve been gone awhile. Has this been implemented? I would love to be able to do this.

1 Like

I think the list topic is my biggest challenge.
Sometimes you have lists in a list.
For example the Z1 there is list and one option is an external modulator that you need to select from a sub list.

The Z1 has many different oscillators and each has its own set of unique controls.
So changing oscillators should change all the controls, sysex, names etc.

But I think for the dp4 it works different. There every control per fx block has the same sysex code but different names and ranges for the parameters.

Also I think what would really help is a new list type that includes a list of controls.
Instead of hiding and showing controls there could be a definition of invisible controls that are only accessed via that list.

Do you have some idea already how to deal with lists in the future?

1 Like

yup, that has been implemented quite a while ago. It refers to Lua scripting.

Current beta has support for defining lists in Lua, the preset JSON also supports having multiple lists that are not bound to any control. As the first step I am adding an option to switch between predefined lists. I think that should cover most of the use-cases. It is also portable onto mk1.

I am still not sure about making it possible to edit list items on the fly.

is there a Lua template/tutorial I can use to get started with this?

Not sure which aspect of it you are wanting but the Lua documentation is here:

@adamc thanks. I’m not sure what it’s called. It’s in the video in one of Martin earlier post. It shows him changing an option control and it hides the layout for the previous option and shows the layout for the new option in the same location.

I haven’t gotten into fiddling around with the controls APIs but if you look in:

It’s probably using a Lua function on the first control to determine what the other 3 should be.

setVisible would handle the hiding/showing for 1-3 other params and then you can also change the names and ranges in a similar fashion.



I don’t know any about Lua or programming, but I figured I’d give a shot and learn something new.


To get started I see two separate things to get familiar with.

  1. General Lua scripting
  2. Electra Lua Extension

General Lua scripting
Lua is a simple programming Language that can be used on almost any “computer based device”, including your home computer :wink: There are plenty of good tutorials around (google / youtube helps here). Personally, I like the this one: Lua Tutorial: All the Basics. It really has all the necessary basic and nothing else. Please check the note down below regarding that tutorial.

The beauty of Lua is that you can play around with the language on your computer without E1. There are tutorials on how to install and use it on windows, mac, ios. Google/Youtube helps here too. Note, you do not need to install Lua your computer to use it with E1. It just might make it easier to get familiar with the language and run any of the example scripts you will find on internet.

Electra Lua Extension
Electra Lua Extension is basically an “installation” of Lua scripting in your controller. It supports vast majority of Lua language and modules. The “extension” part adds several extra modules and functions to the basic Lua. These extras provide access to Electra One specific functionality, such as working with MIDI, controls, etc.

Once you know how to construct Lua functions, use variables, loops, and conditionals, the Lua Extension docs will become extremely handy. That documentation describes all the functions and provides many examples on how to use them.

Lua Extension web editor
To edit and run Lua you can use the Lua editor that is built-in to the preset editor. You can open it by clicking on to the icons marked below:

Ouput of prints will show up in the Log window underneath the editor or in the large log window in teh Debugger tab. info.setText() Lua function will display the text on the controller:

Note on All the basic tutorials
There are two things that will not work on E1 when you test stuff from the tutorial:

the io module is not present on E1. It means that when you call eg. io.write("hello"), you will get an error. Use print("hello") instead. is not supported either. You need to get your input from controls, midi, events on E1 controller. For learning purposes if you have anything like food = in the tutorial, you can replace it with food = "SF garlic noodles" or amount = 10. It means you supply the value in the code, instead of reading it from user input.

the os module is not preset on E1. There is this bit in the tutorial: os.execute("sleep " .. tonumber(time)). It implements a wait. You can use helpers.delay() function on E1 instead.

I hope this helps!