[PD] external-writing question about inlets

J. Scott Hildebrand jshildebrand at ucdavis.edu
Wed Aug 6 00:59:26 CEST 2003

right now i'm converting my convolution external to take as many inputs as
the user would like. i'd like to call it like this:

multiconvo~ <number of sources>

is there a way to do this? here is the current code i gotta play with:

static void convaudio2_tilde_dsp(t_convaudio2_tilde *x, t_signal **sp)
  dsp_add(convaudio2_tilde_perform, 6, x,
          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,

static void convaudio2_first(t_convaudio2_tilde *x, t_floatarg f)
	x->firstfloat = f;

static void convaudio2_bound(t_convaudio2_tilde *x, t_floatarg f)
	x->secondfloat = f;

static void *convaudio2_tilde_new(t_floatarg f)
  t_convaudio2_tilde *x = (t_convaudio2_tilde

  x->f_convaudio2 = f;

  //additional signal and float inlets
  inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
  inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("first"));
  inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("bound"));

  //two signal outlets for stereo
  outlet_new(&x->x_obj, &s_signal);
  outlet_new(&x->x_obj, &s_signal);

  return (void *)x;

//setup declares new classes and their properties
void convaudio2_tilde_setup(void) {
  convaudio2_tilde_class = class_new(gensym("convaudio2~"),
        0, sizeof(t_convaudio2_tilde),
        A_DEFFLOAT, 0);

  class_addmethod(convaudio2_tilde_class, (t_method)convaudio2_tilde_dsp,
gensym("dsp"), 0);
  class_addmethod(convaudio2_tilde_class, (t_method)convaudio2_first,
gensym("first"), A_FLOAT, 0);
  class_addmethod(convaudio2_tilde_class, (t_method)convaudio2_bound,
gensym("bound"), A_FLOAT, 0);
  CLASS_MAINSIGNALIN(convaudio2_tilde_class, t_convaudio2_tilde, f);


	"640K ought to be enough for anybody." -- Bill Gates, 1981


More information about the Pd-list mailing list