Firmware v4.1.1 for mk2

Firmware version 4.1.1 has just been released.

The app.electra.one web application now provides a direct link to download the firmware and instructions on how to update the controller. Two ways to update are provided:

  • using the Bootloader disk mode - proven and safe

  • using an online update - a single click update but still may have some quirks. A Bootloader version 1.1 is required for that. This version is installed on your controller if you purchased the controller with firmware 4.0.0 installed on it or if you updated the Bootloader manually by yourself in the past.

List of changes:

Version 4.1.1 is bug fix release that resolves the issue introduced in recent v4.1.0. The issue affects advanced presets that use parameterMap.onChange() lua function. Such scripts might not work correctly on v4.1.0.

Thanks to @Phommed @NewIgnis for reporting the issue.

7 Likes

Upgrade went fine via online app. Nothing to report after quick play around with fairly basic presets.

Upgrade went fine too. Another issue poped up: by changing the content of an overlay list (actually only the bitmap), overlay have been renumbered.

As I change overlays a lot, this is causing headaches:

for instance this function in the Mantis Preset is no longer correct after changing 3 bitmaps of the overlay 12.

  filterOverlay = {12,25} -- overlay ID for non-duo and duo mode
  controls.get(76):getValue (""):setOverlayId(filterOverlay[parameterMap.get (1, PT_VIRTUAL, 66)+1])
  controls.get(79):getValue (""):setOverlayId(filterOverlay[parameterMap.get (1, PT_VIRTUAL, 66)+1])

Because by changing those bitmap to overlay 12, suddenly overlay 25 had been renumbered in 26.
Such change in overlay numbering was already present in 4.1.0

Some more info: I have 2 controls with the same options and the same overlay list 12. After I’ve changed the bitmaps to only one (and not the other) it’s logic that an additional overlay appears in the overlay list. But this should not renumber existing ones.

One more. The Mantis Preset has a Device set on Midi Channel 13.
When I upload the preset the E1, this remains on 13.
When restarting the E1, the channel is set back to 1.

I tried the online update and now it is stuck on “updating firmware”.

ideas?

Had the same. In my case the bootloader was on v1.0 instead of v1 1.

Solution: delete the update.src from the boot folder in USB disk mode, then update the bootloader first or use the old method

1 Like

Remind me how do I get in usb disk mode?

Ok I read the docs. it’s done. Thank you

1 Like

Hi martin,

Some feedback and request about the page switching.

I really much prefered the 4.0 way of switching page by dragging up the lower par of the screen.

Now that it’s the opposite way, for some reason I have to try it several time before managing the switch effectively. Would you consider getting the old way back, or at least as an option ?

All the best

Vincent

1 Like

Is anyone having issues with USB connectivity and or Sysex based Patch Requests.

I am seeing inconsistent behaviour. I am using @NewIgnis Blofeld Preset, I have the Blofeld attached over a USB hub to the HOST port on the E1.

Observed
Sometimes the Patch Request works, sometimes it does not. It was working consistently in the past, however, I can’t say that my MIDI setup is entirely the same, the other thing is I’ve updated my E1 to this firmware version.

Same is true using @NewIgnis Pro-800 preset. This was working very well in the past via USB MIDI.

I guess the difference now is I have the Blofeld and the Pro-800 working over USB-MIDI.

Any ideas?

New1: What I noticed now is sending the Preset to the E1 again seems to fix the issue.

New2: Bidirectional communication between the Synths and the E1 works fine, even when Patch Requests are not.

1 Like

Hi,

I just tested 4.1.1 and the latest beta with my blofeld. So far, I am unable to see the issue. Would you try to capture the internal logs on your controller for me?

to do that:

  1. click the sidebar icon in the preset editor:

  2. Then select “Trace” and click “Set log level” button:

  3. You should see this on your screen then:

  4. Now, when you press the patch request button, the controller will dump info about all processed patch dump bytes to the log window. The picture below shows the correctly processed sysex bytes (last ~40 of them). Could you check what you get there when you get an inconsistent update?

