Additional MIDI controller as an E1 expander

The Electra One can use other MIDI controllers as expanders.
That in itself is not new. You could foresee a FaderFox for instance that will also control CC values known to the E1, and in such way expand the physical controls of an E1.

But imagine to go beyond that, and use an additional MIDI controller as a generic E1 expander, regardless on what page the E1 is set.
For that purpose I looked, found and acquired an old Behringer BCR2000, which has 32 encoders with light rings for feedback. In total it may control 56 continuous controls and control 64 buttons. That is more than sufficient to test this idea.

Potential set up of BCR2000 as Electra One Expander
If I’d use it as an expander to the E1, this would work as follows:

  • I’d keep the E1 focused on its upper section of each page
  • Page dependent controls: 4 rows of 6 rotary encoders on the BCR2000 would then control the 24 controls for the E1s middle and lower section
  • DAW oriented controls: 8 buttons on the BCR2000 would be reserved for MMC like controls (you know, play, record, fwd, punch in/out…). But that has nothing to do with the E1.
  • PC and BC: 4 buttons and 2 encoders would always be reserved for program and bank change (select a program, ±, -1 …)
  • E1 Page change buttons: 4 of them: go to first, previous, next or performance page (a ‘performance’ page to pe is the page you’d usually want to be during a life performance)
  • Performance: 6 encoders would always be reserved for main performance controls, regardless of the page the E1 is on: for instance cutoff, resonance, attack, decay, lfo speed, lfo depth

Page and preset changes
Everytime you change a page on the E1, the E1 should transmit via SysEx the setup of the 24 Page dependent controls and update the BCR2000 temporary memory. This SysEx defines all the characteristics of each of the controls, including the current value of the control. The BCR2000 would thus also reflect actual state of these 24 controls. However a BCR is not as clever as an E1, so list controls must be defined on the number in the list (0…4 for a list with 5 options), not with the value each option has (the BCR cannot be limited to for instance 0,31,63,95,127). In other words, there is some mapping to be done at the side of the E1 to address the simpler characteristics of external MIDI controllers.

Everytime you change a preset on the E1, some other SysEx preset dumps are needed to ensure:

  • It knows the boundaries for program and bank changes
  • It knows the E1 page number, considered as ‘performance’ page
  • It knows which controls should be assigned to fixed locations on the BCR2000, regardless on the page the E1 is set to.
  • MIDI routing, which is preset dependent:
    • should MIDI data received by the E1 be forwarded to the BCR2000?
    • should any other MIDI data generated by the E1 be forwarded to the BCR2000?
    • should any other MIDI data send by the BCR2000 be ignored by the E1?
    • should any other MIDI data send by the BCR2000 be forwarded to USB port, MIDI 1, MIDI 2?

Bidirectional control
And everytime you tweak a control on or received by the E1 this data should be mapped against the MIDI controller set up, so the E1 could retransmit it when expected, with the correct value to the MIDI controller.
The external MIDI controller , dumb as it is, will always transmit its data changes to the E1, so we must ensure the E1 then knows how to handle that data.
To avoid double transmissions to other MIDI devices, the exchange between E1 and BCR2000 could use a set of dedicated NRPN’s or even Sysex messages to keep them outside of the ranges used by the other MIDI devices.

Can it be done?
By reading the BCR2000 SysEx implementation, it looks like we could do this. And with the extended firmware 3 memory, I also think the E1 is capable of it. However it will be a tedious job, which is to be redone with each of the presets. Tedious because the SysEx language of Behringer’s BCR2000/BCF2000 is quite specific, and will need a lot of translation.
Yet, I may be starting to experiment with this.

Has anyone already tried out the idea of dynamically reassigning controls on an external MIDI controller, based on the E1’s preset or page?
If so has anyone found a way to convert this in a kind of library, so he did not need to reprogram everything again when using the same MIDI controller for a different preset.