about rtcmix~


    Nov 25 2010 | 8:54 pm
    First of all, apologies for not responding in a timely manner to some of the questions about rtcmix~ here. I don't really follow this list all that closely any more, plus life can get, um, "interesting" at times. But I am glad people are still intrigued by things like rtcmix~, chuck~, sc3~, maxlisp, etc. I'm hoping to carve out some time over our winter break to do major upgrades.
    Now, about rtcmix~, a couple of issues:
    1. When installing any of these objects, you need to move the entire folder *intact* somewhere in the max file search path. The reason is that the objects load an external library that also has to exist along with the object. If the object still isn't loading, then I'm not sure what's going on. Don't be bashful about sending me crash reports! I may not respond immediately, but I do want to make sure all works ok.
    2. Speaking of loading external libraries, there is a conflict between rtcmix~ and chuck~ and parts of the IRCAM FTM library. There seems to be a symbol-name collision generated by yacc and lex (bison maybe) that I can't fix. When rtcmix~ calls yyparse(), it ends up calling the entry for the IRCAM yyparse() (or this is what I think is happening). Sorry!
    3. Regarding the control of rtcmix~ dynamic parameters through inlets on the object, this is done using the "makeconnection()" function in the rtcmix~ script. The number of inlets to the object is determined by an optional second parameter -- the first is how many audio channels the rtcmix~ object will have (only 1 or 2 at present), and the second is how many additional inlets will be put on the object. For example:
    [rtcmix~ 2 2]
    will create a stereo rtcmix~ object with two additional inlets for parameter control. The "makeconnection()" function counts those inlets starting at 1, with the first inlet being the first one *after* the audio signal inlets. So if I wanted to control pitch from the second (right-most) parameter inlet using a slider connected to it, I would use the following script:
    pitch = makeconnection("inlet", 2, 300) // 300 hz the default value) SOMEINSTRUMENT(param1, param2, another_param, pitch, etc)
    chuck~ works the same way. There are several examples of how to do this in the "dynamic-params" subpatcher of the rtcmix~ help patcher.
    One warning: if you decide to change the number of inlets or audio channels on an existing rtcmix~ object, be sure to save the internal rtcmix script(s) first (or make a new object and copy/paste the script to the new one). Changing the inlets or channels creates a new object with new (blank) scripts.
    I hope this helps, and Happy Thanksgiving!

    • Nov 25 2010 | 11:20 pm
      thanks for the info brad! i hope you'll find some time to port sc and chuck for max5 on windows to!
      happy thanksgiving!
      a.