I am busy with reviewing it today. Any additional input would help. Thanks!

Yes of course. I’ll get out of bed, take some aspirin for this hangover and get to it.

1 Like

Hi @martin,

This is what I get when everything works. The Blofeld is connected to the E1 directly.

11:12:12.383 processElectraSysex::logger enabled: logLevel=3
11:12:14.686 Midi::processSysex: matched response: responseId=0
11:12:14.689 Midi::applyRulesValues: applying extraction rule: byte=58, byteValue=1, extractedValue=0 to parameterNumber=122, type=sysex resulting in parameterValue=0
11:12:14.690 Midi::applyRulesValues: applying extraction rule: byte=35, byteValue=64, extractedValue=64 to parameterNumber=44, type=cc7 resulting in parameterValue=64
11:12:14.691 Midi::applyRulesValues: applying extraction rule: byte=19, byteValue=64, extractedValue=64 to parameterNumber=37, type=cc7 resulting in parameterValue=64
11:12:14.692 Midi::applyRulesValues: applying extraction rule: byte=3, byteValue=64, extractedValue=64 to parameterNumber=29, type=cc7 resulting in parameterValue=64
11:12:14.693 Midi::applyRulesValues: applying extraction rule: byte=49, byteValue=0, extractedValue=0 to parameterNumber=49, type=cc7 resulting in parameterValue=0
11:12:14.695 Midi::applyRulesValues: applying extraction rule: byte=40, byteValue=4, extractedValue=4 to parameterNumber=46, type=cc7 resulting in parameterValue=4
11:12:14.696 Midi::applyRulesValues: applying extraction rule: byte=24, byteValue=37, extractedValue=37 to parameterNumber=39, type=cc7 resulting in parameterValue=37
11:12:14.697 Midi::applyRulesValues: applying extraction rule: byte=8, byteValue=2, extractedValue=2 to parameterNumber=31, type=cc7 resulting in parameterValue=2
11:12:14.698 Midi::applyRulesValues: applying extraction rule: byte=34, byteValue=64, extractedValue=64 to parameterNumber=43, type=cc7 resulting in parameterValue=64
11:12:14.699 Midi::applyRulesValues: applying extraction rule: byte=18, byteValue=64, extractedValue=64 to parameterNumber=36, type=cc7 resulting in parameterValue=64
11:12:14.700 Midi::applyRulesValues: applying extraction rule: byte=2, byteValue=64, extractedValue=64 to parameterNumber=28, type=cc7 resulting in parameterValue=64
11:12:14.701 Midi::applyRulesValues: applying extraction rule: byte=42, byteValue=5, extractedValue=5 to parameterNumber=105, type=sysex resulting in parameterValue=5
11:12:14.703 Midi::applyRulesValues: applying extraction rule: byte=26, byteValue=3, extractedValue=3 to parameterNumber=104, type=sysex resulting in parameterValue=3
11:12:14.705 Midi::applyRulesValues: applying extraction rule: byte=10, byteValue=1, extractedValue=1 to parameterNumber=103, type=sysex resulting in parameterValue=1
11:12:14.706 Midi::applyRulesValues: applying extraction rule: byte=11, byteValue=64, extractedValue=64 to parameterNumber=34, type=cc7 resulting in parameterValue=64
11:12:14.707 Midi::applyRulesValues: applying extraction rule: byte=27, byteValue=64, extractedValue=64 to parameterNumber=41, type=cc7 resulting in parameterValue=64
11:12:14.708 Midi::applyRulesValues: applying extraction rule: byte=43, byteValue=64, extractedValue=64 to parameterNumber=48, type=cc7 resulting in parameterValue=64
11:12:14.709 Midi::applyRulesValues: applying extraction rule: byte=41, byteValue=127, extractedValue=127 to parameterNumber=47, type=cc7 resulting in parameterValue=127
11:12:14.711 Midi::applyRulesValues: applying extraction rule: byte=25, byteValue=58, extractedValue=58 to parameterNumber=40, type=cc7 resulting in parameterValue=58
11:12:14.713 Midi::applyRulesValues: applying extraction rule: byte=9, byteValue=127, extractedValue=127 to parameterNumber=33, type=cc7 resulting in parameterValue=127
11:12:14.714 Midi::applyRulesValues: applying extraction rule: byte=1, byteValue=64, extractedValue=64 to parameterNumber=27, type=cc7 resulting in parameterValue=64
11:12:14.715 Midi::applyRulesValues: applying extraction rule: byte=17, byteValue=52, extractedValue=52 to parameterNumber=35, type=cc7 resulting in parameterValue=52
11:12:14.716 Midi::applyRulesValues: applying extraction rule: byte=33, byteValue=52, extractedValue=52 to parameterNumber=42, type=cc7 resulting in parameterValue=52
11:12:14.717 Midi::applyRulesValues: applying extraction rule: byte=58, byteValue=1, extractedValue=1 to parameterNumber=126, type=sysex resulting in parameterValue=1
11:12:14.718 Midi::applyRulesValues: applying extraction rule: byte=50, byteValue=2, extractedValue=2 to parameterNumber=175, type=sysex resulting in parameterValue=2
11:12:14.719 Midi::applyRulesValues: applying extraction rule: byte=51, byteValue=91, extractedValue=91 to parameterNumber=50, type=cc7 resulting in parameterValue=91
11:12:14.720 Midi::applyRulesValues: applying extraction rule: byte=30, byteValue=0, extractedValue=0 to parameterNumber=130, type=sysex resulting in parameterValue=0
11:12:14.722 Midi::applyRulesValues: applying extraction rule: byte=14, byteValue=0, extractedValue=0 to parameterNumber=131, type=sysex resulting in parameterValue=0
11:12:14.725 Midi::applyRulesValues: applying extraction rule: byte=71, byteValue=0, extractedValue=0 to parameterNumber=54, type=cc7 resulting in parameterValue=0
11:12:14.727 Midi::applyRulesValues: applying extraction rule: byte=67, byteValue=0, extractedValue=0 to parameterNumber=60, type=cc7 resulting in parameterValue=0
11:12:14.728 Midi::applyRulesValues: applying extraction rule: byte=65, byteValue=62, extractedValue=62 to parameterNumber=58, type=cc7 resulting in parameterValue=62
11:12:14.730 Midi::applyRulesValues: applying extraction rule: byte=63, byteValue=76, extractedValue=76 to parameterNumber=56, type=cc7 resulting in parameterValue=76
11:12:14.732 Midi::applyRulesValues: applying extraction rule: byte=61, byteValue=127, extractedValue=127 to parameterNumber=52, type=cc7 resulting in parameterValue=127
11:12:14.734 Midi::applyRulesValues: applying extraction rule: byte=5, byteValue=96, extractedValue=96 to parameterNumber=114, type=sysex resulting in parameterValue=96
11:12:14.735 Midi::applyRulesValues: applying extraction rule: byte=21, byteValue=96, extractedValue=96 to parameterNumber=116, type=sysex resulting in parameterValue=96
11:12:14.737 Midi::applyRulesValues: applying extraction rule: byte=37, byteValue=96, extractedValue=96 to parameterNumber=118, type=sysex resulting in parameterValue=96
11:12:14.738 Midi::applyRulesValues: applying extraction rule: byte=56, byteValue=1, extractedValue=1 to parameterNumber=51, type=cc7 resulting in parameterValue=1
11:12:14.740 Midi::applyRulesValues: applying extraction rule: byte=53, byteValue=1, extractedValue=1 to parameterNumber=65, type=cc7 resulting in parameterValue=1
11:12:14.743 Midi::applyRulesValues: applying extraction rule: byte=6, byteValue=2, extractedValue=2 to parameterNumber=111, type=sysex resulting in parameterValue=2
11:12:14.744 Midi::applyRulesValues: applying extraction rule: byte=22, byteValue=0, extractedValue=0 to parameterNumber=113, type=sysex resulting in parameterValue=0
11:12:14.746 Midi::applyRulesValues: applying extraction rule: byte=38, byteValue=5, extractedValue=5 to parameterNumber=112, type=sysex resulting in parameterValue=5
11:12:14.747 Midi::applyRulesValues: applying extraction rule: byte=7, byteValue=22, extractedValue=22 to parameterNumber=30, type=cc7 resulting in parameterValue=22
11:12:14.748 Midi::applyRulesValues: applying extraction rule: byte=23, byteValue=0, extractedValue=0 to parameterNumber=38, type=cc7 resulting in parameterValue=0
11:12:14.750 Midi::applyRulesValues: applying extraction rule: byte=39, byteValue=0, extractedValue=0 to parameterNumber=45, type=cc7 resulting in parameterValue=0
11:12:14.752 Midi::applyRulesValues: applying extraction rule: byte=62, byteValue=0, extractedValue=0 to parameterNumber=53, type=cc7 resulting in parameterValue=0
11:12:14.754 Midi::applyRulesValues: applying extraction rule: byte=64, byteValue=0, extractedValue=0 to parameterNumber=57, type=cc7 resulting in parameterValue=0
11:12:14.755 Midi::applyRulesValues: applying extraction rule: byte=66, byteValue=0, extractedValue=0 to parameterNumber=59, type=cc7 resulting in parameterValue=0
11:12:14.757 Midi::applyRulesValues: applying extraction rule: byte=68, byteValue=0, extractedValue=0 to parameterNumber=61, type=cc7 resulting in parameterValue=0
11:12:14.759 Midi::applyRulesValues: applying extraction rule: byte=72, byteValue=0, extractedValue=0 to parameterNumber=55, type=cc7 resulting in parameterValue=0
11:12:14.760 Midi::applyRulesValues: applying extraction rule: byte=59, byteValue=0, extractedValue=0 to parameterNumber=121, type=sysex resulting in parameterValue=0
11:12:14.762 Midi::applyRulesValues: applying extraction rule: byte=69, byteValue=64, extractedValue=64 to parameterNumber=62, type=cc7 resulting in parameterValue=64
11:12:14.764 Midi::applyRulesValues: applying extraction rule: byte=32, byteValue=0, extractedValue=0 to parameterNumber=101, type=sysex resulting in parameterValue=0
11:12:14.766 Midi::applyRulesValues: applying extraction rule: byte=48, byteValue=0, extractedValue=0 to parameterNumber=102, type=sysex resulting in parameterValue=0
11:12:14.767 Midi::applyRulesValues: applying extraction rule: byte=16, byteValue=0, extractedValue=0 to parameterNumber=100, type=sysex resulting in parameterValue=0
11:12:14.769 Midi::applyRulesValues: applying extraction rule: byte=4, byteValue=66, extractedValue=66 to parameterNumber=115, type=sysex resulting in parameterValue=66
11:12:14.771 Midi::applyRulesValues: applying extraction rule: byte=20, byteValue=66, extractedValue=66 to parameterNumber=117, type=sysex resulting in parameterValue=66
11:12:14.772 Midi::applyRulesValues: applying extraction rule: byte=36, byteValue=66, extractedValue=66 to parameterNumber=119, type=sysex resulting in parameterValue=66
11:12:14.774 Midi::applyRulesValues: applying extraction rule: byte=57, byteValue=55, extractedValue=55 to parameterNumber=5, type=cc7 resulting in parameterValue=55
11:12:14.775 Midi::applyRulesValues: applying extraction rule: byte=78, byteValue=0, extractedValue=0 to parameterNumber=69, type=cc7 resulting in parameterValue=0
11:12:14.777 Midi::applyRulesValues: applying extr…

