Firmware / Web editor beta testing

Changing group name raises an error on the E1.

When sending, eg the LUA command local group = groups.get(20)\n group:setLabel("A-Return") to the E1, it returns the following log messages

processElectraSysex::handleElectraSysex: execute Lua: "local group = groups.get(20)# gr###"
runLuaString: error loading file: error=[string "local group = groups.get(20)..."]:2: syntax error near '<\127>'
1 Like

@jhh, I have a trouble with replicating this one. I have configured two devices, one on port 1 and the other on port 2. Each has one request defined. When I preset the Patch Request button, I can see both request messages going out. Would you describe the issue a little bit more? Thx!

Hi Martin, I deleted the original message because as I said later, the message is actually sent when pressing PATCH REQUEST but only on Port 1. (i.e. not on CTRL) However, there is something strange going onā€¦

As you know I use MidiPipe to merge Port 1 and CTRL into a single output MidiPipe Output 1. This worked flawlessly on the old 2.2 firmware. On the 3.0 beta sometimes (but not always!) MIDI Pipe stops forwarding MIDI messages that come in on Port 1 after I send the following SysEx out on Port 1: F0 00 21 45 7E 7E F7 (this is message I created to send out whenever the PATCH REQUEST button is pressed). See the following screenshot: the CC message sent before this SysEx is copied to the MidiPipe Output 1, but the SysEx itself, and any following CC messages on Port 1 are no longer copied. Restarting MidiPipe makes it work again. (This could be a MidiPipe bug of course, but it does indicate that something changed in the firmware that triggers this.)

1 Like

ok. I will take a look at the other two issues reported: the slider value and the list defaults. I will review this one in more detail afterwords. At this point, however, it might be already easier to implement sending of responses on the same port as the original request was received. That would basically remove the need for the MidiPipe.

True (although it might be worth investigating nevertheless as it is a signal that something strange is happening when sending that message).

Also, there is the syntax error message I get when setting the group name

yup.

the group name issue is fixed and ready to go. I wanted to release it with other fixes, but if you need it, I can put it on beta already. It is a minute of work for me. Just let me know.

No need to hurry. Actually the most important thing for me is an update of the documentation so that I know

  • how controls can reliably be addressed (to set names and values)
  • how to set the displayed string value of a control
  • the options I can set in the preset to control the formatting of the control (in particular whether there is a variant of a slider that doesnā€™t automatically show a string value but only just the white bar, depending on min, cur and max MIDI values)

hmm, loaded the ChannelEq.epr, added the Lua function.

sendmidi dev "Electra Controller Electra Port 1" ch 11 cc 1 64 cc 33 0

gives me 0.0dB

Hi Martin,

I donā€™t understandā€¦ I definitely see the behaviour I described. Attached a full MIDI dump (with fake .txt suffix to allow upload) of selecting the slot, uploading the preset, and setting the values (all Gains not showing a string for their value).
ChannelEq-dump.mmon.txt (382.5 KB)

Sending the sendmidi command you cited does nothing (i.e no value shown). However, when I do sendmidi dev "Electra Controller Electra Port 1" ch 11 cc 1 64 cc 33 40
(showing 0.1 dB) followed by sendmidi dev "Electra Controller Electra Port 1" ch 11 cc 1 64 cc 33 0 it DOES show 0.0.dB

1 Like

Something else: while debugging this I noticed the following.

