is has been a while since the last update. The reason is that bigger changes were made to allow adding new features and improving stability of the firmware, plus my struggle to get enough time to work on it this summer. Fortunately the summer is almost over…
v3.7 is now available to beta testers. Please use it together with https://beta.electra.one/
firmware file:
firmware-v3.7.0c.srec.zip (1.6 MB)
The change log:
new features:
- Internal router can be configured to forward MIDI messages between any interface and port
- Lua formatters are now available for envelopes
- Presets can be switched using Lua
- On-screen controls can be mapped and adjusted using MIDI CC (absolute and relative)
- Hardware buttons can be fully customized using the configuration
- Knobs provide smoother readings
- Sensitivity of pots can be temporarily decreased (using the hardware button or a MIDI Control message)
- “Alt” function can be assigned to the hardware button to allow more buttons functions
- (almost) All controller functions that can be triggered from the UI can be triggered over MIDI
- Pages can remember / recall their own active control set
- Knob touch actions (page, preset, switching, opening detail, cycling through control parameters) can be enabled/disabled
- Display double-click and long touch actions can be configured and disabled/enabled.
- Presets can be marked to stay running on background (preset pinning)
- Lua function
preset.onReady()
has been added - Lua function
yield()
to run longer non-blocking callbacks has been added - AR and ADSSR (slope and breakpoint) have been added
- Added support for detecting MIDI ports (cables) on devices connected to the USB host
- Added Lua callback on USB Host device insertion/removal
- Added possibility to invoke (and pin) a preset upon USB Host device insertion
- Minor visual tweaks
Fixes:
- momentary buttons send Off state/message correctly now
- improved recognition of USB host devices
- runPotCallback has been fixed to receive correct delta info
- fixed issues with preset uploads failing occasionally
The main goal of v3.7 is to allow integrating the Electra controller with other MIDI controllers and software. The features are mostly based on the feedback collected on the forum.
Many of the new features are managed using the Electra configuration. The web app does not support many of those. They can be, however, fully tested using the Development sandbox.
There is a lot to explain and document. For now, the starting point is the new config file JSON schema and series of example files (see below) that can be edited and uploaded using the Development sandbox. Note, A lot has been done to keep the firmware compatible with the original and the new config format. As this is a beta release, some compatibility issues may show up.
Examples:
The default config
Brings default configuration based on the original v3.6 default config.
Router:
The new format allows a freestyle configuration of routes between any source and destination for all ports and interfaces.
One rule is a simple example of one routing rule.
Cross interface sets up 1:1 routes between all interfaces.
Midi thru show the thru function on a MIDI IO port.
Loopback forwards MIDI messages back to the originating USB device port.
Cross port forwards data from MIDI IO 1 in to MIDI IO 2 out.
UI Features:
A few new UI features options have been added.
All features demonstrates all the new features.
USB Host assignments:
The format has been extended to allow assignment of detected MIDI device ports to Electra One ports as well as invoking custom presets upon the USB device insertion.
Device assignment assigns all device ports to given Electra One port. Identical with the original config.
Device preset invokes preset in given bank / slot when the device is matched.
Port assignment assigns individual USB device ports to Electra One internal ports.
MIDI Control:
Number of actions that can be executed has been greatly extended. Configuration of the MIDI control interface and port has been moved from the router to the MIDI control JSON object.
Event examples demonstrates most (not all) available events without additional parameters.
Events with parameters demonstrates events with parameters, such as switching to particular page, preset, and control set
Remote:
A new option that allows to change values of on-screen controls using the MIDI CC. The feature follows the idea that on-screen controls can be identified with a slot id (1 … 36). This will work perfectly for regular presets. Presets that are using non-standard layout still need some thinking and doing. The config establishes a simple relationship between the incoming MIDI CC message and the destination control slot.
Absolute CCs shows how to use standard 7-bit CC (absolute) messages.
Relative CCs demonstrates use of relative CC messages (only one type of relative CCs supported for now)
Hardware:
The hardware is a new configuration section that is intended to configure function of the buttons (and other hardware means in the future). There is a switch between the original layout and the new custom layouts (“useDefaultLayout”). Each button can be configured separately for its primary function, alternative function, and a function that is triggered by the button and knob touch combo.
Default layout forces the original layout of button functions.
Primary functions only maps primary functions only.
Alt functions demonstrates use of the alt button.
Knob combos is an example of button and knob combos. Note, there is a lot to improve here.
Safe pot sensitivity shows how to handle knob sensitivity changes safely - using the hardware button.
You might miss the full list of the “list values” for some of the options. They are all listed in the config JSON schema. I will keep adding info to this thread as we discuss stuff. It is a beta and some things may change based on your feedback. I want to write the docs for the final documentation.
Brief info on AR and ADSSR:
AR envelope preset
ADSSR envelope preset
I will also post more info about other features that are not related to the config.