bitfocus / companion-module-behringer-x32

Behringer x32 module for companion
MIT License
20 stars 7 forks source link

[Feature Request] Active "Bank" select for X32 Rack #122

Open ki3v opened 4 months ago

ki3v commented 4 months ago

Thank you for such a great module!

This is a request to add an Action to select the active channel "Bank" so the physical meter, solo/mute buttons, and level knob on the left side of the X32 Rack can be set.

(Selecting a group bank is, I believe, meaningless on the X32 Rack, as there are no physical group controls.)

There are currently two pairs of actions for selecting the active channel and group bank, two for the compact mixers, and two for the full-size X32/M32. This is because the indices to the OSC message are interpreted differently by those two types of mixers. The X32 Rack is a third type, using still different indices.

The OSC message is -stat/chfaderbank, which I believe is the same as the above channel bank Actions.

The index for the selector is similar to the generic channel select (which works normally on the X32 Rack and selects the active channel in the display and on the "home" or channel page). This should hopefully make the work to set up the drop down Bank selection box mostly a cut and past from the "x32: Select" action.

Here are the actual index assignments i.e., /-stat/chfaderbank i <channel> where <channel> is:

0-31: channel 1-32 32-39: aux 1-8 (aux 7/8 are not physical ins but can be reassigned) 40-47: fx1L,fx1R,fx2L,fx2R,fx3L,fx3R,fx4L,fx4R (fx returns) 48-63: mixbus 1-16 64-69: matrix 1-6 70: Main LR 71: Main M/C 72-79: DCA 1-8

