Documentation for macros?

Is there documentation for how to add macro functionality to the preset files? The documentation mentions it’s supported by EPR v2, but I haven’t seen any examples. It would really help to improve the preset I’m working on if the controls could be wired together, or if formulas could be applied.


it’s not on the documentation because it is not implemented yet IMO :wink:

The Electra One project consists of two parts: the controller and the editor software. There are certain features that the controller supports but they have not been implemented in the editor yet. There were bitmaps mentioned on the forum recently and macros now. These are examples of the features that are not implemented in the Electra editor yet. The controller supports them though.

The idea of macros is very simple at present time. It is based on the idea that the knob is sending info about increment/decrement of its position. If you map two controls to the same pot - using the input JSON object, the knob change will be broadcasted to both controls and each of them will apply it according to their min/max settings.

We plan to add formulas and more complex processing at some point.

The current idea can be seen in Macros demo

1 Like


A macro knob can handle only 2 controls or more (how many max?) I’m thinking about using 1 Macro knob to change maybe 6 cutoff values linked to different synths. Or same idea with EQ bands. Thanx

In case macros were limited to only 2 controls, maybe you could implement a link between controls.

Example: i have a knob controlling a cutoff value (A) on page one; i have other cutoff controls (B on page 2, C on page 4 and D on page 5). I’d like to link A to the other ones (B, C, D) so that when i turn the knob controlling the A, the other ones are controlled at the same time.

With a link system you could even get rid of the macros, if that makes sense of course. Thanx

1 Like

Macros - which basically means assigning on pot to multiple controls - do not have any limits. Although, when having 12+ controls assigned at once, there is a noticeable visual lag.

The link function you are describing is kind of on the plan. I wanted, however, to have it as a run time option. ie. you could link two controls using a mutli-touch. Once the controls are linked they would share the pot. I hope you catch my drift. This can be implemented after the multi-touch is added to the firmware.

Perfect! and no visual lag up to 12 is good enough (for me). About multitouch, would this mean that you could link controls that are on the same page only? thanx

Good point :slight_smile: I can now imagine even better ways of linking. Using a double-tap or a long-touch. Thanks :slight_smile:

1 Like

Not trying to push the idea (as mentioned here)of having a unique ID for a control, but if a control had one it would be easy to link controls in the editor. Link current control to a specific id (or more) of another control.

Hello all.

Since yesterday, I finally found the time to deal with the E1 and my enthusiasm is steadily increasing - simply an insane device concept! I find the forum and the community extremely helpful and friendly, so a happy and respectful greeting to everyone here! :slightly_smiling_face:

Now to my first problem, forming macros.
I’m fine with the JSON format, no thing. But I’m getting nowhere with the reconstruction of the macro example on github:

When I import the example into the Electra One app and transfer it to the unit, I see the following layout both in the editor and on the E1:

In the docs however you can see a much more compact layout, also the top four faders have no labels. In the json you can see that the ‘input’ object has the same pot assigned, just as Martin described above. Still it doesn’t work and I wonder what I’m missing?

Hi Ingo,

welcome here! :slight_smile:

The Electra project basically consists of two parts:

  1. The hardware controller with the firmware
  2. The editor(s)

The preset files on the github are related to the firmware, ie. if you transfer any of those presets to Electra, using the Electra sysex messaging, it will run. If you look at the documentation you will see that there are many things possible but you will not find them in the the editor. We keep the SysEx / JSON open and documented so that other developers or users with technical knowledge could use it.

The editor running on is developed by us (@tomas is the man behind it). As mentioned above it does not support all the features of the firmware yet. There is, however, a tool on the that allows user to upload the raw JSON files. You can find it at:

Electra One App Development Sandbox

It is meant for users who understand and can work with JSON. Sort of playground area.

The main issue of the macro preset is that it uses the freestyle positioning of the controls and assigment of one pot to multiple controls. The app editor is now very grid oriented, ie. it uses the same JSON format but forces controls to stay in the grid locations and forces 1:1 relationship between the pot and the control.

I hope you catch my drift :slight_smile:

Hi Martin, thanks a lot! :slightly_smiling_face: I understand the concept and also the idea of a grid oriented layout that is offered in the existing version of the editor, I just didn’t catch the hint to use the sandbox for uploading own modified json…
As expected, I just tried it out and of course it works perfectly. :+1:

Hi guys, any news regarding macros implementation in editor ?

I wonder if the plan is to do this with Lua extensions?
(there is now the ability to edit the lua script in the editor)

