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.
[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~
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!