Relative CC's / host controlled mode

It would be extremely useful to have a control mode for sending relative CC changes, and allowing the host or connected device full control over the value displayed on the screen.

This is the only way I have been able to reliably handle MIDI controllers that are hooked up to e.g. automation or modulators, without jittering / flashing or other inconsistencies on the device (as it tries to reconcile local encoder changes with incoming MIDI messages). Note that this is not a problem specific to Electra - many LED ring or screen-based MIDI devices don’t handle automation or modulation very well.

The feature would be something like:

  1. A new boolean flag “Relative” that applies to CC (7 and 14 bit), RPN, NRPN parameter types.
  2. On an encoder change, when “Relative” is enabled: a relative change is sent via the expected MIDI channel and id. Relative changes are usually specified as 63 (down) and 65 (up), but there are a few more esoteric modes that are sometimes used (this may not be important to implement, as most DAWs have options to handle all types). Probably it would make sense to send these in the MSB slot (in the 14 bit case), with a 0 for LSB, since I believe this would make the outgoing MIDI messages identical for 7-bit and 14-bit?
  3. On an encoder change, the screen display is not automatically updated by the device. The screen should update normally from incoming MIDI signals, which makes the DAW / device responsible for setting the displayed value.
  4. It’s possible that this feature could skipped for NRPN and RPN, since it may be less standard for these MIDI message types? But (N)RPN is sometimes easier to implement when scripting device support in a DAW, so it could be important for Electra DAW support - but it’s not high value for my workflow.

Thanks so much for this wonderful device! I’m already blown away w/ how configurable it is :slight_smile:



glad to hear you like Electra!

We are preparing a release of new firmware that comes with a major upgrade of how Electra works internally. This upgrade will allow new types of controls, including those with multiple values (such as ADSRs, etc) and it will also improving handling of large Sysex messages. I will add your feature request on to our TODO list. But we will be definitely scheduled after the major upgrade is out and verified to be stable.



1 Like

Did this get dropped? It would be super useful with a simple relative encoder mode as described above, and where the display of electra only upgrades when it gets midi messages from the daw/computer.
I’m trying to write an extension for Bitwig to control VSTs and it would be super helpful, if electra could have relative knobs.

Using Bitwig also and hoping to get some integration or way of controlling the BW instrument REMOTE assignments quickly and easily.

@andersskibsted shared his ideas about this with me yesterday. As for the messaging it was very clear to me already in past but I struggled a bit how such a control would be represented on Electra’s side, as I am not sure if this is something that is 100% reliable for all DAWs:

I have Novation 49SL available now. I will take a look at how they do that…

@rhawtin Same for me. How far did you come already with automatically assignments to Bitwig remote controls?

Just got my Electra today!!

FWIW the workflow I use for controlling BitWig with an Electra:

  1. I specify the Electra control layout in SuperCollider, which configures the Electra by sending sysex.
  2. SuperCollider receives the Electra’s MIDI messages…
  3. And sends them to BitWig as OSC…
  4. Which receives them via the DrivenByMoss OSC Extension.

This is a bit convoluted, and of course it would be better to build a controller extension in BitWig itself. However, I mostly work in SuperCollider and usually am already specifying a controller layout there anyway. Additionally, the MOSS OSC extension allows both arbitrary “user” parameters that be learned like a regular MIDI control, but ALSO allows controlling fixed things like /track/2/mute or /track/selected/volume. The latter is useful b/c I can make a screen of track controls without having to learn them in each project.

Happy to share this with anyone, though I must warn it requires touching some code and a bit of configuration, and probably isn’t very useful as a replacement for a straightforward “MIDI learn” workflow.

Also, as it’s set up now, it’s pretty trivial to send the names of the learned controls in BitWig back to the device - control names are helpful :).

1 Like

I’m trying to create a controller extension for the Electra for Bitwig so it will automatically map to plugins in a specific way, individual from plugin to plugin, and change page on the electra depending on which plugin is selected in bitwig.
The Bitwig API is really powerful - but I have to code a lot of Java which is not something I’m super good at, so it won’t be done straight away.
I can try and cook something up that will automatically let you control the remote controls in bitwig. @Danilosan and @rhawtin let me know exactly what you’re looking for, and I’ll see if I can do something that does it. Maybe just quick and dirty to start of, but we might be able to develop something good together. Most parameters of devices, presets, remote controls and macros are accessible from the API, so you can assign controls automatically and do different stuff with it.
My main problem has been handling the feedback, so the values of the knobs will have the right value when you shift from device to device in bitwig. It’s probably my Java-skills that are not sufficient.

But relative knobs would solve a lot of the feedback problems as the Bitwig API has a lot of built in support for relative knobs.

1 Like


I can try and cook something up that will automatically let you control the remote controls in bitwig.

That I consider as the perfect starting point and would be already very helpful!

we might be able to develop something good together.

I am a comfortable JavaScript programmer and not really a deep Java expert either, but I get along with it quite well. If you place the code on GitHub and make it available, I am happy to contribute as soon as I learned more about the Bitwig API :wink:

1 Like