# SysEx implementation
Electra One MIDI controller can be configured, programmed, and controlled with two different communication protocols:
- SysEx MIDI messages
- low-level USB Raw HID
This document describes the essential data exchange and control commands using the SysEx message format over the USB MIDI interface.
Note
Firmware version 3.1 or later is required to have all the SysEx messages listed in this document supported.
# Manufacturer SysEx Id
All SysEx messages must carry information about the manufacturer. Electra One uses the MIDI association Manufacturer SysEx Id of Electra One s.r.o.
0x00 0x21 0x45
# The management port
All Electra One SysEx messages are identified with the Electra One Manufacturer SysEx Id. The messages can be exchanged on any of Electra's USB device interface ports. It is recommended, however, to use Electra Controller CTRL
port whenever it is possible. Using the Electra Controller CTRL
separates Electra management SysEx messages from other MIDI traffic. The Electra Controller CTRL
port is sometimes listed as MIDIIN3
(Windows) or PORT 3
(Linux).
Responses to requests are always transmitted on the same USB device port where the original request was sent to. The event notifications triggered by user activity on the controller are transmitted on the Electra Controller CTRL
port by default. This can be overridden by setting different port for the event notifications, see Set the MIDI port for UI events.
# Request / Response handshake
Electra One uses simple request - response protocol for exchanging data. The requests can be divided into two groups:
- data queries
- commands
For data queries, Electra One responds by providing the requested data in JSON format. For commands, Electra responds with ACK / NACK response. ACK (acknowledged) is sent back when command was successfully performed, otherwise NACK (not-acknowledged) is sent.
# Querying data from the controller
A set of commands to retrieve information from the controller. The information may be either runtime data, static data, or various files stored in the controller.
# Get an Electra info
Electra One MIDI controller can provide info about the hardware and currently loaded firmware on a request. This call comes in handy if you need to find out if connected Electra is working correctly and get information about the firmware it runs.
For example, the Electra App account and Electra Editor use this call to verify that Electra One controller is connected correctly and display the connection indicator.
# Request
0xF0 0x00 0x21 0x45 0x02 0x7F 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x7F
Electra information0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x7F info-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x7F
Electra informationinfo-json-data
JSON document with info about Electra (see below)0xF7
SysEx closing byte
Detailed information about info-json-data
is provided at (to be done).
# An example of info-json-data
{
"versionText": "v1.5.11",
"versionSeq": 100501100,
"serial": "EO-123456",
"hwRevision": "2.30"
}
# Get a run-time information
A request call to fetch the run-time information from the Electra firmware. Only the information about free memory is included at the present time.
# Request
0xF0 0x00 0x21 0x45 0x02 0x7E 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x7E
Run-time information0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x7E runtime-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x7E
Run-time informationruntime-json-data
JSON document with info about run-time data0xF7
SysEx closing byte
Detailed information about runtime-json-data
is provided at (to be done).
# An example of runtime-json-data
{
"freePercentage": 85
}
# Get a preset
A request to fetch a preset that is active in the controller.
# Request
0xF0 0x00 0x21 0x45 0x02 0x01 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x01
Preset file0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x01 preset-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x01
Preset filepreset-json-data
JSON document with info about Electra (see below)0xF7
SysEx closing byte
Electra One MIDI controller responds with the SysEx message that has exactly the same format as the Preset upload message. Thus, a SysEx message downloaded with the Get preset call can be used to upload the preset to Electra later on.
This call always downloads a preset that is currently selected and active in the controller.
Detailed information about preset-json-data
is provided at Preset format description
# An example of preset-json-data
{
"version": 2,
"name": "ADSR Test",
"projectId": "d8WjdwYrP3lRyyx8nEMF",
"pages": [
],
"devices": [
],
"overlays": [
],
"groups": [
],
"controls": [
]
}
# Get an Electra configuration
A request call to fetch current Electra One configuration.
# Request
0xF0 0x00 0x21 0x45 0x02 0x02 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x02
Configuration file0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x02 configuration-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x02
Configuration fileconfiguration-json-data
JSON document with info about Electra (see below)0xF7
SysEx closing byte
Detailed information about configuration-json-data
is provided at Configuration format description
# An example of configuration-json-data
{
"version": 1,
"router": {
"usbDevToMidiIo": true,
"usbDevToUsbHost": true,
"midiIoToUsbDev": true,
"midiIoToUsbHost": true,
"usbHostToMidiIo": true,
"usbHostToUsbDev": true,
"electraToMidiIo": true,
"electraToUsbHost": true,
"electraToUsbDev": true
},
"presetBanks": [
{
"id": 1,
"name": "FX UNITS",
"color": "FFFFFF"
},
{
"id": 2,
"name": "SAMPLERS",
"color": "529DEC"
}
],
"usbHostAssigments": [
{
"pattern": "launchpad",
"port": 3
}
],
"midiControl": [
{
"event": "switchPreset",
"eventParameter": 1,
"midiMessage": "program",
"parameterNumber": 1
}
]
}
# Get a list of presets
A request call to fetch a list of all presets stored in the controller.
# Request
0xF0 0x00 0x21 0x45 0x02 0x04 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x04
Preset list0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x04 preset-list-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x04
Preset listpreset-list-json-data
JSON document with a list of presets0xF7
SysEx closing byte
# An example of preset-list-json-data
{
"version": 1,
"presets": [
{
"slot": 0,
"bankNumber": 0,
"name": "Access Virus A",
"projectId": "jbTgBV9Sv7FFXossyeTh"
},
{
"slot": 1,
"bankNumber": 0,
"name": "Yamaha TG33",
"projectId": "kLyMO8PSlUicXM5lwsuR"
}
]
}
# Get a list of snapshots
A request call to fetch a list of snaphots of an active preset.
# Request
0xF0 0x00 0x21 0x45 0x02 0x05 snaphost-list-request-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x05
Snaphost listsnapshot-list-request-json-data
0xF7
SysEx closing byte
Detailed information about snapshot-list-request-json-data
is provided at (to be done).
# An example of snapshot-list-request-json-data
{
"projectId": "kLyMO8PSlUicXM5lwsuR"
}
# Response
0xF0 0x00 0x21 0x45 0x01 0x05 snapshot-list-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x05
Snapshot listsnapshot-list-json-data
JSON document with a list of snapshots0xF7
SysEx closing byte
# An example of snapshot-list-json-data
{
"version": 1,
"projectId": "kLyMO8PSlUicXM5lwsuR",
"snapshots": [
{
"slot": 5,
"bankNumber": 0,
"name": "Fantasia",
"color": "00C232"
}
]
}
# Get a Lua script
A request call to download Lua script that is currently stored in the controller.
# Request
0xF0 0x00 0x21 0x45 0x02 0x0C 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x0C
Lua script file0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x0C script-source-code 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x0C
Lua Script filescript-source-code
bytes representing a source code of the Electra One Lua script application0xF7
SysEx closing byte
Detailed information about developing Lua script applications is provided at Electra One Lua script documentation.
# An example of script-source-code
-- Demo application
-- the Setup
clockCounter = 0
beatEnabled = 0
-- User functions
function myPrint (text)
print ("my Lua: " .. text)
end
-- Standard callbacks
function midi.onClock (midiInput)
if beatEnabled == 1 then
if math.mod (clockCounter, 24) == 0 then
myPrint ("midi beat received: interface=" .. midiInput.interface)
end
end
clockCounter = clockCounter + 1
end
function onButtonDown (buttonId)
myPrint ("button " .. buttonId .. " pressed")
if buttonId == BUTTON_1 then
myPrint ("Beat enabled")
beatEnabled = 1
elseif buttonId == BUTTON_4 then
myPrint ("Beat disabled")
beatEnabled = 0
end
end
# Get an application information
A request call to fetch information about current application and preset.
# Request
0xF0 0x00 0x21 0x45 0x02 0x7C 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x02
Query data0x7C
Application information0xF7
SysEx closing byte
# Response
0xF0 0x00 0x21 0x45 0x01 0x7C app-info-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Data dump0x7C
Application infoapp-info-json-data
JSON document with an application info0xF7
SysEx closing byte
# An example of app-info-json-data
{
"app": "ctrlv2",
"preset": "Alesis Micron"
}
# Uploading data to the controller
A set of commands to upload files to the controller.
# Upload a preset
The preset upload call is meant to upload a new preset to the Electra One MIDI controller. The preset is always loaded to a currently selected preset slot (out of 72 preset slots supported). Once the preset is uploaded, it is activated immediately and the user may use it.
0xF0 0x00 0x21 0x45 0x01 0x01 preset-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Upload data0x01
Preset filepreset-json-data
bytes representing ascii bytes of the preset file0xF7
SysEx closing byte
Detailed information about preset-json-data
is provided at Preset format description
# Upload a configuration
The configuration upload call is meant to upload and apply a new Electra One configuration to the controller.
0xF0 0x00 0x21 0x45 0x01 0x02 configuration-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Upload data0x02
Configuration fileconfiguration-json-data
bytes representing ascii bytes of the configuration file0xF7
SysEx closing byte
Detailed information about configuration-json-data
is provided at Configuration format description
# Upload a Lua script
The Lua script upload call is meant to upload and execute a new Electra One Lua script.
0xF0 0x00 0x21 0x45 0x01 0x0C script-source-code 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x01
Upload data0x0C
Lua Script filescript-source-code
bytes representing a source code of the Electra One Lua script application0xF7
SysEx closing byte
Detailed information about developing Lua script applications is provided at Electra One Lua script documentation.
# Controller events
Controller events are sent by the controller to the host. The primary goal is to keep the host computer informed about important events taking place in the controller.
# NAK
Not acknowledged. Informs the host that the last operation did not succeed.
0xF0 0x00 0x21 0x45 0x7E 0x00 0x00 0x00 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x00
NAK (not acknowledged)0x00
reserved0x00
reserved0xF7
SysEx closing byte
# ACK
Acknowledged. Informs the host that the last operation was successfully completed.
0xF0 0x00 0x21 0x45 0x7E 0x01 0x00 0x00 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x01
ACK (acknowledged)0x00
reserved0x00
reserved0xF7
SysEx closing byte
# Preset switch
Informs the host that the user changed the preset on the controller.
0xF0 0x00 0x21 0x45 0x7E 0x02 bank-number slot 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x02
Preset switchbank-number
Current preset slot (0 .. 5)slot
Current preset slot (0 .. 11)0xF7
SysEx closing byte
# Snapshot list change
Informs the host that the list of snapshots has been modified. It is sent out when a snapshot is added, modified, or removed.
0xF0 0x00 0x21 0x45 0x7E 0x03 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x03
Snapshot list change0xF7
SysEx closing byte
# Pot touch
Informs the host that the user touched or released the pot (knob)
0xF0 0x00 0x21 0x45 0x7E 0x04 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x0A
Pot touch activitypot-id
an identifier of the pot (0 .. 11)control-id-lsb
a LSB of a controlIdcontrol-id-msb
a MSB of a controlIdtouched
is set totrue
for initial touch, andfalse
when pot is released0xF7
SysEx closing byte
# Preset list change
Informs the host that the list of presets has been modified. It is sent out when a preset is added, modified, or removed.
0xF0 0x00 0x21 0x45 0x7E 0x05 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x05
Preset list change0xF7
SysEx closing byte
# Page switch
Informs the host that the user changed the active page.
0xF0 0x00 0x21 0x45 0x7E 0x06 page-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x06
Page switchpage-id
Current page number as defined in the preset (0 .. 11)0xF7
SysEx closing byte
# Control set switch
Informs the host that the user changed the active control set.
0xF0 0x00 0x21 0x45 0x7E 0x07 control-set-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x07
Control set switchcontrol-set-number
Current active control set (0 .. 2)0xF7
SysEx closing byte
# Preset bank switch
Informs the host that the user changed the preset bank.
0xF0 0x00 0x21 0x45 0x7E 0x08 preset-bank-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x08
preset bank switchpreset-bank-number
Current page number (0 .. 5)0xF7
SysEx closing byte
# USB Host change notification
Informs the host that a new device was connected or an existing device was disconnected from the USB Host port.
0xF0 0x00 0x21 0x45 0x7E 0x08 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x08
USB Host change0xF7
SysEx closing byte
# Snapshot change
Informs the host that the user made change regarding the snapshots. Upon receiving this event the host might want to query the snapshot list information.
0xF0 0x00 0x21 0x45 0x7E 0x03 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x03
Snapshot change0xF7
SysEx closing byte
# Snapshot bank switch
Informs the host that the user changed current snapshot bank.
0xF0 0x00 0x21 0x45 0x7E 0x04 bank-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7E
Controller event0x04
Snapshot bank switchbank-number
Snapshot bank (0 .. 11)0xF7
SysEx closing byte
# Midi learn info
When Electra has the MIDI learn enabled it sends a MIDI message with description of MIDI messages received on user ports to.
0xF0 0x00 0x21 0x45 0x03 midilearn-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x03
Midi learnmidilearn-json-data
a JSON data that describe detected MIDI message0xF7
SysEx closing byte
Detailed information about midilearn-json-data
is provided at (to be done)
# An example of midilearn-json-data
non-SysEx:
{
"port": 0,
"msg": "cc7",
"channel": 2,
"parameterId": 10,
"value": 119
}
SysEx:
{
"port": 0,
"msg": "sysex",
"data": [ 67, 32, 0 ]
}
# Log message
A log message is a text that is transmitted to the host computer in order to provide the user with information what is happening in the controller. The log messages are generated either by the firmware or user's Lua script.
0xF0 0x00 0x21 0x45 0x7F 0x00 log-message 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7F
System call0x00
Log messagelog-message
ASCII bytes representing the log message0xF7
SysEx closing byte
The log-message
is a text string that start with a number representing milliseconds from the start of the controller, followed by the space, and then the text of the message.
# An example of log-message
147362 ElectraApp: preset successfully loaded
# Persistent commands
Persistent command make changes to the data stored in the controller. This means that all changes made with persistent commands will be effective even if the controller is power-recycled.
# Snapshot update
A call to update snapshot attributes.
0xF0 0x00 0x21 0x45 0x04 0x06 snapshot-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x04
Update command0x06
Snapshotsnapshot-json-data
Snapshot JSON data0xF7
SysEx closing byte
Detailed information about snapshot-json-data
is provided at (to be done)
# An example of the snapshot-json-data
{
"projectId": "SCI1mU1v6ojnm8IojuhY",
"bankNumber": 0,
"slot": 5,
"name": "House piano",
"color": "E4660E"
}
# Snapshot remove
A call to permanently remove a snapshot.
0xF0 0x00 0x21 0x45 0x05 0x06 snapshot-id-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x05
Remove command0x06
Snapshotsnapshot-id-json-data
Snapshot identification JSON data0xF7
SysEx closing byte
Detailed information about snapshot-id-json-data
is provided at (to be done)
# An example of the snapshot-json-data
{
"projectId": "SCI1mU1v6ojnm8IojuhY",
"bankNumber": 2,
"slot": 5
}
# Snapshot swap
A call to swap snapshots in two snapshot slots. If one of the slots is empty, it becomes a simple move action.
0xF0 0x00 0x21 0x45 0x06 0x06 snapshot-ids-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x06
Swap command0x06
Snapshotsnapshot-ids-json-data
0xF7
SysEx closing byte
Detailed information about snapshot-ids-json-data
is provided at (to be done)
# An example of the snapshot-json-data
{
"projectId": "SCI1mU1v6ojnm8IojuhY",
"fromBankNumber": 0,
"fromSlot": 5,
"toBankNumber": 0,
"toSlot": 4
}
# Preset remove
A call to permanently remove a preset identified with the bankNumber and a preset slot.
0xF0 0x00 0x21 0x45 0x05 0x01 bank-number slot 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x05
Remove command0x01
Presetbank-number
an identifier of the preset bank (0 .. 5)slot
an identifier of the preset slot (0 .. 11)0xF7
SysEx closing byte
# Lua script remove
A call to permanently remove a Lua script identified with the bankNumber and a slot.
0xF0 0x00 0x21 0x45 0x05 0x0C bank-number slot 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x05
Remove command0x0C
Lua scriptbank-number
an identifier of the preset bank (0 .. 5)slot
an identifier of the preset slot (0 .. 11)0xF7
SysEx closing byte
# Config file remove
A call to permanently remove a configuration file.
0xF0 0x00 0x21 0x45 0x05 0x02 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x05
Remove command0x02
Configuration file0xF7
SysEx closing byte
# Load preloaded preset
A call to provision a preset slot with a preloaded preset.
0xF0 0x00 0x21 0x45 0x04 0x08 preset-slot-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x04
Update command0x08
Preset slotpreset-slot-json-data
Preset slot update JSON data0xF7
SysEx closing byte
Detailed information about preset-slot-json-data
is provided at (to be done)
# An example of the preset-slot-json-data
{
"bankNumber": 5,
"slot": 1,
"preset": "xot/ableton/Cabinet"
}
# Runtime commands
The runtime command modify the behaviour of the controller at the runtime but do not make permanent changes.
# Switch preset slot
A call to switch the active preset slot. If the slot is in use, the preset is loaded. When empty, the slot is selected and preset can be subsequently loaded there.
0xF0 0x00 0x21 0x45 0x09 0x08 bank-number slot 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x09
Switch command0x08
Preset slotbank-number
an identifier of the preset bank (0 .. 5)slot
an identifier of the preset slot (0 .. 11)0xF7
SysEx closing byte
# Switch page
A call to switch the active page.
0xF0 0x00 0x21 0x45 0x09 0x0A page-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x09
Switch command0x0A
Pagepage-number
an identifier of the page (0 .. 11)0xF7
SysEx closing byte
# Switch control set
A call to change the active control set.
0xF0 0x00 0x21 0x45 0x09 0x0B control-set-id 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x09
Switch command0x0B
Control setcontrol-set-id
an identifier of the page (0 .. 2)0xF7
SysEx closing byte
# Midi learn enable / disable
A call to enable or disable the MIDI learn functionality on the controller. When enabled, the controller will send MIDI learn messages back to the host for all incoming MIDI messages.
0xF0 0x00 0x21 0x45 0x03 status 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x03
Midi Learnstatus
desired state of the MIDI learn functionality (see below)0xF7
SysEx closing byte
status
0x00
disable the MIDI learn0x01
enable the MIDI learn
# Logger enable / disable
A system call that is used to control whether or not Electra sends the debugging log messages. The command controls a non-volative flag in the controller. The status of the logger stays set even after powering the controller off. The start-up log messages are, however, always sent without taking the logger status in account.
0xF0 0x00 0x21 0x45 0x7F 0x7D status 0x00 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7F
System call0x7D
Logger status changestatus
desired state of the logger (see below)log-level
level of verbosity of log messages (0 .. 3)0xF7
SysEx closing byte
status
0x00
disable the logger0x01
enable the logger
log-level
sets the verbosity of log messages sent by the Electra One controller. Higher log levels add extra messages to stream of log messages. The log-level
parameter is ignored when the status
parameter is set to 0x00
.
0x00
critical messages and errors only0x01
warning messages0x02
informative messages0x03
tracing messages
# Execute Lua command
A call to run an arbitrary Lua command.
0xF0 0x00 0x21 0x45 0x08 0x0D lua-command-text 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x08
Execute command0x0D
Lua commandlua-command-text
ASCII bytes representing the Lua command0xF7
SysEx closing byte
The lua-command-text
is free form string containing Lua command to be executed. The maximum length is limited to 128 characters. It is recommended to call predefined functions.
# An example of the lua-command-text
hideControl (1)
or
print ("Hello MIDI world!")
# Control update
A call to update the name, color, and visibility of the control. The change is made only at the run-time, it means it is lost when the Electra is powered off.
0xF0 0x00 0x21 0x45 0x14 0x07 control-id-lsb control-id-msb control-upadate-json-data 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x14
Update runtime command0x07
Controlcontrol-id-lsb
a LSB of a controlIdcontrol-id-msb
a MSB of a controlIdcontrol-update-json-data
0xF7
SysEx closing byte
The controlId
is decomposed to LSB and MSB part as:
control-id-msb = controlId >> 7
control-id-lsb = controlId & 0x7F
The control-update-json-data
may consist of four optional attributes name
, color
, visibility
, and label
. Upon receiving the control update command the fields will be set accordingly. It is possible send only attributes that need to be changed.
# An example of the control-json-data
change all attrinbutes:
{
"name": "Track 1",
"color": "FFFFFF",
"visible": true
}
one attribute only:
{
"name": "Track 2"
}
overriding a value text:
{
"value": {
"id": "value",
"text": "6.2dB"
}
}
Note, when overriding a value text the "id": "value"
is not required for single value controls, such as
faders, pads, and relative controls. Setting the "text"
attribute to an empty string will cancel the override. When cancelled, the controller will display the current value according to its settings.
# Override value text
Even though the value texts can be overridden with the Control update command, the SysEx API offers another, more performance oriented, call. The Set value text command delivers the update functionality without JSON parsing and valueId translation.
0xF0 0x00 0x21 0x45 0x14 0x0E control-id-lsb control-id-msb numeric-value-id text 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x14
Update runtime command0x0E
Override text valuecontrol-id-lsb
a LSB of a controlIdcontrol-id-msb
a MSB of a controlIdnumeric-value-id
a numeric identifier of the value within the controltext
a text string to be displayed as value0xF7
SysEx closing byte
The controlId
is decomposed to LSB and MSB part as:
control-id-msb = controlId >> 7
control-id-lsb = controlId & 0x7F
The numeric-value-id
identifies Electra's MIDI port as follows:
0x00
default value of single value controls (fader, pads, and relative controls)0x01
-0x10
other values such as individual ADSR values. Details will be provided later.
The text
is text string of printable ASCII characters, maximum length is 15 characters. Setting the text
string with 0 bytes length cancels the value override. When cancelled, the controller will display the current value according to its settings.
# Set the MIDI port for Controller events
A call to set a MIDI port that will be used to transmit event notifications on user actions done on the controller, eg. page switching.
0xF0 0x00 0x21 0x45 0x14 0x7B port-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x14
Update runtime command0x7B
Select the port to transmit UI driven events onport-number
a MIDI port to be used0xF7
SysEx closing byte
The port-number
identifies Electra's MIDI port as follows:
0x00
Port 10x01
Port 20x02
CTRL
# Subscribe Controller events
A call to set what user events will be emitted to the host.
0xF0 0x00 0x21 0x45 0x14 0x7B port-number 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x14
Update runtime command0x79
Select the port to transmit UI driven events onevent-flags
a byte where each bit represents specific type of event0xF7
SysEx closing byte
The event-flags
a byte with the following bits (flags). The individual flags
must be ORed to produce the final byte value:
0x01 (bit 0)
Page events0x02 (bit 1)
Control set events0x04 (bit 2)
USB Host events0x08 (bit 3)
Pots events0x10 (bit 4)
Touch events0x20 (bit 5)
Button events0x40 (bit 6)
Window events
Note, currently only Page events and Pots events are supported.
# Set the MIDI port for logger
A call to set a MIDI port that will be used to transmit log messages.
0xF0 0x00 0x21 0x45 0x14 0x7D port-number reserved 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x14
System call0x7D
Select the port to transmit log messages onport-number
a MIDI port to be usedreserved
an optional parameter. It is not currently used.0xF7
SysEx closing byte
The port-number
identifies Electra's MIDI port as follows:
0x00
Port 10x01
Port 20x02
CTRL
# Control the window repaint process
Control over the window repainting. Currently, window commands allow users to efficiently execute larger batches of control updates by stopping and resuming the repainting process.
0xF0 0x00 0x21 0x45 0x7F 0x7A command reserved 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7F
System call0x7A
Window controlcommand
a command to executereserved
an optional parameter. It is not currently used.0xF7
SysEx closing byte
The command
must be one of the following:
0x00
stop the window repainting process0x01
repaint the window and resume the window repainting process
# Switch to the firmware update mode
A system call that forces Electra to switch to the update mode. When in update mode Electra is ready to receive a firmware update.
0xF0 0x00 0x21 0x45 0x7F 0x7F 0xF7
0xF0
SysEx header byte0x00
0x21
0x45
Electra One MIDI manufacturer Id0x7F
System call0x7F
Switch to the update mode0xF7
SysEx closing byte