# Additional MIDI controller as an E1 expander

**URL:** <https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761>\
**Category:** Ideas / Feature requests\
**Created:** [November 19, 2022, 12:07pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761 "2022-11-19T12:07:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![NewIgnis](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/newignis/32/767_2.png) [@NewIgnis](https://forum.electra.one/u/NewIgnis)\
**Post date:** [November 19, 2022, 12:07pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/1 "2022-11-19T12:07:14Z")

</div>

**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.

---

<div class="post-metadata">

**Author:** ![moullinex](https://avatars.discourse-cdn.com/v4/letter/m/c6cbf5/32.png) [@moullinex](https://forum.electra.one/u/moullinex)\
**Post date:** [May 22, 2023, 7:23am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/2 "2023-05-22T07:23:07Z")

</div>

I’ve been using [this](https://www.parkstool.com/parkstool/8p) controller as an “expander” for Electra. It controls one page of parameters only, as potentiometers allow me to operate it without looking at the screen when performing.  
They are CC-mapped to mirror the controls on a set Electra page.  
However, while data is sent smoothly between this controller and the receiving device, the controls’ display on Electra take a while to update.

---

<div class="post-metadata">

**Author:** ![NewIgnis](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/newignis/32/767_2.png) [@NewIgnis](https://forum.electra.one/u/NewIgnis)\
**Post date:** [May 22, 2023, 10:48am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/3 "2023-05-22T10:48:09Z")

</div>

Exciting about this product is its limited size

So I understand the knobs do not follow the pages of the E1, but instead you chose them to control specific parameters, regardless of the page the E1 is on?  
that is sensible as well… but does this mean you need to reprogram them every time you go to a different preset on the E1?

Do you happen to know if they can be configured into using NRPN messages, instead of CC?

---

<div class="post-metadata">

**Author:** ![moullinex](https://avatars.discourse-cdn.com/v4/letter/m/c6cbf5/32.png) [@moullinex](https://forum.electra.one/u/moullinex)\
**Post date:** [May 22, 2023, 4:13pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/4 "2023-05-22T16:13:28Z")

</div>

yes, my use case is as you describe - i needed a “global” controller regardless of page - and it needs to be reconfigured per preset, yes.  
This are the config options for each pot (it’s running Arduino Leonardo inside so I guess you could tweak it…) - it also allows to use as HCI device (e.g. to control systemwide functions like volume or display brightness)

 ![image](https://europe1.discourse-cdn.com/flex017/uploads/electraone/original/2X/8/8076d647d0700988dc29e1aae65c1f93f96fd427.png)

---

<div class="post-metadata">

**Author:** ![Abbes](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/abbes/32/989_2.png) [@Abbes](https://forum.electra.one/u/Abbes)\
**Post date:** [May 22, 2023, 5:06pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/5 "2023-05-22T17:06:38Z")

</div>

Hello ! I am unshure to understand . Could i control parameters not controlled by the E1 Knobs with an external controller that let us change “other” E1 Parameters displayed on the screen ? And it will change dynamicaly the “other” parameters controlled regarding the page we are on ?  
Or is it just that the other controller is assigned to the same CC as the E1 is assigned and the E1 routes thoses ?

---

<div class="post-metadata">

**Author:** ![moullinex](https://avatars.discourse-cdn.com/v4/letter/m/c6cbf5/32.png) [@moullinex](https://forum.electra.one/u/moullinex)\
**Post date:** [May 22, 2023, 6:58pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/6 "2023-05-22T18:58:09Z")

</div>

in my case, the latter - in @NewIgnis, the former.  
I find it for live performance having potentiometers with a beginning and end helps me not having to look at the electra, while being able to look to have a glance of how they are set - so my template for live performance has common controls displayed on the bottom row for every page of the preset, and mirrored in the external controller.

@NewIgnis approach would be more like a “meta-controller” that controls the whole electra 6x2x3 pots while also controlling the DAW directly. If I understand well 🙂

---

<div class="post-metadata">

**Author:** ![moullinex](https://avatars.discourse-cdn.com/v4/letter/m/c6cbf5/32.png) [@moullinex](https://forum.electra.one/u/moullinex)\
**Post date:** [May 22, 2023, 7:02pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/7 "2023-05-22T19:02:23Z")

</div>

I used the two styles of display to distinguish between what’s mapped to my controller and (thin) and what’s not (classic)

 ![image](https://europe1.discourse-cdn.com/flex017/uploads/electraone/original/2X/1/170197da5897e1cde81c7d5a1e3124ebfd3c7256.png)

---

<div class="post-metadata">

**Author:** ![icaria36](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/icaria36/32/2749_2.png) [@icaria36](https://forum.electra.one/u/icaria36)\
**Post date:** [October 26, 2023, 7:51am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/8 "2023-10-26T07:51:11Z")

</div>

> [@NewIgnis](#):
>
> 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._

Ah, good that you created this topic, otherwise I would have started one today. 🙂

I was looking at fader controllers like the [Sparrow 8x100mm MIDI controller – The MIDI Maker](https://themidimaker.com/products/sparrow-8x100mm-midi-controller), and wondering what would it take to use it as an Electra 1 extension.

I’m thinking especially on the [DrivenByMoss for Bitwig and Reaper](https://forum.electra.one/t/drivenbymoss-for-bitwig-and-reaper/1830) extension, where the mixer is already organized in blocks of 8 channels.

I wonder whether an 8 faders controller could be used here. Bonus points if there is a way to use a 4 faders or smaller numbers and have a way to jump to the next/previous bank. I was even thinking about the possibility to plug a top quality 1-fader controller and use it in combination with whatever is active on the E1. 🙂

For what I have seen, these dedicated fader controllers tend to have some way to configure their MIDI signals in detail.

---

<div class="post-metadata">

**Author:** ![Zebra](https://avatars.discourse-cdn.com/v4/letter/z/c0e974/32.png) [@Zebra](https://forum.electra.one/u/Zebra)\
**Post date:** [January 14, 2024, 1:43am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/9 "2024-01-14T01:43:44Z")

</div>

Can we please get this feature? MIDI merging is not enough for me. The “expander” midi controllers I have only send out MIDI. I am using Electra to send out Sysex. I would like the midi controllers to tell Electra to send out the sysex parameters… essentially turning the Electra into a very powerful translator and generic midi controller interface where the expander controllers do not need to concern themselves with any implementation details. You can also then switch between banks and your expander controllers will just continue to work (just on a different bank… or not, who knows!). On top of this, it could auto switch to the pages that you are turning the parameter knob for so you will always have visual feedback of what knob is what.

It looks like Electra has some very basic midi control support already… now please let us control the parameters via external midi controllers too, please. 🙂 :

[https://docs.electra.one/extcontrol.html](https://docs.electra.one/extcontrol.html)

---

<div class="post-metadata">

**Author:** ![busa](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@busa](https://forum.electra.one/u/busa)\
**Post date:** [March 30, 2024, 1:17pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/10 "2024-03-30T13:17:29Z")

</div>

That definitively would be a huge improvement to have the Possibility to extend the E1 with additional Pots!

The suggested Solution from Ignis is like the dream solution, but a lot of work to implement. But there would also be a easier Solution by just extending the Extcontrol-Possibilities :

Just define 36 CC which correspond to the Slots on the Active page, accepting relative Values. Like this we could easly extend the E1 with every simple Controller witch supports Relative CCs (like Intech EN16, Faderfox aso) without the need to have two-way communication. So basically the external Ports would act like the internal Pots.

I thought about implementing that myself with Lua, but there are missing Lua Functions like getControlBySlot or the possibility to get the parameterType of a Control which i would need for Parameter Map Actions.

If somebody has another solution: i would be really happy the get some infos!

---

<div class="post-metadata">

**Author:** ![jhh](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/jhh/32/951_2.png) [@jhh](https://forum.electra.one/u/jhh)\
**Post date:** [March 31, 2024, 8:25am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/11 "2024-03-31T08:25:47Z")

</div>

I bumped into this topic and think it would be a nice extension to the Ableton Remote script as well. Say you have a 36 knob external control, with fixed CC assignments (ie a very dumb device), if you connect it to the MIDI in of an E1 it would control the 36 parameters in the page currently shown on the E1. This would require some internal mapping of these fixed CCs to the parameters currently shown. I was looking at the parameter map in LUA [Preset Lua extension | Electra One Documentation](https://docs.electra.one/developers/luaext.html#parameter-map) but it is not clear how exactly the `parameterNumber` in `parameterMap.set` is assigned to specific parameters shown on the E1. Is this the same as the control-id in a preset? Is it assigned in sequence as a preset is loaded? @Martin is this documented somewhere?

---

<div class="post-metadata">

**Author:** ![martin](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/martin/32/145_2.png) [@martin](https://forum.electra.one/u/martin)\
**Post date:** [April 1, 2024, 5:45pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/12 "2024-04-01T17:45:33Z")

</div>

The `parameterMap` is used to keep state of the MIDI parameters within the preset. On-screen controls do not keep the value, they just have a link to particular entries in the `parameterMap`.

ie. if you create Fader control with ref id 1, which send/receive CC #12. there will be an entry in the `parameterMap` with `type` set to “CC” and parameterNumber set to 12. The Fader control will be linked to that entry.

note, type / parameterNumber entries are always unique. If there are more controls in the preset that receive/send the same MIDI message, they will all link the same entry in the `parameterMap`.

I like the idea of simple assignment of external controller to E1’s preset control, but using the “slot” number on the page would be quite complicated. Especially with recent changes to the firmware that allow more flexible layout of the pages.

The preset JSON (format) has so called “input” associated with each control value. Currently it is used for pot assignments. One control value may have multiple inputs defined. eg. I want to use it for mapping MIDI 2.0 properties to preset controls. Assigning a CC message is an option too.

---

<div class="post-metadata">

**Author:** ![jhh](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/jhh/32/951_2.png) [@jhh](https://forum.electra.one/u/jhh)\
**Post date:** [April 1, 2024, 7:33pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/13 "2024-04-01T19:33:19Z")

</div>

Ah, thanks. That’s clear (although inconvenient for the use case I had in mind 😉

---

<div class="post-metadata">

**Author:** ![busa](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@busa](https://forum.electra.one/u/busa)\
**Post date:** [April 1, 2024, 9:06pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/14 "2024-04-01T21:06:56Z")

</div>

@martin The “Slot” Idea was actually only a workaround to get the right ParameterMap-Entry:  
From Slot you get the Control, from Control you get the PT and and ParameterID, and with that info, you can use get/set on the ParameterMap. So, that was only a approach i was thinking about. But it would definitely only work on the “classic” layout with 36 fixed Slots, and not with the new, more flexible Controls.

I think at the end, the best Way would be, if every ControlSet/Pot Tuple has a fixed CC Parameter which accepts Relative Values. So CS1/P1 would have CC1, CS1/P7 would have C7, CS2/P1 would have CC13, CS3/P1 would have CC25 aso.

Like this, if you would send a CC Relative Value to CC13, the E1 would behave exactly the same as when you would Select ControlSet2 and Turn Pot1, no matter to which control CS2/P1 would be assigned. Or if you send CC36, it would be the same as selecting ControlSet3 and Turn Pot 6. Relative values would be important, as the E1 would not need to send CC-Updates on Page Change to the Controller and the Controller would not need to keep track of the Values, as the E1 already does that. That would also work for new Controls witch are not bound to the 36-Slot Grid, as you need to assign CS/Pot Tuples to this Controls anyway, to have them working with the E1-Pots.

Like that, you could extend the E1 with a simple 24 Encoder Midi Controller and you could work with the E1, as it would have 36Pots. And to be honest: For me thats the only annoying thing on the E1 to always switch the ControlSet. Im always altering the wrong Conrol, just because i have the Focus on the wrong ControlSet.

---

<div class="post-metadata">

**Author:** ![jhh](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/jhh/32/951_2.png) [@jhh](https://forum.electra.one/u/jhh)\
**Post date:** [April 1, 2024, 9:35pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/15 "2024-04-01T21:35:12Z")

</div>

@busa I like the approach you suggest very much!

---

<div class="post-metadata">

**Author:** ![Abbes](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/abbes/32/989_2.png) [@Abbes](https://forum.electra.one/u/Abbes)\
**Post date:** [April 2, 2024, 10:55am UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/16 "2024-04-02T10:55:28Z")

</div>

Hello ! I wanted just to point something else in all those good solutions . user-friendliness ? Like we would have the option to do that without coding ? Just clicking and perhaps writting numbers on the editor ? 🙈 . Because i really enjoy using programs but i am not able to code . I like the idea behind the “ControlSet/Pot Tuple” but i will really appreciate not to program those . just picking them on the editor interface and associate them to my external Midi fighter twister, or Fader port or BCF ? 🙂

---

<div class="post-metadata">

**Author:** ![martin](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/martin/32/145_2.png) [@martin](https://forum.electra.one/u/martin)\
**Post date:** [April 2, 2024, 3:39pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/17 "2024-04-02T15:39:27Z")

</div>

I think where @busa and @jhh are heading is basically a zero-configuration on E1 side. And I second that. I see it that there could be only a general on/off switch and MIDI channel setting in the controller configuration to enable/disable the feature.

---

<div class="post-metadata">

**Author:** ![busa](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@busa](https://forum.electra.one/u/busa)\
**Post date:** [April 2, 2024, 5:49pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/18 "2024-04-02T17:49:58Z")

</div>

@martin i think that would be super awesome for all the non programmers! sounds exiting!

---

<div class="post-metadata">

**Author:** ![fragletrollet](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/fragletrollet/32/4943_2.png) [@fragletrollet](https://forum.electra.one/u/fragletrollet)\
**Post date:** [July 1, 2024, 10:46pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/19 "2024-07-01T22:46:45Z")

</div>

sorry, just reposting from the other thread:

I for one, would just like a box that has the same width as the E1, same amount of buttons and same amount of encoders. So basically the E1 without the screen.

This way you could add two of them, and have encoder control over every parameter on the selected page.

On second thought, just make the expander into the double version straight away

---

<div class="post-metadata">

**Author:** ![busa](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@busa](https://forum.electra.one/u/busa)\
**Post date:** [August 29, 2024, 8:23pm UTC](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761/20 "2024-08-29T20:23:09Z")

</div>

@martin any news on this Idea? 😬

[Next page](https://forum.electra.one/t/additional-midi-controller-as-an-e1-expander/1761.md?page=2)