I’ve not quite followed the discussion on what is required for macros…
but I think to be useful, they need quite a bit of flexibility.

I understand the basic idea is that you want to twist one knob, and it change the value multiple controls.
but the issue I see is, how should it change the values?

imagine I have a performance/macro knob called ‘envelope’
I might want that , as it is increased to increase attack and decrease decay. and as it decreases to do teh reverse… e.g. ​attack = macro1 , decay = macro1 * -1

or perhaps some of the parameters being changed by the macro should increaase at different rates.

this is all something that could be done very easily in LUA…

i get that lua is not for everyone, but I think we could share examples of how to do these kind of things.

as I said, im not fully up with what is planned… and Ive not tried to do these macros as lua extensions, but hopefully its already possible?

This is definitely possible in Preset Lua extension. I did something like this for the RM50 preset that I am currently working on. On changing of a channel control, I add a Lua function:


Inside the function, I do something like:

function channelChanged(valueObject, value)
currentChannel = channels[value + 1]
– do something here

The logic could easily set other param values like:

parameterMap.set (1, PT_VIRTUAL, 1003, someValue)

Naturally, the setting of the param could be driven by the value of the current knob that was twisted, if that’s needed. These params could be CCs, sysex, virtual…

Basically, I tried to have a look at what has been mentionned in this thread but it lost me fast…I have to admit I want to make music and don’t want to learn to code…My bad here !
In that matter, examples would be greatly appreciated ! :slight_smile:

Just for clarification and an hint on possible useage, I uses the has synth controller on some pages but other pages are here as milestones for “song states”.

Before the I was using a morning star mc6 which allowed to send 16 different commands per switch, per state (on/off). Each command could have a different midi channel assigned and 1 state didn’t have to mirror the other.
So I could press switch 4, and send a cc to channel 8 while sending a pchg to ch2 and when I pressed again i could send a stop message on ch12 and switch the value of the cc on channel 8 sent by previous press…

What I would love to see is the hability to have an init switch on a page for a “song state”

For now with my novation summit, I have to use 4 different buttons to grab a specific patch :

Two to select mono or multitimbral patch category (you need to use nrpn on two different channel for that) then a button for bank select then a pchange command. 3 or 4 Presses on 4 different buttons…
Then repeat for every device connected ( 1, 2 or 3 buttons per device depending on the device itself )

  • Another exemple could be with an octatrack with different record buffer to arm simultaneously…

  • Global mute of a device by muting each individual track at a press of switch…

  • We could imagine a list which corresponds to different states of a song, intro,chorus,verse etc…Choose what you want in the list, everyone’s home !

This doesn’t involve scalling datas differently depending on where they go, that could easilly be left to a midihib or a bome box connected behing the
I hope what I wrote makes sense and does not make me look to stupid…

1 Like

Hello there.

I’m bumping this thread about macros or LUA scripting.

I’d like to use the all mighty to make some sort of virtual chromatic keyboard for the Roland TR-6/8S beatboxes, which use the tune value instead of notes value for pitching samples and synths sounds (naughty Roland).

People even made cheatsheets and PoC for this:

The workaround to have this working for each part is pretty basic:

*send a CC for Tune value
*send a Note On value

Ideally, we’d have a part select LIST control which would hold the matching CC and Note value for Tune and Note - which are unique per part, and then 12 NOTE controls that would depend on the part selected in the LIST control.

I’m a programmer (albeit a lousy one). Hence I’m quite sure it can be done with LUA scripting or JSON definition files, but I’m with KaOsphere on this one.

It would so much simpler for non programmers if we just had in the editor a “RAW” type of message assigned to a PAD control, were we could input some raw MIDI bytes sequences at will. It could be derivated from the SysEX message type, were some values could be variables depending on another control value.

MIDI is quite a simple protocol. That what makes its beauty and the fact its still there after 30 years. The implementation into modern tools should retain this simplicity when possible.

I’m so impressed by the maturity of the e.2 and its companion tools that I’m almost feeling ashamed to ask for such a simple thing.


“values”:[ {“id”:“value”,“message”:{“deviceId”:1,“type”:“cc7”,“parameterNumber”:1,“min”:0,“max”:127 },“min”:0,“max”:127} ]},

I have been playing with the macros and so far so good.
max and min values work but I cannot inverse them.
I am trying to make that when one parameter decreases that another one decreases but it does not work with min 127 and max 0.
Is there a way to do this?

It is not easy to come with good macros so a lot of experimentation is required.
I am trying to make a sort of performance page.
So far increasing both fx dry/ wet and env release or both the env release of vca and vcf seem cool.