Route midi to another channel?

    Jun 30 2011 | 4:51 pm
    I'm new to m4l.. I wonder if it is possible to route midi from a m4l device to another channel than itself? I spend hours with manuals and tutorials but couldn't find a answer for that...
    What I would want to do is play with the routing of a midi input to multiple midi outputs... i imagined to create first a very simple device to output to a midi channel selectable in a dropdown and put multiple ones in a midirack...
    is that possible?
    Many thx for any comment!

    • Jun 30 2011 | 6:38 pm
      i have for now a non-m4l workaround over iac... but would really like to do this in m4l for further expand.. would be mi first "learn how to do what I really need"-device...
    • Jun 30 2011 | 7:21 pm
      Hello Luke,
      You can use send/receive device pairs to transport non-audio signals from one device to the other. You can even do some channel renaming to switch destinations.
    • Jun 30 2011 | 7:42 pm
      Hey thx a lot!!! Didn't know s/r works for outside of a patch, now I have a starting point!! Gonna try this...
    • Jul 01 2011 | 10:55 am
      As you'll see in the very previous topic to this, there is latency involved that you need to be aware ofin send and receive which maybe an issue for performance data .
    • Jul 02 2011 | 3:37 am
      i have for now a non-m4l workaround over iac... but would really like to do this in m4l for further expand.. would be mi first "learn how to do what I really need"-device...
    • Jul 29 2011 | 2:13 am
      OSC routing works great. I found the timings of send / receive to be really inconsistent and IAC routing - while it worked - seemed to splutter a bit when a large amount of data was being sent. I posted this on Live's forum. I hope it helps someone. (You probably do not need the cnmat stuff, but it makes routing osc messages much more manageable).
      Download the appropriate package for your OS from this website - either "Everything for Mac OSX" or "Everything for Windows":
      Extract the contents to your Cycling '74 folder (or any other folder you wish that is listed as a path in File Preferences).
      In the max patch you want to send from, create an object called "js ocs-unroute.js /name" - replace "name" with whatever makes sense to call the message you are sending. There should be one input to this object. If you have more than one message you want to send from that patch, create an object called "js osc-unroute.js /name1 /name2", You should see 2 inputs now. Same deal for 3, 4, 5 messages etc... Link whatever messages you want to send to other patches/programs into the appropriate inputs.
      Now in the same patch, create and object called "udpsend XXXX", where XXXX is a port number of your choice (do a google search to find commonly used UDP ports and choose something different). Link the "js osc-unroute.js" object's output to this objects input.
      You are done in terms of sending the message - now to receiving.
      In the receiving patch, (note other programs can receive the message too, but this is specific for Max) create an object called "udpreceive XXXX" where XXXX is the port number you chose before.
      Create an object called "osc-route /name" where "name" is the appropriate one you chose for that message. Link the "udpreceive" object's output to this objects input.
      You will see one output. Similar to the sending object, you can choose more than one output and this will create more outputs in the object.
      The outputs will now be the exact same message as the input from the sending patch.
    • Jul 29 2011 | 4:21 pm
      In fact you don't need the cnmat stuff for this, OSC routing with Max objects is just as easy. Simply use [prepend /name] for sending messages and [route /name] for receiving them.
      But be aware that also with OSC there is some latency.