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

Mathieu Bouchard matju at users.sourceforge.net
Thu Jul 19 20:53:42 CEST 2007


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

Modified Files:
      Tag: desiredata
	builtins_dsp.c 
Log Message:
interleaved code of [cpole~] [czero~] [czero_rev~]


Index: builtins_dsp.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins_dsp.c,v
retrieving revision 1.1.2.26
retrieving revision 1.1.2.27
diff -C2 -d -r1.1.2.26 -r1.1.2.27
*** builtins_dsp.c	19 Jul 2007 18:44:47 -0000	1.1.2.26
--- builtins_dsp.c	19 Jul 2007 18:53:39 -0000	1.1.2.27
***************
*** 2831,2835 ****
  /* ---------------- 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;};
--- 2831,2835 ----
  /* ---------------- 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;};
***************
*** 2890,2917 ****
  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);
-     class_addmethod2(sigrzero_class, sigrzero_set,  "set","F");
-     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","");
  }
  
  /* -------------- cpole~ - complex one-pole filter (raw) --------------- */
! struct t_sigcpole : t_object {
!     float a;
!     float lastre;
!     float lastim;
! };
! t_class *sigcpole_class;
  static void *sigcpole_new(t_float re, t_float im) {
      t_sigcpole *x = (t_sigcpole *)pd_new(sigcpole_class);
--- 2890,2918 ----
  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");
!     sigrzero_class = class_new2("rzero~",    sigrzero_new,0,sizeof(t_sigrzero),0,"F");
!     sigrzrev_class = class_new2("rzero_rev~",sigrzrev_new,0,sizeof(t_sigrzrev),0,"F");
      CLASS_MAINSIGNALIN(sigrpole_class, t_sigrpole, a);
      CLASS_MAINSIGNALIN(sigrzero_class, t_sigrzero, a);
      CLASS_MAINSIGNALIN(sigrzrev_class, t_sigrzrev, a);
+     class_addmethod2(sigrpole_class, sigrpole_set,  "set","F");
+     class_addmethod2(sigrzero_class, sigrzero_set,  "set","F");
      class_addmethod2(sigrzrev_class, sigrzrev_set,  "set","F");
+     class_addmethod2(sigrpole_class, sigrpole_clear,"clear","");
+     class_addmethod2(sigrzero_class, sigrzero_clear,"clear","");
      class_addmethod2(sigrzrev_class, sigrzrev_clear,"clear","");
+     class_addmethod2(sigrpole_class, sigrpole_dsp,  "dsp","");
+     class_addmethod2(sigrzero_class, sigrzero_dsp,  "dsp","");
      class_addmethod2(sigrzrev_class, sigrzrev_dsp,  "dsp","");
  }
  
  /* -------------- cpole~ - complex one-pole filter (raw) --------------- */
! /* -------------- czero~ - complex one-pole filter (raw) --------------- */
! /* ---------- czero_rev~ - complex one-pole filter (raw) --------------- */
! 
! t_class *sigcpole_class; struct t_sigcpole : t_object {float a; float lastre; float lastim;};
! t_class *sigczero_class; struct t_sigczero : t_object {float a; float lastre; float lastim;};
! t_class *sigczrev_class; struct t_sigczrev : t_object {float a; float lastre; float lastim;};
! 
  static void *sigcpole_new(t_float re, t_float im) {
      t_sigcpole *x = (t_sigcpole *)pd_new(sigcpole_class);
***************
*** 2925,2928 ****
--- 2926,2952 ----
      return x;
  }
+ static void *sigczero_new(t_float re, t_float im) {
+     t_sigczero *x = (t_sigczero *)pd_new(sigczero_class);
+     inlet_new(x, x, &s_signal, &s_signal);
+     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), re);
+     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), im);
+     outlet_new(x, &s_signal);
+     outlet_new(x, &s_signal);
+     x->lastre = x->lastim = 0;
+     x->a = 0;
+     return x;
+ }
+ static void *sigczrev_new(t_float re, t_float im) {
+     t_sigczrev *x = (t_sigczrev *)pd_new(sigczrev_class);
+     inlet_new(x, x, &s_signal, &s_signal);
+     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), re);
+     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), im);
+     outlet_new(x, &s_signal);
+     outlet_new(x, &s_signal);
+     x->lastre = x->lastim = 0;
+     x->a = 0;
+     return x;
+ }
+ 
  static t_int *sigcpole_perform(t_int *w) {
      float *inre1 = (float *)w[1], *inim1 = (float *)w[2];
***************
*** 2946,2980 ****
      return w+9;
  }
