Firmware v3.6.0 for mkII

A new firmware version is now available for download. For the complete release log, please visit the Electra One App.

The highlights include:

  • Added the ability to create custom controls with their own graphics and touch processing. Examples on how to use this feature will be provided shortly.
  • Improved USB host functionality. Two devices can now be connected simultaneously using the USB hub. This update has been tested with various USB MIDI devices and hubs. If your device is not recognized or if you encounter any issues, please let us know.
  • Enhanced LCD touch sensitivity and smoothness.
  • Numerous bug fixes and improvements.

Heads up: I just put the firmware in the device and tried to boot from it and the device froze and turned into a brick :smile:
I’ll try to recover, but there may be something odd about this one.

All good, user error :slight_smile:

1 Like

hi @buyallthecontrollers, I can see that quite some users are already running v3.6.0. I’d suggest to re-upload the firmware file to the controller and try to flash it again. If it did not work, PM/chat me.

Hi @martin, I’ve just reconnected the device in USB mode and the file was 0-byte… so it was a user error :slight_smile: . I’ve copied the file again and this time it works.
Still no luck with Win11 though.

1 Like

I am preparing an update of the bootloader. It should resolve the Win11 issue. That hardest part is to make the process really bulletproof. It the bootloader update fails, the hardware can be really bricked :slight_smile:

1 Like

Yes I also had problems with USB disc mode. Opened it up and just copied the new firmware directly to the SD card.

weirdness - not sure if it is related to the mk II, changes for 3.6.0, or changes from 3,5,4, but …

for some reason, it appears that if I do a patch.onRequest() and then do a patch.onResponse(), the sysex dump I just received gets echoed back immediately through the MIDI out port.

I put a hard return statement in the onResponse() , tried running it disconnected from the PC, tried 3.5.4 and 3.6.0 and in all cases, it appears to still be reflecting the data back out.

Anyone else seeing this? I found it because the Lexicon PCM 80 doesn’t let you overwrite factory patches, so when I’m recalling a factory patch, I see the error on the PCM about not storing it.


Upgraded my mkII to 3.6.0 and works well with the Ableton Remote script. @Martin There are still two items on my wishlist

  • make sure that override value text SysEx implementation | Electra One Documentation actually also works for ADSRs (in other words, the numeric-value-id is actually used for something; this would make complex synth presets so much nicer!
  • a way for owners of a mkI to also preload presets to their E1 in the ctrlv2 folder

@Martin P.S.: Is there (or will there be) a way to also modify the graphical behaviour of ADSR popups?

On the topic of Adsr’s, maybe we could have some other versions of it like AD, ADR,AR,DAR, DADSR, DAD, DRADSR (delay, repeat + adsr) or the likes

1 Like

@Martin I’m playing with the ADSR on firmware 3.6.0 and if I set a formatterFunction for say the Sustain, the value shown for that control is never updated when displaying the popup and turning the pot: it always shows the value just before opening the popup. I.e when closing the popup, changing the value for sustain within Live and then reopening the popup will show the new value for sustain, but again it will not change when turning the pot.

This is noticeable and very well received, thank you!

1 Like

So, did some quick testing - it happens across multiple presets — BUT ONLY ON the Mk II hardware.
If I plug in a Mk I, the sysex data received from a device does not get echoed out again.
However, the Mk II always echos out the received sysex data. in some cases, it is completely transparent, but in others, it causes weird issues.

@martin – any idea why the Mk II would be doing this?

just to make sure. Do you have the MIDI IO in → out forwarding switched off?

I will look at it but I just want to make sure it is not a configuration thing.

I will check that for both Electra Ones I have been using for testing.
As a side note - it did appear to be happening on the Mk II for both the 3.5.4 OS and the 3.6.0 OS (and the Mk I is running 3.5.4) so I don’t think it’s related to the OS changes.

It makes sense it would be something like a configuration issue, but usually I don’t touch those settings.
I will update later today when I am back in front of the Electras.

so I’m more confused than before.

I found out the reason – at some time in the past, I had the bottom 2 as enabled, but then disabled them.

HOWEVER - the configuration seems to be stored with the preset. So, every time I open up the PCM 80 preset, it resets the controller page back to the enabled state.
If I load other presets, it shows disabled.

So, is there a way from inside the preset to determine what’s going on with the configuration or, maybe be able to save the preset independent of the configuration?

Problem with value:setRange() ??

so, I’m trying to use setRange like this:
and seeing errors.

Doing something wrong or is there another issue?

         local ctl = controls.get(i)
         local valId = ctl:getValue("value")
         local curVal = ctl:getValue("value"):getMessage():getValue()
         print("ctl (i) = " .. i)
         print("curVal = " .. curVal)
         local myMin = valId:getMin()
         local myMax = valId:getMax()
         local myDef = valId:getDefault()
         print("myMin = " .. myMin)
         print("myMax = " .. myMax)
         print("myDef = " .. myDef)
         -- forcing a formatter() function to update
         if (curVal ~= myDef) then

17:29:33.887 lua: ctl (i) = 41
17:29:33.888 lua: curVal = 0
17:29:33.889 lua: myMin = 0
17:29:33.889 lua: myMax = 1365
17:29:33.889 lua: myDef = 0
17:29:33.890 error running function 'runFunction': ctrlv2/slots/p000.lua:2815: bad argument #2 to 'setRange' (number expected, got nil)

god bless statically typed programming languages :slight_smile: you use MyMax variable in the setRange() call while you declare and assign myMax. ie. they differ in the first letter.

1 Like

I stared and stared at that for many many minutes before posting looking for that exact type of problem.

Grrr. Where is lua_lint() when you need it? :slight_smile:

thanks for taking the time to look it over.

Actually, I was thinking some more about this.
In the web UI when editing LUA, there’s a nice feature where if you double-click or drag-click on something, all occurrences will be highlighted in the file and the scroll bar on the right shows you approximately where all the matches are located. I use this all the time jumping between table and global variable declarations and the locations where I use them.

It would be cool if that highlighting was context and case sensitive by default. The way it is now (I think) is that if I double click on the word “error”, every place the word error is found is highlighted, including places where I have “myErrors” “errorFile”, and even in comments like “-- remember to check for errors here”.

Maybe a shift-double click or control-double click to be case and context specific or something? Because in that scenario, it would have shown me the mismatch by not highlighting the others.

I stared and stared at that for many many minutes before posting looking for that exact type of problem.

Grrr. Where is lua_lint() when you need it? :slight_smile:

thanks for taking the time to look it over.