Forums > Dev

how to make variable msp outlets

June 16, 2008 | 12:05 am

Dear all,

I am trying to build an MSP external where the object takes an argument that defines the number of signal outlets. I have managed to create the specified amount of outlets by placing the outlet_new function in a for loop. But when I come to the dsp function of my object (where I have to call the dsp_add function), I have to specify signals as sp[0]->s_vec. How can I tell the dsp_add function to add as many signals as defined by the objects argument?


June 16, 2008 | 3:49 am

there’s an alternate version of the dsp_add function (named something else), that takes a variable length list of values, similar to the way printf works


June 16, 2008 | 6:38 am

Thanks a lot. :)


June 16, 2008 | 8:16 pm

I think it much less error prone to keep the dsp_add() call the same where there can be many variations and just pass it a pointer to your object and the buffer size.

e.g., something like:

void mymsp_dsp(t_mymsp *x, t_signal **sp, short *count)
{
//…store i/o buffer info in x

dsp_add(mymsp_perform, 2, x, sp[0]->s_n);
}

t_int *mymsp_perform(t_int *w)
{
t_mymsp *x = (t_mymsp *)(w[1]);
int numSamples = (int)(w[2]);

//…process stuff by getting at the i/o buffers
// stored in x in dsp_add()

return (w+3);
}

If you need efficiency gained by passing the buffers on directly via dsp_add() you can do this later.


Viewing 4 posts - 1 through 4 (of 4 total)