- static void sigcpole_dsp(t_sigcpole *x, t_signal **sp) {
-     dsp_add(sigcpole_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);
- }
- static void sigcpole_clear(t_sigcpole *x) {x->lastre = x->lastim = 0;}
- static void sigcpole_set(t_sigcpole *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
- void sigcpole_setup() {
-     sigcpole_class = class_new2("cpole~",sigcpole_new,0,sizeof(t_sigcpole),0,"FF");
-     CLASS_MAINSIGNALIN(sigcpole_class, t_sigcpole, a);
-     class_addmethod2(sigcpole_class, sigcpole_set,  "set","FF");
-     class_addmethod2(sigcpole_class, sigcpole_clear,"clear","");
-     class_addmethod2(sigcpole_class, sigcpole_dsp,  "dsp","");
- }
- 
- /* -------------- czero~ - complex one-pole filter (raw) --------------- */
- struct t_sigczero : t_object {
-     float a;
-     float lastre;
-     float lastim;
- };
- t_class *sigczero_class;
- static void *sigczero_new(t_float re, t_float im) {
-     t_sigczero *x = (t_sigczero *)pd_new(sigczero_class);
-     inlet_new(x, x, &s_signal, &s_signal);
-     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), re);
-     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), im);
-     outlet_new(x, &s_signal);
-     outlet_new(x, &s_signal);
-     x->lastre = x->lastim = 0;
-     x->a = 0;
-     return x;
- }
  static t_int *sigczero_perform(t_int *w) {
      float *inre1 = (float *)w[1], *inim1 = (float *)w[2];
--- 2970,2973 ----
***************
*** 2997,3036 ****
      return w+9;
  }
! static void sigczero_dsp(t_sigczero *x, t_signal **sp) {
!     dsp_add(sigczero_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);
! }
! static void sigczero_clear(t_sigczero *x) {x->lastre = x->lastim = 0;}
! static void sigczero_set(t_sigczero *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
! void sigczero_setup() {
!     sigczero_class = class_new2("czero~",sigczero_new,0,sizeof(t_sigczero),0,"FF");
!     CLASS_MAINSIGNALIN(sigczero_class, t_sigczero, a);
!     class_addmethod2(sigczero_class, sigczero_set,   "set","FF");
!     class_addmethod2(sigczero_class, sigczero_clear, "clear","");
!     class_addmethod2(sigczero_class, sigczero_dsp,   "dsp","");
! }
! 
! /* -------------- czero_rev~ - complex one-pole filter (raw) --------------- */
! struct t_sigczero_rev : t_object {
!     float a;
!     float lastre;
!     float lastim;
! };
! t_class *sigczero_rev_class;
! static void *sigczero_rev_new(t_float re, t_float im) {
!     t_sigczero_rev *x = (t_sigczero_rev *)pd_new(sigczero_rev_class);
!     inlet_new(x, x, &s_signal, &s_signal);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), re);
!     pd_float((t_pd *)inlet_new(x, x, &s_signal, &s_signal), im);
!     outlet_new(x, &s_signal);
!     outlet_new(x, &s_signal);
!     x->lastre = x->lastim = 0;
!     x->a = 0;
!     return x;
! }
! static t_int *sigczero_rev_perform(t_int *w) {
      float *inre1 = (float *)w[1], *inim1 = (float *)w[2];
      float *inre2 = (float *)w[3], *inim2 = (float *)w[4];
      float *outre = (float *)w[5], *outim = (float *)w[6];
!     t_sigczero_rev *x = (t_sigczero_rev *)w[7];
      int n = (t_int)w[8];
      float lastre = x->lastre;
--- 2990,2998 ----
      return w+9;
  }
! static t_int *sigczrev_perform(t_int *w) {
      float *inre1 = (float *)w[1], *inim1 = (float *)w[2];
      float *inre2 = (float *)w[3], *inim2 = (float *)w[4];
      float *outre = (float *)w[5], *outim = (float *)w[6];
!     t_sigczrev *x = (t_sigczrev *)w[7];
      int n = (t_int)w[8];
      float lastre = x->lastre;
***************
*** 3039,3044 ****
          float nextre = *inre1++, nextim = *inim1++;
          float coefre = *inre2++, coefim = *inim2++;
!             /* transfer function is (A bar) - Z^-1, for the same
!             frequency response as 1 - AZ^-1 from czero_tilde. */
          *outre++ = lastre - nextre * coefre - nextim * coefim;
          *outim++ = lastim - nextre * coefim + nextim * coefre;
--- 3001,3005 ----
          float nextre = *inre1++, nextim = *inim1++;
          float coefre = *inre2++, coefim = *inim2++;
!         /* transfer function is (A bar) - Z^-1, for the same frequency response as 1 - AZ^-1 from czero_tilde. */
          *outre++ = lastre - nextre * coefre - nextim * coefim;
          *outim++ = lastim - nextre * coefim + nextim * coefre;
***************
*** 3050,3070 ****
      return w+9;
  }
