MIDI map function for matrixctrl doesn't work. Is there an alternative way?


    Laura Papke
    May 26 2023 | 7:12 pm
    Hi all, this is a very simple question with a probably difficult answer. I would like to map my matrixctrl in MaxMSP to use it with a Midi controller for a live performance. As the midi map functions (enable for mapping & assign midi map) aren't available, what would be the best way to create a similar structure that I could map onto? I tried to find a solution via google search already, but couldn't really find anything. Thank you very much already.

    • slo ~|β€’'s icon
      slo ~|β€’
      May 26 2023 | 9:25 pm
      If I understand the question, you could use Max objects to receive the MIDI data from your controller, and then connect to matrixctrl.
      ctrlin, midiin, etc. objects are starting points.
      The details depend on what MIDI controller your are working with and what you want to do with the matrixctrl
    • Laura Papke's icon
      Laura Papke's icon
      Laura Papke
      May 26 2023 | 9:51 pm
      Hi, I think you understood that I use the midi controller as an input right? I am actually using it to turn on volumes and to click in different samples on different speakers with the matrixctrl. But matrixctrl shows me that I can't map onto it -> can't enable the function etc.).
    • πŸ‘½Rβˆ†Jβˆ† The Resident βˆ†lienπŸ‘½'s icon
      πŸ‘½Rβˆ†Jβˆ† The Resident βˆ†lienπŸ‘½'s icon
      i think it doesn't allow midi mapping because matrixctrl (and also matrix~) has different modes, some people might want to map different controllers to different cells, and so they didn't yet think of ways to specify all of this(for example, in the binary on/off mode of matrixctrl, this could come from a midi input controller that only handles 'program changes'(only 0 or 127; on/off only), while the 1st dialmode might more easily map to a regular 'continuous controller' style midi input(0-127; or even 'notein' style inputs since 'velocity'(0-127) could be used), and then finally the 2nd dialmode would need some internal conversion to map to 'continuous controller'(or 'midinote') styles of inputs)...(this is why the term 'midi controller' is confusing, since there are different midi 'control' style messages: when using the 'matrixctrl' object, some people will use 'program change' for strict on/off routings only, others will prefer 'continuous controller' for the non-binary dial modes) you could, if you wanted this functionality added, and had some detailed idea of how you'd like it to work, submit a ticket here: https://cycling74.com/support/contact (describe how it should work for each dialmode of 'matrixctrl' object, and then ask them, if it's not considered a 'bug' to consider it a 'feature request' and they might take it into consideration to make the midi-mapping functionality change according to different modes of objects in the future... the 'multislider' object could use this specification too)
      and then in the meantime, you can try what slo ~|β€’ mentioned and create your own: you can use 'ctlin' object to detect 'continuous controller' style midi input, or 'notein' for note-style, or 'pgmin' for program-change controller style input... assuming you meant 'controller' as in 'continuous controller' between 0 and 127, then you'd use 'ctlin' object and output it to matrixctrl, but intercept it with a message like "1 1 $1" (for control of the connection between input 1 and output 1, and you have to do the same for all 49 of the other inputs 😫 sorry, don't shoot me i'm just the messenger πŸ₯Ί ...shoot Cycling74! πŸ€ͺ ...just kidding, don't shoot anyone πŸ€ πŸ˜‡)...
      this is tedious, but unfortunately, until they add the midi-mapping for matrixctrl, it's probably the most straightforward option(alternately, as shown in the pic above, you could also add 50 number boxes, instead of using objects like 'ctlin' and then use the midimapping mode of max to map your controller to the number boxes that would in turn control each connection of the matrix~ or cell of matrixctrl...)...
      but i'd recommend learning about the 'ctlin' and other midi-specific objects, anyways, they're all very useful for advanced setups(just in case you hadn't checked it out yet, here's the specific tutorials on MIDI: https://docs.cycling74.com/max8/tutorials/midichapter01). for example, if you had 50 continuous controllers(like a mixing board of midi sliders) ordered by controller number consecutively, and wanted to use them to control each cell individually, then you could setup just one single 'ctlin' object to map all those controllers to the different cells based on controller number:
      with [matrixctrl] set to dialmode = '2' (or 'Gain')
      with [matrixctrl] set to dialmode = '2' (or 'Gain')
      here's that patch just above:
      Max Patcher
      In Max, select New From Clipboard.
      Show Text
      hope this helps 🍻
    • Laura Papke's icon
      Laura Papke's icon
      Laura Papke
      May 28 2023 | 8:57 am
      Hi, omg that is amazing, such detailed information. I have to go through it detail, but I see already some good tips. THANK YOU SO MUCH! ;)