I believe this is the same as the channel select indices, except for the additional 8 DCAs at the end (you can't select the DCAs as a channel on the main screen).

Thanks!

ploveman commented 4 months ago

Sorry for my ignorance about the x32 Rack; are you asking for a select bank or select channel for the rack? The x32 compact (and believe x32) the select bank options change what's shown on the desk (I have a compact and there is a left and a right action) to correspond with the select buttons so that you can see a different set of inputs. The OSC commands you reference above change that group and has indices of 0-3 for the x32. From what you described above I'm not sure how those indices would translate. Are you looking more for something like the select action (current channel) but different indices (I think that's also a different OSC command)?

ki3v commented 4 months ago

Thanks for the follow-up. I only have the XR18 and the X32 Rack, so I can only compare to the console versions based on what I've read and watched on YT.

I'll try to explain what I'm trying to request. Apologies for the verbosity. I'm trying to be complete/clear, since obviously I wasn't clear above.

The existing select channel Action ("x32: Select", i.e. OSC message /-stat/selidx i <channel>) works perfectly on the X32 Rack. It changes the channel selected on the main display just like it does on the consoles. So that action needs no changes for the X32 Rack.

For context on what I'm asking:

(There are controls on the right of the display for main LR, talkback, and monitor, but they can't be assigned or remapped, so they are not relevant here. I'm only talking about the strip of controls between the logo and the main display.)

The Rack of course has no physical faders. What it does have on the left side of the display is a single level knob with solo/mute buttons, and above those, a knob that you can spin to choose which channel or group those three controls will act on, indicated by a two-digit 7-segment display and a row of LEDs for identifying the assigned channel/group, and an LED meter.

Spin the dial to, say, channel 9 ("IN" LED lit and "1" on the number display) and the fader (knob) and solo/mute will act on channel 9. Spin the top knob until the "DCA" LED is lit and the display shows "d3", and the level/solo/mute will operate on DCA 3. Any channel/bus/group/etc that can be assigned to any fader on a console, left or right, can be assigned to the single physical control strip on the Rack just by spinning the top dial.

(There's nothing like "send on fader" or adjusting sends with this knob. This is main fader levels only. And yes, spinning through 80 values on that little knob is very tedious, which is the main reason I made this feature request!)

Pressing the top dial is like the the "SELECT" button at the top of each fader strip on the consoles: the channel currently showing on the dial becomes selected on the main display.

IMG_0310

(Please pardon my dusty panel.)

The existing "x32: Select active channel bank (X32 Compact/X32 Producer/M32R)" action has several options, "CH 1 - 8", "CH 9 - 16", etc. If I create a Companion button with that action, and select "CH 1 - 8", the button changes the channel on the dial to channel 1, and you see what I attached above (I think the Action sends /-stat/chfaderbank i 0).

If I select "CH 9 - 16", the action brings up channel 2, and you see what I have attached below (I think the Action sends /-stat/chfaderbank i 1).

IMG_0311

The LEDs say IN 2, and the physical controls are now assigned to channel 2. Pressing the top knob now would select CH2 in the main display.

Prior to using Companion, I created a set of (dead simple) scripts to control the X32 rack and trigger them from hotkeys. If I send /-stat/chfaderbank i 0, it brings up channel 1 on the LED and the level knob adjusts the fader for channel 1. If I send /-stat/chfaderbank i 1, it brings up channel 2.

The table I listed previously is all of the values that work with that OSC message, and what they bring up on the Rack's front panel. If I send /-stat/chfaderbank i 40, it brings up the fx1L return on the knob and solo/mute buttons, and I get this on the front panel:

IMG_0312

So to me it looks very similar to assigning banks of channels to the left side faders of the X32 consoles, except that in this case, there's only one fader (knob), and you can assign it to any channel or group that you can assign to a fader on a console, either left or right. Since there's no "send on fader" and the knob only ever adjusts the channel/group level, there is no need for left vs right fader bank on the Rack.

It seems to me that Behringer is treating those controls as a "fader bank" of just one simplified fader (knob), mute, and solo button.

As for the indices to the OSC message: the full-size variants of the X32/M32 have 16 faders on the left side, so there are 4 options for /-stat/chfaderbank i <bank>. The compact variants have 8 faders, so they split each bank in half and there are 8 valid values. The Rack only has one very simplified "fader", and it is shared between channels and groups, so it has the 80 possible values for /-stat/chfaderbank i <n> that I listed previously.

That's why I'm thinking if we had another variant of "x32: Select active channel bank" that was specific to the X32 Rack and had the dropdown options as in the table I listed above, it would do exactly what I'm looking for. It may work for M32C users as well, but that mixer has yet a different front panel and I'm afraid I don't know for sure.

I probably confused matters by mentioning the "x32: Select active group bank" actions, sorry. They have no effect on the X32 Rack that I can see (and neither does /‐stat/grpfaderbank i <bank>). I was just noticing them as another example of an OSC command whose parameter is interpreted differently by different models of X32/M32.

And when I was referring to the "x32: select" action, I just meant that the indices that work when sending /-stat/chfaderbank i <n> to the X32 Rack are very similar to the indices you use for the "x32: Select" action and /-stat/selidx i <n>, but with 8 additional possible values of <n> for the DCAs. Again, that was probably more confusing than helpful, because that Action works perfectly on the Rack.

And finally... on my Mac I can get the result I want by just using an Action to run one of my OSC scripts. But that doesn't work on Windows or for anyone who doesn't have my scripts. This isn't super high priority, but it does seem like relatively low hanging fruit.

ploveman commented 4 months ago

I think I follow now; so the desire would be to have the same dropdown as the existing select (include DCAs) and then the /-stat/chfaderbank i like you have above? Any thoughts on what to call the action (besides include something that is Rack specific)? Bank seems not quite right since it's not really "bank".

ki3v commented 1 month ago

Thanks for your attention on this. I've been away from this work for a while but I'm looking at it again.

Yes, that's exactly what my idea was.

As far as naming: yes, it's not necessarily easy to come up with a clear name. It's not really a bank.

Behringer doesn't really give this section of the front panel a consistent name so far as I've noticed. In the manual, it says things like this:

"CHANNEL SELECT control cycles through all channels by turning the knob. By pressing this knob, you can jump to the next type of channels."

(This may have been correct when the X32 Rack was originally released, but in current firmware, pressing the knob selects the channel on the main display)

"CHANNEL TYPE LEDs indicate which type of channel is currently selected."

"CHANNEL NUMBER shows the currently selected channel."

So they mostly just call it "selected", but that's ambiguous because there's a separate "selected" channel on the main display, for adjusting with the main encoder knobs below the display.

I'd say something like "Select active channel controls (X32 Rack)" might work. Or "Select active channel for front panel controls (X32 Rack)".

I looked into the source with the idea that I could just submit a PR for this and other additions. I barely know JS but a language is a language for the most part and I generally can code in a number of languages. The architecture of Companion modules, however, to support all of its interactivity and feedback capabilities, is clearly not trivial. It will take a bit of studying.