! static void sigczero_rev_dsp(t_sigczero_rev *x, t_signal **sp) {
!     dsp_add(sigczero_rev_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v,
!         sp[4]->v, sp[5]->v, x, sp[0]->n);
! }
! static void sigczero_rev_clear(t_sigczero_rev *x) {
!     x->lastre = x->lastim = 0;
! }
! static void sigczero_rev_set(t_sigczero_rev *x, t_float re, t_float im) {
!     x->lastre = re;
!     x->lastim = im;
! }
! void sigczero_rev_setup() {
!     sigczero_rev_class = class_new2("czero_rev~",sigczero_rev_new,0,sizeof(t_sigczero_rev),0,"FF");
!     CLASS_MAINSIGNALIN(sigczero_rev_class, t_sigczero_rev, a);
!     class_addmethod2(sigczero_rev_class, sigczero_rev_set,   "set","FF");
!     class_addmethod2(sigczero_rev_class, sigczero_rev_clear, "clear","");
!     class_addmethod2(sigczero_rev_class, sigczero_rev_dsp,   "dsp","");
  }
  
--- 3011,3045 ----
      return w+9;
  }
! 
! static void sigcpole_dsp(t_sigcpole *x, t_signal **sp) {
!     dsp_add(sigcpole_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);}
! static void sigczero_dsp(t_sigczero *x, t_signal **sp) {
!     dsp_add(sigczero_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);}
! static void sigczrev_dsp(t_sigczrev *x, t_signal **sp) {
!     dsp_add(sigczrev_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);}
! 
! static void sigcpole_clear(t_sigcpole *x) {x->lastre = x->lastim = 0;}
! static void sigczero_clear(t_sigczero *x) {x->lastre = x->lastim = 0;}
! static void sigczrev_clear(t_sigczrev *x) {x->lastre = x->lastim = 0;}
! static void sigcpole_set(t_sigcpole *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
! static void sigczero_set(t_sigczero *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
! static void sigczrev_set(t_sigczrev *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
! 
! void sigc_setup() {
!     sigcpole_class = class_new2("cpole~",    sigcpole_new,0,sizeof(t_sigcpole),0,"FF");
!     sigczero_class = class_new2("czero~",    sigczero_new,0,sizeof(t_sigczero),0,"FF");
!     sigczrev_class = class_new2("czero_rev~",sigczrev_new,0,sizeof(t_sigczrev),0,"FF");
!     CLASS_MAINSIGNALIN(sigcpole_class, t_sigcpole, a);
!     CLASS_MAINSIGNALIN(sigczero_class, t_sigczero, a);
!     CLASS_MAINSIGNALIN(sigczrev_class, t_sigczrev, a);
!     class_addmethod2(sigcpole_class, sigcpole_set,  "set","FF");
!     class_addmethod2(sigczero_class, sigczero_set,   "set","FF");
!     class_addmethod2(sigczrev_class, sigczrev_set,   "set","FF");
!     class_addmethod2(sigcpole_class, sigcpole_clear,"clear","");
!     class_addmethod2(sigczero_class, sigczero_clear, "clear","");
!     class_addmethod2(sigczrev_class, sigczrev_clear, "clear","");
!     class_addmethod2(sigcpole_class, sigcpole_dsp,  "dsp","");
!     class_addmethod2(sigczero_class, sigczero_dsp,   "dsp","");
!     class_addmethod2(sigczrev_class, sigczrev_dsp,   "dsp","");
  }
  
***************
*** 3236,3240 ****
  static void sigcatch_free(t_sigcatch *x) {
      pd_unbind(x, x->sym);
!     freealignedbytes(x->vec,x->n* sizeof(float));
  }
  static void sigcatch_setup() {
--- 3211,3215 ----
  static void sigcatch_free(t_sigcatch *x) {
      pd_unbind(x, x->sym);
!     freealignedbytes(x->vec,x->n*sizeof(float));
  }
  static void sigcatch_setup() {
***************
*** 3974,3980 ****
      sigsamphold_setup();
      sigr_setup();
!     sigcpole_setup();
!     sigczero_setup();
!     sigczero_rev_setup();
  
      sigsend_setup();
--- 3949,3953 ----
      sigsamphold_setup();
      sigr_setup();
!     sigc_setup();
  
      sigsend_setup();





More information about the Pd-cvs mailing list