hi dave! check out the dsp_addv function, I think it’s meant for exactly this. I don’t have any code right in front of me… oh wait, I do … I’m pretty sure this works:
void grans_dsp(t_grans *x, t_signal **sp) { int num = x->numinlets + x->numoutlets; t_int **w = x->w; w[0] = (t_int *)x; w[1] = (t_int *)sp[0]->s_n;
int i;
for (i = 0; i < num; i++) {
w[i+2] = (t_int *)sp[i]->s_vec;
}
dsp_addv(grans_perform, num+2, (t_int *)w);
}
hope that’s useful!
cheers, rama
On Aug 30, 2015, at 12:09 PM, David Medine dmedine@ucsd.edu wrote:
Does any one know how to write a ~ object that has a variable number signal outlets and inlets? The only thing I've been able to come up with is to have a dsp routine that looks like:
switch(x->n_sigs){ case 3: dsp_add(whatever_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n); break;
case 4: dsp_add(whatever_tilde_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n); break; // so on and so forth...
}
It feels like there should be a better way to do this. Thanks, David
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list