Firmware / Web editor beta testing

I am currently busy with making bigger changes to beta. These changes are related to new features of the firmware. There might be moments when beta is affected by that.

I have just updated both beta website and the beta firmware so that they work nicely together. This means that 3.0-a.20 is available on https://beta.electra.one/. Zipped file is attached below.

3.0-a.20 is collection of changes that I made recently, amongst others they are:

  1. added support for new types of midi messages. poly and channel aftertouch, pitchbend, song position messages types were added. This comes with an adjustment of the web interface too. A new way is that one picks the type of control (fader, list, pad, envelope) and the message type is selected in the Control properties.

  1. controls use 24-bit RGB colours. ie. the limitation of 6 fixed colours is removed. Note, electra internally uses 16-bit RGB565 scheme, therefore conversion affects the final colour. The web editor provides now larger selection of colours. I am heading towards having number of colour sets compatible with other software (Electra, Ableton, Bitwig, Novation components, etc).

image

  1. control variants are now supported. It is possible to pick different visual styles of given type of control. Faders come in two flavours: thick and thin. Lists can be either the lists with dots or a button styly type (tap switches between values). Note, the dial style fader is not accessible yet - not easy to fit the graphics in the tight space of the control…

image

  1. control modes are supported now. For pads, momentary and toggle (it was already there). For faders unipolar and bipolar operation can be selected.

image

  1. An option to specify if NRPN messages send the RPN reset bytes has been added.

image

  1. incoming SysEx and SysEx MIDI learn support virtually unlimited messages. I tested that with 4k TX7 bank transfers. It works, although the web editor needs quite some time to process and display long midi-learnt messages.

  2. MIDI notifications are sent on page, preset, bank switches. There are more additions to the SysEx API. More info is available at SysEx implementation | Electra One Documentation

The Ableton integration (developed by @jhh) seems to work nicely with this firmware.

I still know about number of glitches that need doing. Above has been tested on both MacOS X and Windows and seems to be fairly stable. The website app needs doing too.

The firmware file for those who have troubles with update on the web:
firmware-3.0-a.20.img.zip (316.6 KB)

15 Likes

Is it possible to like a post more than once? :grin:

Amazing list of updates. Thank you so much for balancing work and life despite the difficulties.

4 Likes

Yep, Martin,

great work and thank you. I’ll be testing these features asap

1 Like

quick question - I want to call control:setColor(), but to do that, I thought I needed to get the control object and to do that I need to call controls.get(ID) where ID = the control ID.

I have 1 control on screen in the first position, yet controls.get(1) is failing with the message “Control does not exist”

pls reload the preset now. I am working / testing new control references now.

lol – hard to keep up with you Martin.

well, I can see that control:setColor() still accepts the predefined colours only. I will change it to RGB format.

I wasn’t going to bother you with that one for a while. That’s an aesthetic tweak, not functional, so less important.

1 Like

When uploading a preset, the E1 responds with 0xF0 0x00 0x21 0x45 0x7E 0x05 0xF7 (unknown SysEx) before ACK 0xF0 0x00 0x21 0x45 0x7E 0x01 0x00 0x00 0xF7. What gives?

1 Like

It is a notification on change of the internal list of presets. Just added that to the docs: SysEx implementation | Electra One Documentation

Also added notifications on snapshot list and bank changes. There are also calls to query the list of presets and snapshots. I will add these later today.

3.0-a.21 is on beta.

It brings the following features:

  • lists have have more than 256 values (fixes Adding a 256th option to the list control causes a full crash)
  • preset list JSON has version information
  • predefined Lua globals for colours (WHITE, RED, ORANGE …) reflect the new 24bit RGB format
  • fixes the issue of “Reset default control set” feature

The documentation has been updated and provides info on querying the preset list. An option to search the documentation has been added.

@NewIgnis would you be willing to check if Yamaha TG33 preset can handle lists with more than 255 values?

The firmware is available on beta.electra.one. Here’s the firmware file for those who have problems with the update from web -
firmware-3.0-a.21.img.zip (316.7 KB)

1 Like

Am I missing something? I thought I just needed to have patch.onRequest() and patch.onResponse() in my LUA for it to work when I pressed Button 4.

This is for a new template.

I see the message “onRequest not defined” in the log. I’ve tried editing the Request and Responses sections and also editing the JSON section and none of it seems to be working exactly right.
Sometimes I can get the patch request sent, but onResponse never seems to trigger.

What’s the desired way to just use the onRequest/onResponse I have defined in LUA (or is that not how it’s done now)

1 Like

Trying to have a template send data out MIDI port 2, channel 1. Downloaded the updated template to the ElectraOne. When I move the controls, I see the MIDI 1 I/O and USB Host texts light up indicating transmission, but MIDI 2 Out stays dark.

Is there something else that needs to be configured for that to work?

1 Like

Yep the TG33 accepts the 256 values now !

2 Likes

There are a few conditions that must be met in order to fire the patch callbacks:

In order to trigger the patch.onRequest() the device needs to have at least one control assigned. If there is no control, the device definition is not transferred to the controller. The device structure is passed as a parameter:

function patch.onRequest (device)
    print ("Requesting patches: device=" .. device.id);
end

if there are 3 devices used in the preset, the patch.onRequest() will be called 3 times:

image

The patch.onResponse() is triggered when the device patch response header data is matched. That means you need to have the JSON response header defined in the preset, otherwise electra cannot recognize that the incoming SysEx message is a patch response.

function patch.onResponse (device, responseId, data)
    -- print the header information
    print ("device id = " .. device.id)
    print ("device channel = " .. device.channel)
    print ("device port = " .. device.port)
    print ("responseId = " .. responseId)
    print ("manufacturer Id = " .. sysexBlock.getManufacturerSysexId (data))
end

with the following patch definition:

image

results in:

image

when sendmidi dev "Electra Controller Electra Port 1" syx 01 02 03 04 is issued.

I hope it helps!

1 Like

hmm, just tested that with CC and SysEx messages assigned to a fader control.

When the fader’s device is configured to be on Port 2, I get messages on that port. When I update the device to be on Port 1, messages go to that port correctly too. Can you describe what you are doing in more detail? Thanks!

Thank You for the Update! :pray:
If I turn on a pad (toggle), only a strip on the left edge of the pad will be “light” and the “subscription”. is that right?

1 Like

yes, it is an intentional design thing :slight_smile: I am still trying to find good way of displaying the toggles and momentary pads.

Thank You!
When the pad is turned off, the “inscription” is black, so I don’t think it’s that easy to read.
the new colors are very nice :wink:

Crap, i think I was using a virtual control and had the midi.noteOn message hard coded to use port 1.

User error