# 8 Knob Control Hack

**URL:** <https://forum.electra.one/t/8-knob-control-hack/4503>\
**Category:** General discussion\
**Created:** [July 17, 2026, 2:47am UTC](https://forum.electra.one/t/8-knob-control-hack/4503 "2026-07-17T02:47:23Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quelectra](https://avatars.discourse-cdn.com/v4/letter/q/f475e1/32.png) [@Quelectra](https://forum.electra.one/u/Quelectra)\
**Post date:** [July 17, 2026, 2:47am UTC](https://forum.electra.one/t/8-knob-control-hack/4503/1 "2026-07-17T02:47:23Z")

</div>

I’ve been wanting an 8 knob version of the VFader since the E1 Mini showed up. Here’s a hack to use the _Four-Stage_ _dx7envelope_ that gives you 8 knobs but displays the graphic as an envelope with 4 levels and 4 widths. At some point we will get that 8 knob mixer control (with assignable names for the knobs)

The _Four-Stage_ control which is under the ADSR categories. I might have discovered this hack a while ago if this was called something other than _ **Four** -Stage. 😉_ It has 8 values (in spite of the name). L1-L4 are the top knobs and R1-R4 are the lower knobs. The internal control type is _dx7envelope._

You have to ignore/reinterpret the envelop graph. The L’s control the 4 segment heights and the R’s control the 4 widths. It’s confusing, but not a bad compromise. I’m pretty sure I can move a custom control to displays an 8 valued mixer) over the graphic on the collapsed control. Don’t think that will work in expanded mode.

```auto
{
      "id": "123-456-789",
      "reference": 1,
      "type": "dx7envelope",
      "deviceId": 1,
      "color": "ffffff",
      "name": "Gain+Eq",
      "values": [
        {
          "id": "l1",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6420,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "l2",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6421,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "l3",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6422,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "l4",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6423,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "r1",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6440,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "r2",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6441,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "r3",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6442,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        },
        {
          "id": "r4",
          "message": {
            "type": "virtual",
            "deviceId": 1,
            "parameterNumber": 6443,
            "min": 0,
            "max": 16383
          },
          "formatter": "formatMinMaxFloat10",
          "function": "onCoalescedFaderChange"
        }
      ],
      "visible": true
    }

```

---

<div class="post-metadata">

**Author:** ![SV\_huMMer](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/sv_hummer/32/4757_2.png) [@SV\_huMMer](https://forum.electra.one/u/SV_huMMer)\
**Post date:** [July 17, 2026, 12:57pm UTC](https://forum.electra.one/t/8-knob-control-hack/4503/2 "2026-07-17T12:57:57Z")

</div>

Is this only applicable to E1 Mini? Or it can work on E1 MkII as well?

---

<div class="post-metadata">

**Author:** ![Quelectra](https://avatars.discourse-cdn.com/v4/letter/q/f475e1/32.png) [@Quelectra](https://forum.electra.one/u/Quelectra)\
**Post date:** [July 17, 2026, 7:14pm UTC](https://forum.electra.one/t/8-knob-control-hack/4503/3 "2026-07-17T19:14:41Z")

</div>

I was able to add the overlay of a custom control to display the values as an 8 bar mixer. It also handles the knob turns in the compact state. The four stage control is still there to handle knob push which opens up the expanded view which has 8 knob controlled dials.

I had to to make the four stage control not visible; it was the only way I found to ensure the overlay control was on top/drawn last. Maybe there’s a simpler way. There’s a useful bug, er feature, where the four stage control still handles the knob push when not visible. If that ever changes, we’ll need some other way to control the display order. Hopefully before then we will have the ability for a **custom control to handle knob presses … and to handle turn events on all knobs** , not just the one for it’s slot.

> Is this only applicable to E1 Mini? Or it can work on E1 MkII as well?

The editor lets me add the control to the MkII layout, but that does not mean it will or won’t run on the Mk II hardware. Maybe?

Does the MkII have push encoders? That’s needed to open up the hidden control.

---

<div class="post-metadata">

**Author:** ![SV\_huMMer](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/sv_hummer/32/4757_2.png) [@SV\_huMMer](https://forum.electra.one/u/SV_huMMer)\
**Post date:** [July 17, 2026, 7:34pm UTC](https://forum.electra.one/t/8-knob-control-hack/4503/4 "2026-07-17T19:34:41Z")

</div>

No, MkII encoders don’t have the push action. But maybe this action can be triggered by assigning a button to it.

There’s also a (dangerous and difficult ))) way to custom-assign the capacitive touch action, but it’s so tricky that I decided not to use it, but I tried, and it sort of works)

---

<div class="post-metadata">

**Author:** ![Quelectra](https://avatars.discourse-cdn.com/v4/letter/q/f475e1/32.png) [@Quelectra](https://forum.electra.one/u/Quelectra)\
**Post date:** [July 17, 2026, 8:14pm UTC](https://forum.electra.one/t/8-knob-control-hack/4503/5 "2026-07-17T20:14:40Z")

</div>

I looked for a way to trigger the control to open up the expanded view. Did not find anything. The building controls are all c++ so unlikely to have a lua binding if a method exists.

---

<div class="post-metadata">

**Author:** ![Quelectra](https://avatars.discourse-cdn.com/v4/letter/q/f475e1/32.png) [@Quelectra](https://forum.electra.one/u/Quelectra)\
**Post date:** [July 17, 2026, 8:15pm UTC](https://forum.electra.one/t/8-knob-control-hack/4503/6 "2026-07-17T20:15:24Z")

</div>

The real solution is a proper 8 encoder mixer control built in to the unit or The ability to create a custom control that does the same.
