[PD-cvs] pd/src builtins_dsp.c,1.1.2.25,1.1.2.26

Mathieu Bouchard matju at users.sourceforge.net
Thu Jul 19 20:44:50 CEST 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21723

Modified Files:
      Tag: desiredata
	builtins_dsp.c 
Log Message:
interleaved code of [rpole~] [rzero~] [rzero_rev~]


Index: builtins_dsp.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins_dsp.c,v
retrieving revision 1.1.2.25
retrieving revision 1.1.2.26
diff -C2 -d -r1.1.2.25 -r1.1.2.26
*** builtins_dsp.c	19 Jul 2007 18:25:27 -0000	1.1.2.25
--- builtins_dsp.c	19 Jul 2007 18:44:47 -0000	1.1.2.26
***************
*** 2830,2899 ****
  
  /* ---------------- rpole~ - real one-pole filter (raw) ----------------- */
! struct t_sigrpole : t_object {
!     float a;
!     float last;
! };
! t_class *sigrpole_class;
  static void *sigrpole_new(t_float f) {
      t_sigrpole *x = (t_sigrpole *)pd_new(sigrpole_class);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), f);
!     outlet_new(x, &s_signal);
!     x->last = 0;
!     return x;
! }
  static t_int *sigrpole_perform(t_int *w) {
!     float *in1 = (float *)w[1];
!     float *in2 = (float *)w[2];
!     float *out = (float *)w[3];
!     t_sigrpole *x = (t_sigrpole *)w[4];
!     int n = (t_int)w[5];
!     float last = x->last;
!     for (int i = 0; i < n; i++) {
!         float next = *in1++;
!         float coef = *in2++;
!         *out++ = last = coef * last + next;
      }
!     if (PD_BIGORSMALL(last))
!         last = 0;
      x->last = last;
      return w+6;
  }
- static void sigrpole_dsp(t_sigrpole *x, t_signal **sp) {
-     dsp_add(sigrpole_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);
- }
- static void sigrpole_clear(t_sigrpole *x) {x->last = 0;}
- static void sigrpole_set(t_sigrpole *x, t_float f) {x->last = f;}
- void sigrpole_setup() {
-     sigrpole_class = class_new2("rpole~",sigrpole_new,0,sizeof(t_sigrpole),0,"F");
-     CLASS_MAINSIGNALIN(sigrpole_class, t_sigrpole, a);
-     class_addmethod2(sigrpole_class, sigrpole_set, "set","F");
-     class_addmethod2(sigrpole_class, sigrpole_clear,"clear","");
-     class_addmethod2(sigrpole_class, sigrpole_dsp, "dsp","");
- }
- 
- /* ---------------- rzero~ - real one-zero filter (raw) ----------------- */
- struct t_sigrzero : t_object {
-     float a;
-     float last;
- };
- t_class *sigrzero_class;
- static void *sigrzero_new(t_float f) {
-     t_sigrzero *x = (t_sigrzero *)pd_new(sigrzero_class);
-     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), f);
-     outlet_new(x, &s_signal);
-     x->last = 0;
-     return x;
- }
  static t_int *sigrzero_perform(t_int *w) {
!     float *in1 = (float *)w[1];
!     float *in2 = (float *)w[2];
!     float *out = (float *)w[3];
!     t_sigrzero *x = (t_sigrzero *)w[4];
!     int n = (t_int)w[5];
!     float last = x->last;
      for (int i = 0; i < n; i++) {
!         float next = *in1++;
!         float coef = *in2++;
!         *out++ = next - coef * last;
          last = next;
      }
--- 2830,2866 ----
  
  /* ---------------- rpole~ - real one-pole filter (raw) ----------------- */
! /* ---------------- rzero~ - real one-zero filter (raw) ----------------- */
! /* --------- rzero_rev~ - real, reverse one-zero filter (raw) ----------- */
! t_class *sigrpole_class; struct t_sigrpole : t_object {float a; float last;};
! t_class *sigrzero_class; struct t_sigrzero : t_object {float a; float last;};
! t_class *sigrzrev_class; struct t_sigrzrev : t_object {float a; float last;};
! 
  static void *sigrpole_new(t_float f) {
      t_sigrpole *x = (t_sigrpole *)pd_new(sigrpole_class);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), f); outlet_new(x, &s_signal); x->last=0; return x;}
