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 <[email protected]> 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
> 
> _______________________________________________
> [email protected] mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to