MIDI mapping mc.gain~

Markus Baumknecht's icon

hi everyone,

is there any way to map the different sliders of mc.gain~ to different MIDI faders?

best,

Peter Ostry's icon

I don't see anything about addressing single sliders in the help or reference page. The values come out as list, so I assume that you need full list control to move a single fader. If you don't have permanent control over that, you may store the list in zl.reg or coll, change individual items and store the new list.

Or use mc.unpack or mc.separate and individual sliders. Technically not so elegant, but easy to implement. However, you may need lists anyway for certain settings or MIDI mapping. It could pay off to look into the other method.

Markus Baumknecht's icon

hi Peter, thanks for your reply. ok that means you're seeing the same thing I'm seeing.

how would I go about the lists method? I've never heard lists mentioned in the context of MIDI mappings ...

Peter Ostry's icon

That depends on how you do your mapping. I assume that you design it yourself and don't use the Max mapping functions. If there are many mappings, I usually collect my "map" in a coll or multislider.

In the case of the gain~ sliders you could store the current values of your 4 sliders as a list in zl.reg or in a coll line, and when an external CC number comes in, change the corresponding list item, send the whole list to the gain~sliders and store the new list at it’s place.

Peter Ostry's icon

Here is an example patch.

The incoming CC numbers work on the single line 0 of coll, while mousing the mc.gain~ sliders or sending them values sets the list in coll. You can of course have more than one line to operate more slider groups and other control elements. Or use multiple colls if you don’t care about the processing overhead.

There is no data loop within the patch because only the list in coll is changed by the mc.gain~ sliders, which alone does not generate a coll output.

External controller for mc.gain~ sliders with optional feedback to controller.

(The controller receives its transmitted values back immediately as feedback. Normally it doesn't mind this. But of course it must not re-send them, as this would create a feedback loop).

Max Patch
Copy patch and select New From Clipboard in Max.

Thanks again to SOURCE AUDIO for this single-coll-line idea for list manipulation. Quick setup and works really well!

Markus Baumknecht's icon

ah this is great. thank you so much! would have never thought of solving it this way