When selecting a slot (for uploading a new preset), the E1 actually recalls the current preset and (unlike version 2.2 of the firmware) sets the default values AND sends them out over MIDI. (Which for the Ableton live script has the annoying side effect that when selecting a new device all parameters of the previously selected device get reverted to their default value :wink:

so, todays chunk of work. 3.0-a.7 is available on beta.

fixed

fixed

Responses to Electra SysEx commands are now sent back on the same port as the command was received. I still need to make the code tidy, but the idea is implemented there. I just gave it a quick test ride (E1 ā†” Ableton) without the MidiPipe and it worked. I mean the Mixer and loading the plugin presets. I cannot guarantee it is 100% ok, but it is worth checking. I must say I really like this Ableton integration.

Iā€™ve seen it, I will fix that tomorrow. Also I will leave the work on slider labels for tomorrow.

yup, I get it, but I need to add that functionality first :slight_smile:

added to the todo

I have already found a good web based editor for programming (line numbers, formatting, syntax highlight). I will replace the simple editor with that. It will be done, however, after we have 3.0 out. But I totally agree that tracking the errors is a nightmare.

1 Like

for now, I have a dev env like Zerobrane lua studio open while testing. Just copy the lua of your preset in it. That makes for easy referencing of those line numbers, what the E1 currenlty isnā€™t doing .

Yes, looks good without MIDI Pipe so far. A few glitches (although some may be intentional, and none are showstoppers)

  • Bummer: LOG messages only sent on CTRL port

  • Selecting a slot sends two ACKs

  • The preset changed message
    0xF0, 0x00, 0x21, 0x45, 0x7E, 0x02, 0x05, 0x00, 0xF7
    in response to a select slot
    0xF0, 0x00, 0x21, 0x45, 0x09, 0x08, 0x05, 0x00, 0xF7
    is sent over CTRL (not the port over which the select slot was received)

testing the Matrix 1000 preset on the newest (7) version
The 4 controls of an envelope generator canā€™t be controlled anymore. Whatever you assign the control to, seems like only the Decay part is responding

3.0-a.7. In general itā€™s nice to see the controls look upgraded without me needing to make many changes. However, in my tc 2290 preset, I have a page that displays calculator-style keys and when you press Enter, it jumps back to Page 1, Control Set 0. That is locking up the E1.

Here is the small function:

function sendCalcKey(ValueObject, Value)

   local message = ValueObject:getMessage()
   local keyNum = message:getValue ()

   print(string.format("key value = %d", keyNum))

   if (keyNum ~= 15) then
      midi.sendSysex(MIDI_IO, PORT_1, {0x33, 0x00, 0x05, 0x00, keyNum})
   else
      midi.sendSysex(MIDI_IO, PORT_1, {0x33, 0x00, 0x05, 0x0F, 0x0F})
   end

   if (keyNum == 11) then
      pages.display(1)
      pages.setActiveControlSet(1)
   end
end

I know this is just human nature to want this, but I canā€™t help asking.

Now that the controls can cleanly display a wider range of values and values with more precision, Iā€™d love a way to quickly set the control to the default/0 value. I find myself now spending more time carefully dialing forward and back to change it from -1.7 ā€¦ ooops too far, now itā€™s 0.8 ā€¦ back to 0.0

It would be great if maybe a button combo like holding down the appropriate Control Set button on the left and then tapping the knob/screen of the control to set it to the default that was programmed in the control.

I thought about a double tap, but those tend to be tricky to cover all userā€™s motor skills and the natural variances in the hardware.

1 Like

It used to be a double tap in the previous versions and that works great! Use it all the time

2 Likes

I thought there was something in place before. Maybe it was just my inaccurate tapping that was having no effect.

2 Likes

@Martin,

can you give a general idea of what should be solved in 3.0 or will be solved in 3.0 from the following list? Because then Iā€™ll start tweaking clones of those existing presets and verify its outcome in beta:

For the Notes Splitter

  • issue: running out of memory
  • coloring unused controls darker
  • when changing pages, always move the focus to the upper part

For the Sequential Prophet 6 and OB-6

  • ability to process longer received Sysex messages, so the patch parsing can be made to work

Oberheim Matrix 6 / 6R / 10000

  • the ability to also control some global synth parameters such as the Vibrato LFO, but globals save doesnā€™t work yet as sysEx messages to send are limited to 256 bytes

For the Korg 03R/W and Korg KingKorg

  • bug: setName is temporarily displayed as a groupname on all the pages dd 20220315
  • enabling setName or setColor freezes the preset dd 20220313
  • instead of a control add a fixed text box on a page

For the Roland SE-02 and Deckardā€™s Dream MkII

  • allow a received CC value for a list control to jump on the E1 to the nearest value the list has, but without resending the obtained value back (if not , the E1 would lock you to the value)

Korg NTS1

  • ability to retrigger control functions when recalling a snapshot (so the hiding functions work correctly)

Independent of presets

  • Option to choose for simplified NRPN messaging (for older devices)
  • perhaps some new lfo functions we can start to play with :slight_smile: ?
  • assign a preset to categories for the preset library
2 Likes

Iā€™m trying out the setColor and setName functions in 3.0 . It didnā€™t work previously , but I believe the logging behaviour is different this time.

The test: when I change a preset , I parse the program name characters and assign each character to a control, onto which I add a displayChar formatter.

function displayChar (valueObject, value)
local control = valueObject:getControl ()
ā€“ control:setName (string.char(value))
ā€“ if value <= 32 then control:setColor(RED) else control:setColor(WHITE) end
return string.char(value)
end

With the code above, the moment I go to the page with those controls (145-154), it works. But when I take away one or both of the remarks (I want to change the controlā€™s color into RED when a space is to be shown), going to that page makes the E1 get in a loop and it thus seemigly freezes. At least in FW 2 it looked like it froze, now I see it gets in an endless loop.

Hereā€™s an extract of that continuous looping (the program name to show was ā€œOrch Brassā€):

I believe you can replicate this without the parsing actually being in place (so without synth), with the following preset which is a bit different in the meantime from the situation above, but yields the same result. Electra One App

1 Like