@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.)
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.
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)
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
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
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
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.
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.
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 ?
assign a preset to categories for the preset library
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