Here is an example where the Blofeld does not respond to the patch request. I tried using the USB Hub, then back to a direct connection. It might be the presence of the Midihub that causes the issues, even after its removed and the instrument is attached directly. I will test that further.

Other Info

  • I typically have to unplug and insert the Blofeld after rebooting the the E1 as it doesn’t automatically detect there is an instrument attached.
  • I use the reboot option on the E1 between tests

11:26:27.732 processElectraSysex::logger enabled: logLevel=3
11:27:33.115 CustomWriter: cannot delete file: ctrlv2/config4.cfg
11:27:44.862 CustomWriter: cannot delete file: ctrlv2/config4.cfg
11:27:50.756 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:27:51.057 ElectraMidi: processMidi: Control change midi message: parameter=27, value=112
11:27:51.759 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:27:52.260 ElectraMidi: processMidi: Control change midi message: parameter=27, value=88
11:27:52.560 ElectraMidi: processMidi: Control change midi message: parameter=27, value=76
11:27:52.760 ElectraMidi: processMidi: Control change midi message: parameter=27, value=88
11:27:54.566 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:27:54.867 ElectraMidi: processMidi: Control change midi message: parameter=27, value=112
11:27:55.430 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:27:55.831 ElectraMidi: processMidi: Control change midi message: parameter=27, value=88
11:28:33.540 Config::getUsbHostAssignmentPort: product match: productName=Blofeld
11:28:33.543 Config::getUsbHostAssignmentPort: ports defined: productName=Blofeld
11:28:33.544 USB port: 0, name: Blofeld -> to port: 0
11:28:33.545 Config::getUsbHostAssignmentPresetId: device=Blofeld, presetId=255
11:28:52.080 SysexApi::process: application system call
11:28:52.081 processElectraSysex::logger enabled: logLevel=3
11:29:02.446 CustomWriter: cannot delete file: ctrlv2/config4.cfg
11:29:30.179 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:29:30.380 ElectraMidi: processMidi: Control change midi message: parameter=27, value=112
11:29:30.705 ElectraMidi: processMidi: Control change midi message: parameter=27, value=100
11:29:30.804 ElectraMidi: processMidi: Control change midi message: parameter=27, value=88
11:29:31.205 ElectraMidi: processMidi: Control change midi message: parameter=27, value=76
11:29:31.505 ElectraMidi: processMidi: Control change midi message: parameter=27, value=64
11:29:45.447 Config::getUsbHostAssignmentPort: product match: productName=Blofeld
11:29:45.450 Config::getUsbHostAssignmentPort: ports defined: productName=Blofeld
11:29:45.451 USB port: 0, name: Blofeld -> to port: 0
11:29:45.452 Config::getUsbHostAssignmentPresetId: device=Blofeld, presetId=255

You can see me testing the midi communication, there are CC msgs comming in, yet the patch request doesn’t reply.

I obseved that sometimes pressing the patch request button results in none of the IO ports flashing on the E1 with no values in the debugger. Also, the IO indicators do sometimes flash with also with no values shown in the debugger.

11:53 am: The E1+Blofeld are now in the state where bidirectional midi is working but the patch request does not work. The IO labels don’t flash and the MIDI light on the Blofeld doesn’t flash either. No USB Hub is in use. The Blofeld is attached directly.

  • Turning off the E1 (by unplugging it), starting it again, reattaching the Blofeld via USB to the HOST port so that the E1 detects it - Bidirectional Midi works but Patch Request does not
  • Turning both the E1 and the Blofeld off, and starting them E1 then the Blofeld also has the same issue.

12:02 PM: It took 4 attempt to get the Blofeld patch to load onto the E1 however after it did work everything worked, Bidirectional MIDI CC and SysEx / Patch Request. However the same loop exists. If I reboot the E1 Patch Requests stop working. No USB Hub was used for this part of the test.

1 Like

Are there specific steps you’d like for me to test and report on?