Skip to content

Devices Override format description

Device Overrides are a specialized extension mechanism that allows users to customize the assignment of MIDI ports and channels to devices defined within a preset. While presets serve as the core structure for mapping and controlling MIDI devices, including layout, controls, and MIDI messages. Device Overrides provide a way to alter the default definitions of those devices without modifying the original preset.

Relationship to Presets

Each preset in Electra One can reference between one and up to 32 device definitions. These devices represent standardized descriptions of external MIDI gear or software. A device definition typically includes information such as the MIDI port and channel where the device is connected, its name, and optionally, instructions on how to request and parse data exchanged between Electra One and the device.

Since different users may have their MIDI devices connected to different ports or channels, they often need to edit the preset to make the necessary adjustments. Device Overrides offer a solution by allowing users to apply these changes without modifying the preset itself.

A Device Overrides JSON file provides an alternative version of MIDI device settings: the MIDI port, the channel, and the MIDI interfaces. The file is stored as overrides.json in the preset slot folder, alongside the preset. When it is present, Electra One applies these settings on top of the devices embedded in the preset. Controllers with older firmware stored the file as devices.json; it is renamed to overrides.json automatically.

Besides the devices, the file can also assign actions to the controller's hardware buttons for the preset in that slot.

Adjusting the Devices

When a preset is loaded into a preset slot, Device Overrides can be added in two ways:

Lifecycle

Device Overrides are scoped to a specific preset slot on the Electra One. Their lifecycle is tightly coupled with the preset currently loaded in that slot:

  • When a different preset is loaded into the slot, any existing Device Overrides file stored there is removed.
  • After the new preset is loaded, the device definitions from the preset itself are used, unless a new Device Overrides file is applied.
  • Any adjustment made via Devices screen in the main Menu on the controller creates or replaces the Device Overrides JSON file in the current preset slot. The file is written when the Devices window is closed.
  • Uploading a Device Overrides JSON file via SysEx also creates or replaces the file in the preset slot, and applies it to the loaded preset.

If a preset with the same projectId is uploaded to the preset slot, the existing Device Overrides file is retained. However, uploading a preset with a different projectId removes the existing Device Overrides file. That includes uploading a preset into an empty slot.

Loading one of the preloaded presets into a slot, and issuing a SysEx command to remove a preset or clear a preset slot, also remove the Device Overrides file, along with any other files stored in that slot.

A preset file placed in the slot with a file transfer commit does not touch the Device Overrides file.

Devices Override JSON format

JSON schema

The JSON schema of the Electra One Device Overrides file is available at GitHub.

Top level objects

The file has three top-level elements.

json
{
  "version": 1,
  "devices": [
  ],
  "buttons": {
  }
}

version

Provides information about the version of the device override file. Electra One controller uses version information to distinguish between various device overrides file formats. Note, this document describes version 1.

example
json
"version":1

devices

An array of devices. A device is a hardware MIDI device or software device (application, VST/AU plugin) connected to the Electra One.

  • mandatory
  • array
example:
json
"devices": [
   {
      "id": 1,
      "name": "My MKS-50",
      "interfaces": [ "midiIo" ],
      "port": "port1",
      "channel": 1,
      "rate": 10
   },
   {
      "id": 2,
      "name": "BeatFX plugin",
      "interfaces": [ "midiIo", "midiUsbDev", "midiUsbHost" ],
      "port": "port2",
      "channel": 1,
      "rate": 10
   }
]

buttons

Actions assigned to the controller's hardware buttons while the preset in this slot is active. An assignment here takes precedence over the button assignment in the controller's configuration.

The object is keyed by button name. Each button can have a primary action and an alt action, used when the controller is in the alternate (shift) mode. An action is the name of a command, the same commands that the Commands Lua module runs. Unknown button names and commands are ignored.

The button names depend on the model:

  • Electra One mk2: leftTop, leftMiddle, leftBottom, rightTop, rightMiddle, rightBottom

  • Electra One Mini: context1, context2, context3, context4

  • optional

  • object

example:
json
"buttons": {
   "leftTop": {
      "primary": "switchPageNext",
      "alt": "requestPatch"
   }
}

Device

A device refers to a MIDI hardware or software instrument connected to one of Electra's MIDI ports. This could be a hardware synthesizer connected via a port onMIDI IO interface, a hardware sequencer connected to Electra's USB host interface, or a software plugin communicating through Electra's USB device port. Electra supports up to 32 simultaneously connected devices.

When working with Electra, you must define your connected devices explicitly - you do not send or receive MIDI messages directly to a port and channel, unless you are using low-level Lua API calls. This abstraction ensures consistent device handling and simplifies preset and control configuration.

example:
json
{
   "id": 1,
   "name": "Generic MIDI",
   "port": 1,
   "channel": 1
}

id

The identifier of the device in the preset that the override applies to.

  • mandatory
  • numeric
  • min = 1
  • max = 32

name

The name of the device. Electra writes it to the file to make the file easier to read, but ignores it when the file is loaded: the device keeps the name given in the preset.

  • optional
  • string
  • minLength = 0
  • maxLength = 20

port

A port number represents a MIDI bus inside the Electra One. Port 1 interconnects MIDI IO Port 1, USB Host Port 1, and USB Device Port 1 of the device's interfaces. Similarly, Port 2 interconnects MIDI I/O Port 2, USB Host Port 2, and USB Device Port 2. The Electra One Mini has a single pair of MIDI DIN sockets, so on a Mini port 2 is reached over USB only.

The port is always applied. A device that the file lists without a port is moved to port 1.

  • mandatory
  • numeric (1 or 2), or the string port1 or port2

channel

The MIDI channel of the device, used both for sending the device's messages and for recognising messages that come from it.

The channel is always applied. A device that the file lists without a channel is moved to channel 1.

  • mandatory
  • numeric
  • min = 1
  • max = 16

interfaces

The MIDI interfaces the device is wired to, for both outgoing and incoming messages, including SysEx. An array of midiIo, midiUsbDev and midiUsbHost, or a single name as a string; midiAll stands for all three. An empty array wires the device to nothing. See interfaces in the Preset format.

It is applied only when present. A file that does not mention it leaves the interfaces defined in the preset unchanged.

  • optional
  • array of strings, or a string

runningStatus

Not an override. Running status is defined by the device in the preset (see runningStatus in the Preset format), and Electra One ignores this attribute in a Device Overrides file. Firmware that wrote it into the file does not write it any more.

  • ignored

rate

Electra writes the device's rate to the file, but ignores it when the file is loaded. The rate is currently not in effect; see rate in the Preset format.

  • optional
  • numeric

Electra One proudly uses Lua and ArduinoJson.
For support contact info@electra.one · © 2019-2026 Electra One