! static void *sigrzero_new(t_float f) {
!     t_sigrzero *x = (t_sigrzero *)pd_new(sigrzero_class);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), f); outlet_new(x, &s_signal); x->last=0; return x;}
! static void *sigrzrev_new(t_float f) {
!     t_sigrzrev *x = (t_sigrzrev *)pd_new(sigrzrev_class);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), f); outlet_new(x, &s_signal); x->last=0; return x;}
! 
  static t_int *sigrpole_perform(t_int *w) {
!     float *in1 = (float *)w[1]; float *in2 = (float *)w[2]; float *out = (float *)w[3];
!     t_sigrpole *x = (t_sigrpole *)w[4]; int n = (t_int)w[5]; float last = x->last;
!     for (int i=0; i<n; i++) {
!         float next = *in1++, coef = *in2++;
!         *out++ = last = coef*last + next;
      }
!     if (PD_BIGORSMALL(last)) last = 0;
      x->last = last;
      return w+6;
  }
  static t_int *sigrzero_perform(t_int *w) {
!     float *in1 = (float *)w[1]; float *in2 = (float *)w[2]; float *out = (float *)w[3];
!     t_sigrzero *x = (t_sigrzero *)w[4]; int n = (t_int)w[5]; float last = x->last;
      for (int i = 0; i < n; i++) {
!         float next = *in1++, coef = *in2++;
!         *out++ = next - coef*last;
          last = next;
      }
***************
*** 2901,2910 ****
      return w+6;
  }
! static void sigrzero_dsp(t_sigrzero *x, t_signal **sp) {
!     dsp_add(sigrzero_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);
  }
  static void sigrzero_clear(t_sigrzero *x) {x->last = 0;}
  static void sigrzero_set(t_sigrzero *x, t_float f) {x->last = f;}
! void sigrzero_setup() {
      sigrzero_class = class_new2("rzero~",sigrzero_new,0,sizeof(t_sigrzero),0,"F");
      CLASS_MAINSIGNALIN(sigrzero_class, t_sigrzero, a);
--- 2868,2898 ----
      return w+6;
  }
! static t_int *sigrzrev_perform(t_int *w) {
!     float *in1 = (float *)w[1]; float *in2 = (float *)w[2]; float *out = (float *)w[3];
!     t_sigrzrev *x = (t_sigrzrev *)w[4]; int n = (t_int)w[5]; float last = x->last;
!     for (int i = 0; i < n; i++) {
!         float next = *in1++, coef = *in2++;
!         *out++ = last - coef*next;
!         last = next;
!     }
!     x->last = last;
!     return w+6;
  }
+ 
+ static void sigrpole_dsp(t_sigrpole *x, t_signal **sp) {dsp_add(sigrpole_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);}
+ static void sigrzero_dsp(t_sigrzero *x, t_signal **sp) {dsp_add(sigrzero_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);}
+ static void sigrzrev_dsp(t_sigrzrev *x, t_signal **sp) {dsp_add(sigrzrev_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);}
+ static void sigrpole_clear(t_sigrpole *x) {x->last = 0;}
  static void sigrzero_clear(t_sigrzero *x) {x->last = 0;}
+ static void sigrzrev_clear(t_sigrzrev *x) {x->last = 0;}
+ static void sigrpole_set(t_sigrpole *x, t_float f) {x->last = f;}
  static void sigrzero_set(t_sigrzero *x, t_float f) {x->last = f;}
! static void sigrzrev_set(t_sigrzrev *x, t_float f) {x->last = f;}
! void sigr_setup() {
!     sigrpole_class = class_new2("rpole~",sigrpole_new,0,sizeof(t_sigrpole),0,"F");
!     CLASS_MAINSIGNALIN(sigrpole_class, t_sigrpole, a);
!     class_addmethod2(sigrpole_class, sigrpole_set, "set","F");
!     class_addmethod2(sigrpole_class, sigrpole_clear,"clear","");
!     class_addmethod2(sigrpole_class, sigrpole_dsp, "dsp","");
      sigrzero_class = class_new2("rzero~",sigrzero_new,0,sizeof(t_sigrzero),0,"F");
      CLASS_MAINSIGNALIN(sigrzero_class, t_sigrzero, a);
***************
*** 2912,2959 ****
      class_addmethod2(sigrzero_class, sigrzero_clear,"clear","");
      class_addmethod2(sigrzero_class, sigrzero_dsp,  "dsp","");
! }
! 
! /* ---------- rzero_rev~ - real, reverse one-zero filter (raw) ------------ */
! struct t_sigrzero_rev : t_object {
!     float a;
!     float last;
! };
! t_class *sigrzero_rev_class;
! static void *sigrzero_rev_new(t_float f) {
!     t_sigrzero_rev *x = (t_sigrzero_rev *)pd_new(sigrzero_rev_class);
!     pd_float(
!         (t_pd *)inlet_new(x, x, &s_signal, &s_signal),
!             f);
!     outlet_new(x, &s_signal);
!     x->last = 0;
!     return x;
! }
! static t_int *sigrzero_rev_perform(t_int *w) {
!     float *in1 = (float *)w[1];
!     float *in2 = (float *)w[2];
!     float *out = (float *)w[3];
!     t_sigrzero_rev *x = (t_sigrzero_rev *)w[4];
!     int n = (t_int)w[5];
!     float last = x->last;
!     for (int i = 0; i < n; i++) {
!         float next = *in1++;
!         float coef = *in2++;
!         *out++ = last - coef * next;
!         last = next;
!     }
!     x->last = last;
!     return w+6;
! }
! static void sigrzero_rev_dsp(t_sigrzero_rev *x, t_signal **sp) {
!     dsp_add(sigrzero_rev_perform, 5, sp[0]->v, sp[1]->v, sp[2]->v, x, sp[0]->n);
! }
! static void sigrzero_rev_clear(t_sigrzero_rev *x)          {x->last = 0;}
! static void sigrzero_rev_set(t_sigrzero_rev *x, t_float f) {x->last = f;}
! void sigrzero_rev_setup() {
!     sigrzero_rev_class = class_new2("rzero_rev~",sigrzero_rev_new,0,sizeof(t_sigrzero_rev),0,"F");
!     CLASS_MAINSIGNALIN(sigrzero_rev_class, t_sigrzero_rev, a);
!     class_addmethod2(sigrzero_rev_class, sigrzero_rev_set,  "set","F");
!     class_addmethod2(sigrzero_rev_class, sigrzero_rev_clear,"clear","");
!     class_addmethod2(sigrzero_rev_class, sigrzero_rev_dsp,  "dsp","");
  }
  
--- 2900,2908 ----
      class_addmethod2(sigrzero_class, sigrzero_clear,"clear","");
      class_addmethod2(sigrzero_class, sigrzero_dsp,  "dsp","");
!     sigrzrev_class = class_new2("rzero_rev~",sigrzrev_new,0,sizeof(t_sigrzrev),0,"F");
!     CLASS_MAINSIGNALIN(sigrzrev_class, t_sigrzrev, a);
!     class_addmethod2(sigrzrev_class, sigrzrev_set,  "set","F");
!     class_addmethod2(sigrzrev_class, sigrzrev_clear,"clear","");
!     class_addmethod2(sigrzrev_class, sigrzrev_dsp,  "dsp","");
  }
  
***************
*** 4024,4030 ****
      sigbiquad_setup();
      sigsamphold_setup();
!     sigrpole_setup();
!     sigrzero_setup();
!     sigrzero_rev_setup();
      sigcpole_setup();
      sigczero_setup();
--- 3973,3977 ----
      sigbiquad_setup();
      sigsamphold_setup();
!     sigr_setup();
      sigcpole_setup();
      sigczero_setup();





More information about the Pd-cvs mailing list