[PD-cvs] externals/creb/modules Makefile, 1.4, 1.5 bdiag~.c, 1.1, 1.2 bfft~.c, 1.1, 1.2 bitsplit~.c, 1.1, 1.2 blocknorm~.c, 1.1, 1.2 cheby~.c, 1.1, 1.2 diag~.c, 1.1, 1.2 dist~.c, 1.1, 1.2 dynwav~.c, 1.1, 1.2 eadsr~.c, 1.3, 1.4 ead~.c, 1.3, 1.4 ear~.c, 1.3, 1.4 eblosc~.c, 1.1, 1.2 extlib_util.h, 1.1, 1.2 fdn~.c, 1.1, 1.2 ffpoly.c, 1.2, 1.3 filters.h, 1.1, 1.2 lattice~.c, 1.1, 1.2 permut~.c, 1.1, 1.2 qmult~.c, 1.1, 1.2 qnorm~.c, 1.1, 1.2 resofilt~.c, 1.1, 1.2 sbosc~.c, 1.1, 1.2 scrollgrid1D~.c, 1.1, 1.2 statwav~.c, 1.1, 1.2 tabreadmix~.c, 1.1, 1.2

Tom Schouten doelie at users.sourceforge.net
Tue Aug 15 17:11:54 CEST 2006


Update of /cvsroot/pure-data/externals/creb/modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19726/modules

Modified Files:
	Makefile bdiag~.c bfft~.c bitsplit~.c blocknorm~.c cheby~.c 
	diag~.c dist~.c dynwav~.c eadsr~.c ead~.c ear~.c eblosc~.c 
	extlib_util.h fdn~.c ffpoly.c filters.h lattice~.c permut~.c 
	qmult~.c qnorm~.c resofilt~.c sbosc~.c scrollgrid1D~.c 
	statwav~.c tabreadmix~.c 
Log Message:
creb 0.9.2 import

Index: ear~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/ear~.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ear~.c	25 May 2006 17:01:41 -0000	1.3
--- ear~.c	15 Aug 2006 15:11:52 -0000	1.4
***************
*** 18,23 ****
   */
  
- #include <m_pd.h>
- #include <math.h>
  #include "extlib_util.h"
  
--- 18,21 ----
***************
*** 143,177 ****
  }
  
- /*
-  *   Utility functions for exponential decay 
-  *   Copyright (c) 2000-2003 by Tom Schouten
-  *
-  *   This program is free software; you can redistribute it and/or modify
-  *   it under the terms of the GNU General Public License as published by
-  *   the Free Software Foundation; either version 2 of the License, or
-  *   (at your option) any later version.
-  *
-  *   This program is distributed in the hope that it will be useful,
-  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  *   GNU General Public License for more details.
-  *
-  *   You should have received a copy of the GNU General Public License
-  *   along with this program; if not, write to the Free Software
-  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-  */
- 
- 
- //#include "extlib_util.h"
- 
- float milliseconds_2_one_minus_realpole(float time)
- {
-   float r;
- 
-   if (time < 0.0f) time = 0.0f;
-   r = -expm1(1000.0f * log(ENVELOPE_RANGE) / (sys_getsr() * time));
-   if (!(r < 1.0f)) r = 1.0f;
- 
-   //post("%f",r);
-   return r;
- }
--- 141,142 ----

Index: eadsr~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/eadsr~.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** eadsr~.c	25 May 2006 17:01:41 -0000	1.3
--- eadsr~.c	15 Aug 2006 15:11:52 -0000	1.4
***************
*** 18,23 ****
   */
  
- #include <m_pd.h>
- #include <math.h>
  #include "extlib_util.h"
  
--- 18,21 ----
***************
*** 135,144 ****
  t_class *eadsr_class;
  
! void *eadsr_new(t_floatarg attack, t_floatarg decay, t_floatarg sustain, t_floatarg release)
  {
      t_eadsr *x = (t_eadsr *)pd_new(eadsr_class);
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("attack"));  
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("decay"));  
!     inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("sustain"));     
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("release"));
      outlet_new(&x->x_obj, gensym("signal")); 
--- 133,143 ----
  t_class *eadsr_class;
  
! void *eadsr_new(t_floatarg attack, t_floatarg decay, 
! 		t_floatarg sustain, t_floatarg release)
  {
      t_eadsr *x = (t_eadsr *)pd_new(eadsr_class);
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("attack"));  
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("decay"));  
!     inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("sustain"));
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("release"));
      outlet_new(&x->x_obj, gensym("signal")); 
***************
*** 159,207 ****
      //post("eadsr~ v0.1");
      eadsr_class = class_new(gensym("eadsr~"), (t_newmethod)eadsr_new,
!     	(t_method)eadsr_free, sizeof(t_eadsr), 0,  A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_float, gensym("float"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_start, gensym("start"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_start, gensym("bang"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_stop, gensym("stop"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_dsp, gensym("dsp"), 0); 
!     class_addmethod(eadsr_class, (t_method)eadsr_attack, gensym("attack"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_decay, gensym("decay"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_sustain, gensym("sustain"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_release, gensym("release"), A_FLOAT, 0);
  
  
  }
  
- /*
-  *   Utility functions for exponential decay 
-  *   Copyright (c) 2000-2003 by Tom Schouten
-  *
-  *   This program is free software; you can redistribute it and/or modify
-  *   it under the terms of the GNU General Public License as published by
-  *   the Free Software Foundation; either version 2 of the License, or
-  *   (at your option) any later version.
-  *
-  *   This program is distributed in the hope that it will be useful,
-  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  *   GNU General Public License for more details.
-  *
-  *   You should have received a copy of the GNU General Public License
-  *   along with this program; if not, write to the Free Software
-  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-  */
- 
- 
- //#include "extlib_util.h"
- 
- float milliseconds_2_one_minus_realpole(float time)
- {
-   float r;
- 
-   if (time < 0.0f) time = 0.0f;
-   r = -expm1(1000.0f * log(ENVELOPE_RANGE) / (sys_getsr() * time));
-   if (!(r < 1.0f)) r = 1.0f;
- 
-   //post("%f",r);
-   return r;
- }
--- 158,180 ----
      //post("eadsr~ v0.1");
      eadsr_class = class_new(gensym("eadsr~"), (t_newmethod)eadsr_new,
!     	(t_method)eadsr_free, sizeof(t_eadsr), 0,  A_DEFFLOAT, 
! 			    A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_float,
! 		    gensym("float"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_start,
! 		    gensym("start"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_start, gensym("bang"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_stop, gensym("stop"), 0);
      class_addmethod(eadsr_class, (t_method)eadsr_dsp, gensym("dsp"), 0); 
!     class_addmethod(eadsr_class, (t_method)eadsr_attack,
! 		    gensym("attack"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_decay,
! 		    gensym("decay"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_sustain,
! 		    gensym("sustain"), A_FLOAT, 0);
!     class_addmethod(eadsr_class, (t_method)eadsr_release,
! 		    gensym("release"), A_FLOAT, 0);
  
  
  }
  

Index: Makefile
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/Makefile,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Makefile	12 Sep 2003 22:22:31 -0000	1.4
--- Makefile	15 Aug 2006 15:11:51 -0000	1.5
***************
*** 1,9 ****
  include ../Makefile.config
  
! current: ead.o ear.o eadsr.o dist.o tabreadmix.o xfm.o qmult.o qnorm.o \
! 	cheby.o abs.o ramp.o dwt.o bfft.o dynwav.o statwav.o bdiag.o \
! 	diag.o matrix.o permut.o lattice.o ratio.o ffpoly.o fwarp.o \
! 	junction.o fdn.o window.o cmath.o eblosc.o bitsplit.o sbosc.o \
! 	blocknorm.o resofilt.o scrollgrid1D.o
  
  
--- 1,15 ----
  include ../Makefile.config
  
! current: ead~.o ear~.o eadsr~.o dist~.o \
!         tabreadmix~.o xfm~.o qmult~.o qnorm~.o \
! 	cheby~.o abs~.o ramp~.o \
!         bfft~.o dynwav~.o statwav~.o bdiag~.o \
! 	diag~.o matrix~.o permut~.o lattice~.o ratio.o ffpoly.o fwarp.o \
! 	junction~.o fdn~.o bwin~.o eblosc~.o bitsplit~.o sbosc~.o \
! 	blocknorm~.o resofilt~.o scrollgrid1D~.o \
! 	\
! 	dwt.o cmath.o \
! 	\
! 	envelope_util.o setup.o
  
  

Index: resofilt~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/resofilt~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** resofilt~.c	25 May 2006 16:40:19 -0000	1.1
--- resofilt~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 87,99 ****
    t_float r_prev = ctl->c_r_prev;
  
!   /* use rms of input to drive freq and reso
!      this is such that connecting a dsp signal to the inlets has a reasonable result,
!      even if the inputs are oscillatory. the rms values will be interpolated linearly
!      (that is, linearly in the "analog" domain, so exponentially in the z-domain)  */
  
    reso_rms = freq_rms = 0.0f;
    for (i=0; i<n; i++){
!       t_float _freq = *freq++; /* first input is the reso frequency (absolute) */
!       t_float _reso = *reso++; /* second input is the resonnance (0->1), >1 == self osc */
        freq_rms += _freq * _freq;
        reso_rms += _reso * _reso;
--- 87,103 ----
    t_float r_prev = ctl->c_r_prev;
  
!   /* use rms of input to drive freq and reso.  this is such that
!      connecting a dsp signal to the inlets has a reasonable result,
!      even if the inputs are oscillatory. the rms values will be
!      interpolated linearly (that is, linearly in the "analog" domain,
!      so exponentially in the z-domain)  */
  
    reso_rms = freq_rms = 0.0f;
    for (i=0; i<n; i++){
!       /* first input is the reso frequency (absolute) */
!       t_float _freq = *freq++; 
!       /* second input is the resonnance (0->1), >1 == self osc */
!       t_float _reso = *reso++; 
! 
        freq_rms += _freq * _freq;
        reso_rms += _reso * _reso;
***************
*** 105,114 ****
  
  
!   /* calculate the new pole locations
!      we use an impulse invariant transform: the moog vcf poles are located at
       s_p = (-1 +- r \sqrt{+- j}, with r = (k/4)^(1/4) \in [0,1]
  
!      the poles are always complex, so we can use an orthogonal implementation
!      both conj pole pairs have the same angle, so we can use one phasor and 2 radii
    */
  
--- 109,120 ----
  
  
!   /* calculate the new pole locations.  we use an impulse invariant
!      transform: the moog vcf poles are located at 
! 
       s_p = (-1 +- r \sqrt{+- j}, with r = (k/4)^(1/4) \in [0,1]
  
!      the poles are always complex, so we can use an orthogonal
!      implementation both conj pole pairs have the same angle, so we
!      can use one phasor and 2 radii
    */
  
***************
*** 180,184 ****
        *out++ = x;
  
!       /* saturate (normalize if pow > 1) state to prevent explosion and to allow self-osc */
        _sat_state(stateA);
        _sat_state(stateB);
--- 186,191 ----
        *out++ = x;
  
!       /* saturate (normalize if pow > 1) state to prevent explosion
!        * and to allow self-osc */
        _sat_state(stateA);
        _sat_state(stateB);
***************
*** 223,233 ****
    t_float r_prev = ctl->c_r_prev;
  
!   t_float sqrt5 = sqrtf(5.0f);
  
    /* use rms of input to drive freq and reso */
    reso_rms = freq_rms = 0.0f;
    for (i=0; i<n; i++){
!       t_float _freq = *freq++; /* first input is the reso frequency (absolute) */
!       t_float _reso = *reso++; /* second input is the resonnance (0->1), >1 == self osc */
        freq_rms += _freq * _freq;
        reso_rms += _reso * _reso;
--- 230,242 ----
    t_float r_prev = ctl->c_r_prev;
  
!   t_float sqrt5 = sqrt(5.0);
  
    /* use rms of input to drive freq and reso */
    reso_rms = freq_rms = 0.0f;
    for (i=0; i<n; i++){
!       /* first input is the reso frequency (absolute) */
!       t_float _freq = *freq++;
!       /* second input is the resonnance (0->1), >1 == self osc */
!       t_float _reso = *reso++;
        freq_rms += _freq * _freq;
        reso_rms += _reso * _reso;
***************
*** 239,244 ****
  
  
!   /* calculate the new pole locations
!      we use an impulse invariant transform: the 303 vcf poles are located at
       s_p = omega(-1 + r sqrt(5) e^{pi/3(1+2p)})
  
--- 248,254 ----
  
  
!   /* calculate the new pole locations. we use an impulse invariant
!      transform: the 303 vcf poles are located at
! 
       s_p = omega(-1 + r sqrt(5) e^{pi/3(1+2p)})
  
***************
*** 249,259 ****
  
       
!      this is a strange beast. legend goes it was "invented" by taking the moog vcf
!      and moving one cap up, such that the not-so controllable 3-pole that emerged
!      would avoid the moog patent..
  
!      so, the sound is not so much the locations of the poles, but how the filter
!      reacts to time varying controls. i.e. the pole movement with constant reso,
!      used in the tb-303.
  
    */
--- 259,269 ----
  
       
!      this is a strange beast. legend goes it was "invented" by taking
!      the moog vcf and moving one cap up, such that the not-so
!      controllable 3-pole that emerged would avoid the moog patent..
  
!      so, the sound is not so much the locations of the poles, but how
!      the filter reacts to time varying controls. i.e. the pole
!      movement with constant reso, used in the tb-303.
  
    */
***************
*** 321,325 ****
        *out++ = x;
  
!       /* saturate (normalize if pow > 1) state to prevent explosion and to allow self-osc */
        _sat_state(stateA);
        _sat_state(stateB);
--- 331,336 ----
        *out++ = x;
  
!       /* saturate (normalize if pow > 1) state to prevent explosion
!        * and to allow self-osc */
        _sat_state(stateA);
        _sat_state(stateB);

Index: dynwav~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/dynwav~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** dynwav~.c	25 May 2006 16:40:19 -0000	1.1
--- dynwav~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,6 ****
  /*
!  *   blosc.c  - bandlimited oscillators
!  *   data organization is in (real, imag) pairs
!  *   the first 2 components are (DC, NY)
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,5 ----
  /*
!  *   dynwav~.c  - dynamic wavetable oscillators
!  *
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
***************
*** 110,114 ****
  }
  
! static t_int *dynwav_perform_8point(t_int *w) /* werkt nog nie tegoei */
  {
  
--- 109,114 ----
  }
  
! static t_int *dynwav_perform_8point(t_int *w) 
! /* FIXME: i thought this was broken. */
  {
  
***************
*** 135,143 ****
      {
  
!       /* const float N1 = 1 / (   2      * (1-(1/9))  * (1-(1/25))  * (1-(1/49))  );
!       ** const float N2 = 1 / ( (1-(9))  *      2     * (1-(9/25))  * (1-(9/49))  );
!       ** const float N3 = 1 / ( (1-(25)) * (1-(25/9)) *      2      * (1-(25/49)) );
!       ** const float N4 = 1 / ( (1-(49)) * (1-(49/9)) * (1-(49/25)) *    2        );
!       */
  
        const float N1 =   0.59814453125;
--- 135,143 ----
      {
  
! /* const float N1 = 1 / (   2      * (1-(1/9))  * (1-(1/25))  * (1-(1/49))  );
! ** const float N2 = 1 / ( (1-(9))  *      2     * (1-(9/25))  * (1-(9/49))  );
! ** const float N3 = 1 / ( (1-(25)) * (1-(25/9)) *      2      * (1-(25/49)) );
! ** const float N4 = 1 / ( (1-(49)) * (1-(49/9)) * (1-(49/25)) *    2        );
! */
  
        const float N1 =   0.59814453125;
***************
*** 263,267 ****
  
  
!   dsp_add(dynwav_perform_8point, 5, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
  
  
--- 263,268 ----
  
  
!   dsp_add(dynwav_perform_8point, 5, &x->x_ctl, sp[0]->s_n, 
! 	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
  
  

Index: qmult~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/qmult~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** qmult~.c	25 May 2006 16:40:19 -0000	1.1
--- qmult~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 148,152 ****
      t_qmult *x = (t_qmult *)pd_new(qmult_class);
  
!     for (i=1;i<8;i++) inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"), gensym("signal")); 
      for (i=0;i<4;i++) outlet_new(&x->x_obj, gensym("signal")); 
  
--- 148,153 ----
      t_qmult *x = (t_qmult *)pd_new(qmult_class);
  
!     for (i=1;i<8;i++) inlet_new(&x->x_obj, &x->x_obj.ob_pd,
! 				gensym("signal"), gensym("signal")); 
      for (i=0;i<4;i++) outlet_new(&x->x_obj, gensym("signal")); 
  

Index: dist~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/dist~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** dist~.c	25 May 2006 16:40:19 -0000	1.1
--- dist~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 18,23 ****
   */
  
! #include <m_pd.h>
! #include <math.h>
  
  #define     CLIP          0
--- 18,23 ----
   */
  
! #include "extlib_util.h"
! 
  
  #define     CLIP          0
***************
*** 238,242 ****
  static void dist_dsp(t_dist *x, t_signal **sp)
  {
!     dsp_add(dist_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  
--- 238,243 ----
  static void dist_dsp(t_dist *x, t_signal **sp)
  {
!     dsp_add(dist_perform, 4, &x->x_ctl, sp[0]->s_n, 
! 	    sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  

Index: statwav~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/statwav~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** statwav~.c	25 May 2006 16:40:19 -0000	1.1
--- statwav~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,6 ****
  /*
!  *   dynwav.c  - static wavetable oscillator (scale + tabread)
!  *   data organization is in (real, imag) pairs
!  *   the first 2 components are (DC, NY)
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,5 ----
  /*
!  *   statwav.c  - static wavetable oscillator (scale + tabread)
!  *
   *   Copyright (c) 2000-2003 by Tom Schouten
   *

Index: bitsplit~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/bitsplit~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bitsplit~.c	25 May 2006 16:40:19 -0000	1.1
--- bitsplit~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,4 ****
  /*
!  *   bitsplit.c  - convert a signal to a binary vector 
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,4 ----
  /*
!  *   bitsplit.c  - Convert a signal to a binary vector.
   *   Copyright (c) 2000-2003 by Tom Schouten
   *

Index: bdiag~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/bdiag~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bdiag~.c	25 May 2006 16:40:19 -0000	1.1
--- bdiag~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 23,33 ****
   */
  
! #include <m_pd.h>
! #include <math.h>
  #include <stdio.h>
  #include <stdlib.h>
- #ifndef IS_DENORMAL
- #include "extlib_util.h"
- #endif
  
  #define MAXORDER 64
--- 23,29 ----
   */
  
! #include "extlib_util.h"
  #include <stdio.h>
  #include <stdlib.h>
  
  #define MAXORDER 64
***************
*** 84,88 ****
  
  
! static void bdiag_eigen(t_bdiag *x, t_floatarg index, t_floatarg aval, t_floatarg bval)
  {
    int i = (int)index;
--- 80,85 ----
  
  
! static void bdiag_eigen(t_bdiag *x, t_floatarg index, 
! 			t_floatarg aval, t_floatarg bval)
  {
    int i = (int)index;
***************
*** 95,99 ****
  
  /* set decay time and frequency of pole at index */
! static void bdiag_timefreq(t_bdiag *x, t_floatarg index, t_floatarg time, t_floatarg freq)
  {
    float r,a,b,n;
--- 92,97 ----
  
  /* set decay time and frequency of pole at index */
! static void bdiag_timefreq(t_bdiag *x, t_floatarg index, 
! 			   t_floatarg time, t_floatarg freq)
  {
    float r,a,b,n;
***************
*** 218,222 ****
        
             
!       dsp_add(bdiag_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
      }
  
--- 216,221 ----
        
             
!       dsp_add(bdiag_perform, 4, &x->x_ctl, sp[0]->s_n, 
! 	      sp[0]->s_vec, sp[1]->s_vec);
      }
  
***************
*** 271,277 ****
      class_addmethod(bdiag_class, (t_method)bdiag_dsp, gensym("dsp"), 0); 
  
!     class_addmethod(bdiag_class, (t_method)bdiag_eigen, gensym("eigen"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); 
!     class_addmethod(bdiag_class, (t_method)bdiag_timefreq, gensym("timefreq"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); 
!     class_addmethod(bdiag_class, (t_method)bdiag_preset, gensym("preset"), A_DEFFLOAT, 0); 
  }
  
--- 270,279 ----
      class_addmethod(bdiag_class, (t_method)bdiag_dsp, gensym("dsp"), 0); 
  
!     class_addmethod(bdiag_class, (t_method)bdiag_eigen, gensym("eigen"), 
! 		    A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); 
!     class_addmethod(bdiag_class, (t_method)bdiag_timefreq, gensym("timefreq"), 
! 		    A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); 
!     class_addmethod(bdiag_class, (t_method)bdiag_preset, gensym("preset"), 
! 		    A_DEFFLOAT, 0); 
  }
  

Index: filters.h
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/filters.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** filters.h	25 May 2006 16:03:20 -0000	1.1
--- filters.h	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 3,9 ****
  /* defined as inline functions with call by reference to enable compiler ref/deref optim */
  
- #ifndef CREB_FILTERS_H
- #define CREB_FILTERS_H
- 
  /* the typedef */
  #ifndef T
--- 3,6 ----
***************
*** 228,232 ****
  
  */
- 
- #endif /* CREB_FILTERS_H */
- 
--- 225,226 ----

Index: extlib_util.h
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/extlib_util.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** extlib_util.h	25 May 2006 16:03:20 -0000	1.1
--- extlib_util.h	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 18,24 ****
   */
  
- #ifndef CREB_EXTLIB_UTIL_H
- #define CREB_EXTLIB_UTIL_H
- 
  #include <math.h>
  #include "m_pd.h"
--- 18,21 ----
***************
*** 46,50 ****
  
  #define IS_DENORMAL(f) (((((t_flint)(f)).i) & 0x7f800000) == 0)
- 
- #endif /* CREB_EXTLIB_UTIL_H */
- 
--- 43,44 ----

Index: tabreadmix~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/tabreadmix~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tabreadmix~.c	25 May 2006 16:40:19 -0000	1.1
--- tabreadmix~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 18,23 ****
   */
  
- #include <m_pd.h>
- #include <math.h>
  #include "extlib_util.h"
  
--- 18,21 ----
***************
*** 106,114 ****
  	    /* mix and write */
  	    newpos = (int)(*pos++);
! 	    *out++ = currgain * buf[x->x_currpos++] + prevgain * buf[x->x_prevpos++];
  	    
  	    /* advance oscillator */
! 	    c =  x->x_xfade_state_c * x->x_xfade_cos -  x->x_xfade_state_s * x->x_xfade_sin;
! 	    s =  x->x_xfade_state_c * x->x_xfade_sin +  x->x_xfade_state_s * x->x_xfade_cos;
  	    x->x_xfade_state_c = c;
  	    x->x_xfade_state_s = s;
--- 104,115 ----
  	    /* mix and write */
  	    newpos = (int)(*pos++);
! 	    *out++ = currgain * buf[x->x_currpos++] 
! 		+ prevgain * buf[x->x_prevpos++];
  	    
  	    /* advance oscillator */
! 	    c =   x->x_xfade_state_c * x->x_xfade_cos 
! 		- x->x_xfade_state_s * x->x_xfade_sin;
! 	    s =   x->x_xfade_state_c * x->x_xfade_sin 
! 		+ x->x_xfade_state_s * x->x_xfade_cos;
  	    x->x_xfade_state_c = c;
  	    x->x_xfade_state_s = s;

Index: lattice~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/lattice~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** lattice~.c	25 May 2006 16:40:19 -0000	1.1
--- lattice~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 86,90 ****
  static void lattice_dsp(t_lattice *x, t_signal **sp)
  {
!     dsp_add(lattice_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  
--- 86,91 ----
  static void lattice_dsp(t_lattice *x, t_signal **sp)
  {
!     dsp_add(lattice_perform, 4, &x->x_ctl, sp[0]->s_n,
! 	    sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  
***************
*** 139,143 ****
      class_addmethod(lattice_class, (t_method)lattice_dsp, gensym("dsp"), 0); 
      class_addmethod(lattice_class, (t_method)lattice_reset, gensym("reset"), 0); 
!     class_addmethod(lattice_class, (t_method)lattice_rc, gensym("rc"), A_FLOAT, A_FLOAT, 0); 
  
  }
--- 140,145 ----
      class_addmethod(lattice_class, (t_method)lattice_dsp, gensym("dsp"), 0); 
      class_addmethod(lattice_class, (t_method)lattice_reset, gensym("reset"), 0); 
!     class_addmethod(lattice_class, (t_method)lattice_rc,
! 		    gensym("rc"), A_FLOAT, A_FLOAT, 0); 
  
  }

Index: qnorm~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/qnorm~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** qnorm~.c	25 May 2006 16:40:19 -0000	1.1
--- qnorm~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 120,124 ****
      t_qnorm *x = (t_qnorm *)pd_new(qnorm_class);
  
!     for (i=1;i<4;i++) inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"), gensym("signal")); 
      for (i=0;i<4;i++) outlet_new(&x->x_obj, gensym("signal")); 
  
--- 120,125 ----
      t_qnorm *x = (t_qnorm *)pd_new(qnorm_class);
  
!     for (i=1;i<4;i++) inlet_new(&x->x_obj, &x->x_obj.ob_pd,
! 				gensym("signal"), gensym("signal")); 
      for (i=0;i<4;i++) outlet_new(&x->x_obj, gensym("signal")); 
  

Index: sbosc~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/sbosc~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sbosc~.c	25 May 2006 16:40:19 -0000	1.1
--- sbosc~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,6 ****
  /*
!  *   sbosc.c  - smallband oscillator. periodic, linear interpolated frequency center.
!  *   data organization is in (real, imag) pairs
!  *   the first 2 components are (DC, NY)
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,6 ----
  /*
!  *   sbosc.c - smallband oscillator. periodic, linear interpolated
!  *   frequency center.  
!  *
   *   Copyright (c) 2000-2003 by Tom Schouten
   *

Index: ead~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/ead~.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ead~.c	25 May 2006 17:01:41 -0000	1.3
--- ead~.c	15 Aug 2006 15:11:52 -0000	1.4
***************
*** 18,23 ****
   */
  
- #include <m_pd.h>
- #include <math.h>
  #include "extlib_util.h"
  
--- 18,21 ----
***************
*** 122,126 ****
  
  /* constructor */
! static void *ead_new(t_floatarg attack, t_floatarg decay, t_floatarg sustain, t_floatarg release)
  {
      /* create instance */
--- 120,125 ----
  
  /* constructor */
! static void *ead_new(t_floatarg attack, t_floatarg decay, 
! 		     t_floatarg sustain, t_floatarg release)
  {
      /* create instance */
***************
*** 153,191 ****
      class_addmethod(ead_class, (t_method)ead_start, gensym("bang"), 0);
      class_addmethod(ead_class, (t_method)ead_dsp, gensym("dsp"), 0); 
!     class_addmethod(ead_class, (t_method)ead_attack, gensym("attack"), A_FLOAT, 0);
!     class_addmethod(ead_class, (t_method)ead_decay, gensym("decay"), A_FLOAT, 0);
  }
  
- /*
-  *   Utility functions for exponential decay 
-  *   Copyright (c) 2000-2003 by Tom Schouten
-  *
-  *   This program is free software; you can redistribute it and/or modify
-  *   it under the terms of the GNU General Public License as published by
-  *   the Free Software Foundation; either version 2 of the License, or
-  *   (at your option) any later version.
-  *
-  *   This program is distributed in the hope that it will be useful,
-  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  *   GNU General Public License for more details.
-  *
-  *   You should have received a copy of the GNU General Public License
-  *   along with this program; if not, write to the Free Software
-  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-  */
- 
- 
- //#include "extlib_util.h"
- 
- float milliseconds_2_one_minus_realpole(float time)
- {
-   float r;
- 
-   if (time < 0.0f) time = 0.0f;
-   r = -expm1(1000.0f * log(ENVELOPE_RANGE) / (sys_getsr() * time));
-   if (!(r < 1.0f)) r = 1.0f;
- 
-   //post("%f",r);
-   return r;
- }
--- 152,159 ----
      class_addmethod(ead_class, (t_method)ead_start, gensym("bang"), 0);
      class_addmethod(ead_class, (t_method)ead_dsp, gensym("dsp"), 0); 
!     class_addmethod(ead_class, (t_method)ead_attack,
! 		    gensym("attack"), A_FLOAT, 0);
!     class_addmethod(ead_class, (t_method)ead_decay,
! 		    gensym("decay"), A_FLOAT, 0);
  }
  

Index: bfft~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/bfft~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bfft~.c	25 May 2006 16:40:19 -0000	1.1
--- bfft~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,6 ****
  /*
!  *   bfft.c  - code for some fourrier transform variants and utility functions
!  *   data organization is in (real, imag) pairs
!  *   the first 2 components are (DC, NY)
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,7 ----
  /*
!  *   bfft.c - Code for some fourrier transform variants and utility
!  *   functions. Data organization is in (real, imag) pairs the first 2
!  *   components are (DC, NY)
!  *
   *   Copyright (c) 2000-2003 by Tom Schouten
   *

Index: eblosc~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/eblosc~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** eblosc~.c	25 May 2006 16:40:19 -0000	1.1
--- eblosc~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 65,70 ****
  
  /* phase converters */
! static inline float _phase_to_float(u32 p){return ((float)p) * (1.0f / 4294967296.0f);}
! static inline u32 _float_to_phase(float f){return (u32)(f * 4294967296.0f);}
  
  
--- 65,74 ----
  
  /* phase converters */
! static inline float _phase_to_float(u32 p){
!     return ((float)p) * (1.0f / 4294967296.0f);
! }
! static inline u32 _float_to_phase(float f){
!     return (u32)(f * 4294967296.0f);
! }
  
  
***************
*** 145,150 ****
  	int voice;
  
! 	/* determine the location of the discontinuity (in oversampled coordiates
!  	  using linear interpolation */
  
  	float f = (float)S * curr / (curr - prev);
--- 149,154 ----
  	int voice;
  
! 	/* determine the location of the discontinuity (in oversampled
!  	  coordiates using linear interpolation */
  
  	float f = (float)S * curr / (curr - prev);
***************
*** 209,214 ****
  	ctl->c_next_voice &= VOICES-1;
  	    
! 	/* determine the location of the discontinuity (in oversampled coordinates)
! 	   which is S * (new phase) / (increment) */
  	    
  	table_index = phase / phase_inc_decimated;
--- 213,218 ----
  	ctl->c_next_voice &= VOICES-1;
  	    
! 	/* determine the location of the discontinuity (in oversampled
! 	   coordinates) which is S * (new phase) / (increment) */
  	    
  	table_index = phase / phase_inc_decimated;
***************
*** 219,223 ****
  	table_phase = phase - (table_index * phase_inc_decimated);
  	    
! 	/* use it to initialize the new voice index and interpolation fraction */
  	    
  	ctl->c_index[voice] = table_index;
--- 223,228 ----
  	table_phase = phase - (table_index * phase_inc_decimated);
  	    
! 	/* use it to initialize the new voice index and interpolation
! 	 * fraction */
  	    
  	ctl->c_index[voice] = table_index;
***************
*** 234,240 ****
  
  
! /* the 2 oscillator version:
!    the second osc can reset the first osc's phase (hence it determines the pitch)
!    the first osc determines the waveform */
  
  static void _bang_hardsync_phasor(t_ebloscctl *ctl, float freq, float freq2)
--- 239,245 ----
  
  
! /* the 2 oscillator version: the second osc can reset the first osc's
!    phase (hence it determines the pitch) the first osc determines the
!    waveform */
  
  static void _bang_hardsync_phasor(t_ebloscctl *ctl, float freq, float freq2)
***************
*** 298,303 ****
  	ctl->c_next_voice &= VOICES-1;
  	    
! 	/* determine the location of the discontinuity (in oversampled coordinates)
! 	   which is S * (new phase) / (increment) */
  
  	table_index = phase / phase_inc_decimated;
--- 303,308 ----
  	ctl->c_next_voice &= VOICES-1;
  	    
! 	/* determine the location of the discontinuity (in oversampled
! 	   coordinates) which is S * (new phase) / (increment) */
  
  	table_index = phase / phase_inc_decimated;
***************
*** 308,316 ****
  	table_phase = phase - (table_index * phase_inc_decimated);
  
! 	/* determine the step size
! 	   as opposed to saw/impulse waveforms, the step is not always equal to one. it is:
!            oldphase - phase + phase_inc 
! 	   but for the unit step this will overflow to zero, so we
! 	   reduce the bit depth to prevent overflow */
  
  	stepsize = _phase_to_float(((oldphase-phase) >> LOVERSAMPLE)
--- 313,321 ----
  	table_phase = phase - (table_index * phase_inc_decimated);
  
! 	/* determine the step size. as opposed to saw/impulse
! 	   waveforms, the step is not always equal to one. it is:
! 	   oldphase - phase + phase_inc but for the unit step this
! 	   will overflow to zero, so we reduce the bit depth to
! 	   prevent overflow */
  
  	stepsize = _phase_to_float(((oldphase-phase) >> LOVERSAMPLE)
***************
*** 355,359 ****
  	sample += _phase_to_float(ctl->c_phase) - 0.5f;
  
! 	/* highpass filter output to remove DC offset and low frequency aliasing */
  	ctl->c_butter->BangSmooth(sample, sample, 0.05f);
  
--- 360,365 ----
  	sample += _phase_to_float(ctl->c_phase) - 0.5f;
  
! 	/* highpass filter output to remove DC offset and low
! 	 * frequency aliasing */
  	ctl->c_butter->BangSmooth(sample, sample, 0.05f);
  
***************
*** 417,421 ****
  	float sample = _get_bandlimited_discontinuity(ctl, bli);
  
! 	/* highpass filter output to remove DC offset and low frequency aliasing */
  	ctl->c_butter->BangSmooth(sample, sample, 0.05f);
  
--- 423,428 ----
  	float sample = _get_bandlimited_discontinuity(ctl, bli);
  
! 	/* highpass filter output to remove DC offset and low
! 	 * frequency aliasing */
  	ctl->c_butter->BangSmooth(sample, sample, 0.05f);
  
***************
*** 497,501 ****
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_hardsync_saw, 5, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
    }
  
--- 504,509 ----
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_hardsync_saw, 5, &x->x_ctl, sp[0]->s_n,
! 	      sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
    }
  
***************
*** 504,508 ****
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
    }
    else if (x->x_ctl.c_waveform == gensym("pulse2")){
--- 512,517 ----
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n,
! 	      sp[0]->s_vec, sp[1]->s_vec);
    }
    else if (x->x_ctl.c_waveform == gensym("pulse2")){
***************
*** 510,524 ****
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = -1.0f;
!       dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
    }
    else if (x->x_ctl.c_waveform == gensym("comparator")){
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_comparator, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
    }
    else{
         x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_saw, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
    }
  
--- 519,536 ----
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = -1.0f;
!       dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n,
! 	      sp[0]->s_vec, sp[1]->s_vec);
    }
    else if (x->x_ctl.c_waveform == gensym("comparator")){
        x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_comparator, 4, &x->x_ctl,
! 	      sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
    }
    else{
         x->x_ctl.c_scale = 1.0f;
        x->x_ctl.c_scale_update = 1.0f;
!       dsp_add(eblosc_perform_saw, 4, &x->x_ctl, sp[0]->s_n,
! 	      sp[0]->s_vec, sp[1]->s_vec);
    }
  
***************
*** 543,552 ****
      /* optional signal inlets */
      if (s == gensym("syncsaw")){
! 	inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"), gensym("signal"));  
      }
  
      /* optional phase inlet */
      if (s != gensym("comparator")){
! 	inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("phase"));  
      }
  
--- 555,566 ----
      /* optional signal inlets */
      if (s == gensym("syncsaw")){
! 	inlet_new(&x->x_obj, &x->x_obj.ob_pd,
! 		  gensym("signal"), gensym("signal"));  
      }
  
      /* optional phase inlet */
      if (s != gensym("comparator")){
! 	inlet_new(&x->x_obj, &x->x_obj.ob_pd,
! 		  gensym("float"), gensym("phase"));  
      }
  
***************
*** 586,598 ****
  	
  	eblosc_class = class_new(gensym("eblosc~"), (t_newmethod)eblosc_new,
! 				(t_method)eblosc_free, sizeof(t_eblosc), 0, A_DEFSYMBOL, A_NULL);
  	CLASS_MAINSIGNALIN(eblosc_class, t_eblosc, x_f);
! 	class_addmethod(eblosc_class, (t_method)eblosc_dsp, gensym("dsp"), A_NULL); 
! 	class_addmethod(eblosc_class, (t_method)eblosc_phase, gensym("phase"), A_FLOAT, A_NULL); 
! 	class_addmethod(eblosc_class, (t_method)eblosc_phase2, gensym("phase2"), A_FLOAT, A_NULL); 
! 
! 	
      }
- 
  }
  
--- 600,613 ----
  	
  	eblosc_class = class_new(gensym("eblosc~"), (t_newmethod)eblosc_new,
! 				(t_method)eblosc_free, sizeof(t_eblosc),
! 				 0, A_DEFSYMBOL, A_NULL);
  	CLASS_MAINSIGNALIN(eblosc_class, t_eblosc, x_f);
! 	class_addmethod(eblosc_class, (t_method)eblosc_dsp,
! 			gensym("dsp"), A_NULL); 
! 	class_addmethod(eblosc_class, (t_method)eblosc_phase,
! 			gensym("phase"), A_FLOAT, A_NULL); 
! 	class_addmethod(eblosc_class, (t_method)eblosc_phase2,
! 			gensym("phase2"), A_FLOAT, A_NULL); 
      }
  }
  

Index: scrollgrid1D~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/scrollgrid1D~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** scrollgrid1D~.c	25 May 2006 16:40:19 -0000	1.1
--- scrollgrid1D~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 22,33 ****
      for more information see:
  
!     Yalcin M., Ozoguz S., Suykens J.A.K., Vandewalle J., 
!     ``Families of Scroll Grid Attractors'', 
!     International Journal of Bifurcation and Chaos, vol. 12, no. 1, Jan. 2002, pp. 23-41.
  
!     this file implements a digital variant of the method introduced in the paper,
!     so that it can be used as a parametrizable, bounded chatotic oscillator.
!     in short it is a switched linear system, with some added hard limiting to 
!     convert unstable oscillations into stable ones.
      
  */
--- 22,34 ----
      for more information see:
  
!     Yalcin M., Ozoguz S., Suykens J.A.K., Vandewalle J., ``Families of
!     Scroll Grid Attractors'', International Journal of Bifurcation and
!     Chaos, vol. 12, no. 1, Jan. 2002, pp. 23-41.
  
!     this file implements a digital variant of the method introduced in
!     the paper, so that it can be used as a parametrizable, bounded
!     chatotic oscillator.  in short it is a switched linear system,
!     with some added hard limiting to convert unstable oscillations
!     into stable ones.
      
  */
***************
*** 109,115 ****
  
        /* base transform + clipping to prevent blowup */
!       x = _sat(0.5f * (state[0] - state[2]), (float)o); /* projection onto axis containing fixed */
!       y = _sat(0.5f * state[1], 1.0f);                         /* the "pure" oscillation axis */
!       z = _sat(0.5f * (state[0] + state[2]), 1.0f);     /* orthogonal complement of x */
  
        /* output */
--- 110,119 ----
  
        /* base transform + clipping to prevent blowup */
!       /* projection onto axis containing fixed */
!       x = _sat(0.5f * (state[0] - state[2]), (float)o); 
!       /* the "pure" oscillation axis */
!       y = _sat(0.5f * state[1], 1.0f);
!       /* orthogonal complement of x */
!       z = _sat(0.5f * (state[0] + state[2]), 1.0f);
  
        /* output */
***************
*** 210,219 ****
  {
      //post("scrollgrid1D~ v0.1");
!     scrollgrid1D_class = class_new(gensym("scrollgrid1D~"), (t_newmethod)scrollgrid1D_new,
      	(t_method)scrollgrid1D_free, sizeof(t_scrollgrid1D), 0, A_DEFFLOAT, 0);
      CLASS_MAINSIGNALIN(scrollgrid1D_class, t_scrollgrid1D, x_f);
!     class_addmethod(scrollgrid1D_class, (t_method)scrollgrid1D_dsp, gensym("dsp"), 0); 
!     class_addmethod(scrollgrid1D_class, (t_method)scrollgrid1D_reset, gensym("reset"), 0); 
! 
  
  }
--- 214,225 ----
  {
      //post("scrollgrid1D~ v0.1");
!     scrollgrid1D_class = class_new(gensym("scrollgrid1D~"),
! 				   (t_newmethod)scrollgrid1D_new,
      	(t_method)scrollgrid1D_free, sizeof(t_scrollgrid1D), 0, A_DEFFLOAT, 0);
      CLASS_MAINSIGNALIN(scrollgrid1D_class, t_scrollgrid1D, x_f);
!     class_addmethod(scrollgrid1D_class, (t_method)scrollgrid1D_dsp,
! 		    gensym("dsp"), 0); 
!     class_addmethod(scrollgrid1D_class, (t_method)scrollgrid1D_reset,
! 		    gensym("reset"), 0); 
  
  }

Index: blocknorm~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/blocknorm~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** blocknorm~.c	25 May 2006 16:40:19 -0000	1.1
--- blocknorm~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 1,4 ****
  /*
!  *   blocknorm.c  - normalize an array of dsp blocks (for spectral processing) 
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
--- 1,6 ----
  /*
!  *   blocknorm.c - Normalize an array of dsp blocks. (spectral
!  *   processing primitive)
!  *
   *   Copyright (c) 2000-2003 by Tom Schouten
   *
***************
*** 69,73 ****
      for (j=0;j<c;j++){
  	for (i=0;i<n;i++){
! 	    out[j][i] *= s;
  	}
      }
--- 71,75 ----
      for (j=0;j<c;j++){
  	for (i=0;i<n;i++){
! 	    out[j][i] *= s;  // FIXME: clockwize addressing problem
  	}
      }
***************
*** 114,118 ****
  
      j = i;
!     while (--j) inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"), gensym("signal"));  
      while (i--) outlet_new(&x->x_obj, gensym("signal")); 
  
--- 116,121 ----
  
      j = i;
!     while (--j) inlet_new(&x->x_obj, &x->x_obj.ob_pd, 
! 			  gensym("signal"), gensym("signal"));  
      while (i--) outlet_new(&x->x_obj, gensym("signal")); 
  

Index: fdn~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/fdn~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** fdn~.c	25 May 2006 16:40:19 -0000	1.1
--- fdn~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 27,34 ****
  
  */
- #include <m_pd.h>
- #include <math.h>
- #include "extlib_util.h"
  
  #include <stdlib.h>
  #include <stdio.h>
--- 27,32 ----
  
  */
  
+ #include "extlib_util.h"
  #include <stdlib.h>
  #include <stdio.h>
***************
*** 107,111 ****
  static void fdn_order(t_fdn *x, t_int order){
    if (order > x->x_ctl.c_maxorder) {
!     post("fdn: this should not happen (panic!) order %d is larger than maxorder %d:", 
  	 order, x->x_ctl.c_maxorder ); 
      exit(1);
--- 105,110 ----
  static void fdn_order(t_fdn *x, t_int order){
    if (order > x->x_ctl.c_maxorder) {
!     post("fdn: this should not happen (panic!) order %d "
! 	 "is larger than maxorder %d:", 
  	 order, x->x_ctl.c_maxorder ); 
      exit(1);
***************
*** 132,137 ****
  {
    int i;
!   if (x->x_ctl.c_buf) memset(x->x_ctl.c_buf, 0, x->x_ctl.c_bufsize * sizeof(float));
!   if (x->x_ctl.c_vectorbuffer) memset(x->x_ctl.c_vectorbuffer, 0, x->x_ctl.c_maxorder * 2 * sizeof(float));
  }
  
--- 131,140 ----
  {
    int i;
!   if (x->x_ctl.c_buf) 
!       memset(x->x_ctl.c_buf, 0, x->x_ctl.c_bufsize 
! 	     * sizeof(float));
!   if (x->x_ctl.c_vectorbuffer) 
!       memset(x->x_ctl.c_vectorbuffer,
! 	     0, x->x_ctl.c_maxorder * 2 * sizeof(float));
  }
  
***************
*** 327,331 ****
    int mask = x->x_ctl.c_bufsize - 1;
    int start =  x->x_ctl.c_tap[0];
!   t_int *tap = x->x_ctl.c_tap;
    float *length = x->x_ctl.c_length;
    float scale = sys_getsr() * .001f;
--- 330,334 ----
    int mask = x->x_ctl.c_bufsize - 1;
    int start =  x->x_ctl.c_tap[0];
!   int *tap = x->x_ctl.c_tap;
    float *length = x->x_ctl.c_length;
    float scale = sys_getsr() * .001f;
***************
*** 339,343 ****
  
    if (sum > mask){ 
!     post("fdn: warning: not enough delay memory, behaviour is undefined (this could lead to instability...)");
    }
      
--- 342,347 ----
  
    if (sum > mask){ 
!     post("fdn: warning: not enough delay memory, behaviour "
! 	 "is undefined (this could lead to instability...)");
    }
      
***************
*** 443,447 ****
    
  
!   post("fdn: maximum nb of delay lines %d, total buffer size %d samples (%f seconds)", 
         order, bufsize, ((float)bufsize) / sys_getsr());
    
--- 447,452 ----
    
  
!   post("fdn: maximum nb of delay lines %d, total buffer "
!        "size %d samples (%f seconds)", 
         order, bufsize, ((float)bufsize) / sys_getsr());
    
***************
*** 490,499 ****
      class_addmethod(fdn_class, (t_method)fdn_print, gensym("print"), 0);
      class_addmethod(fdn_class, (t_method)fdn_reset, gensym("reset"), 0);
!     class_addmethod(fdn_class, (t_method)fdn_timehigh, gensym("timehigh"), A_DEFFLOAT, 0);
!     class_addmethod(fdn_class, (t_method)fdn_timelow, gensym("timelow"), A_DEFFLOAT, 0);
      class_addmethod(fdn_class, (t_method)fdn_list, gensym("lines"), A_GIMME, 0);
      class_addmethod(fdn_class, (t_method)fdn_dsp, gensym("dsp"), 0); 
!     class_addmethod(fdn_class, (t_method)fdn_linear, gensym("linear"), A_FLOAT, A_FLOAT, A_FLOAT, 0); 
!     class_addmethod(fdn_class, (t_method)fdn_exponential, gensym("exponential"), A_FLOAT, A_FLOAT, A_FLOAT, 0); 
  
  }
--- 495,508 ----
      class_addmethod(fdn_class, (t_method)fdn_print, gensym("print"), 0);
      class_addmethod(fdn_class, (t_method)fdn_reset, gensym("reset"), 0);
!     class_addmethod(fdn_class, (t_method)fdn_timehigh,
! 		    gensym("timehigh"), A_DEFFLOAT, 0);
!     class_addmethod(fdn_class, (t_method)fdn_timelow,
! 		    gensym("timelow"), A_DEFFLOAT, 0);
      class_addmethod(fdn_class, (t_method)fdn_list, gensym("lines"), A_GIMME, 0);
      class_addmethod(fdn_class, (t_method)fdn_dsp, gensym("dsp"), 0); 
!     class_addmethod(fdn_class, (t_method)fdn_linear,
! 		    gensym("linear"), A_FLOAT, A_FLOAT, A_FLOAT, 0); 
!     class_addmethod(fdn_class, (t_method)fdn_exponential,
! 		    gensym("exponential"), A_FLOAT, A_FLOAT, A_FLOAT, 0); 
  
  }

Index: cheby~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/cheby~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** cheby~.c	25 May 2006 16:40:19 -0000	1.1
--- cheby~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 92,96 ****
  static void cheby_dsp(t_cheby *x, t_signal **sp)
  {
!     dsp_add(cheby_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  
--- 92,97 ----
  static void cheby_dsp(t_cheby *x, t_signal **sp)
  {
!     dsp_add(cheby_perform, 4, &x->x_ctl, sp[0]->s_n, 
! 	    sp[0]->s_vec, sp[1]->s_vec);
  
  }                                  
***************
*** 133,137 ****
      class_addmethod(cheby_class, (t_method)cheby_bang, gensym("bang"), 0);
      class_addmethod(cheby_class, (t_method)cheby_dsp, gensym("dsp"), 0); 
!     class_addmethod(cheby_class, (t_method)cheby_coef, gensym("coef"), A_DEFFLOAT, A_DEFFLOAT, 0); 
  
  }
--- 134,139 ----
      class_addmethod(cheby_class, (t_method)cheby_bang, gensym("bang"), 0);
      class_addmethod(cheby_class, (t_method)cheby_dsp, gensym("dsp"), 0); 
!     class_addmethod(cheby_class, (t_method)cheby_coef, gensym("coef"), 
! 		    A_DEFFLOAT, A_DEFFLOAT, 0); 
  
  }

Index: diag~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/diag~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** diag~.c	25 May 2006 16:40:19 -0000	1.1
--- diag~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 23,33 ****
   */
  
! #include <m_pd.h>
! #include <math.h>
  #include <stdio.h>
  #include <stdlib.h>
- #ifndef IS_DENORMAL
- #include "extlib_util.h"
- #endif
  
  #define MAXORDER 64
--- 23,29 ----
   */
  
! #include "extlib_util.h"
  #include <stdio.h>
  #include <stdlib.h>
  
  #define MAXORDER 64

Index: permut~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/permut~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** permut~.c	25 May 2006 16:40:19 -0000	1.1
--- permut~.c	15 Aug 2006 15:11:52 -0000	1.2
***************
*** 20,32 ****
   */
  
! #include <m_pd.h>
  #include <math.h>
- #include "extlib_util.h"
  #include <stdlib.h>
  
  typedef struct permutctl
  {
    char c_type;
!   t_int *c_permutationtable;
    int c_blocksize;
  } t_permutctl;
--- 20,35 ----
   */
  
! 
  #include <math.h>
  #include <stdlib.h>
+ //#include "m_pd.h"
+ #include "extlib_util.h"
+                                
+ 
  
  typedef struct permutctl
  {
    char c_type;
!   int *c_permutationtable;
    int c_blocksize;
  } t_permutctl;
***************
*** 60,64 ****
    int N = x->x_ctl.c_blocksize;
    int mask = N-1;
!   t_int *p = x->x_ctl.c_permutationtable;
    int r, last = 0;
  
--- 63,67 ----
    int N = x->x_ctl.c_blocksize;
    int mask = N-1;
!   int *p = x->x_ctl.c_permutationtable;
    int r, last = 0;
  
***************
*** 101,105 ****
        if (x->x_ctl.c_permutationtable)
  	free(x->x_ctl.c_permutationtable);
!       x->x_ctl.c_permutationtable = (t_int *)malloc(sizeof(int)*size);
        x->x_ctl.c_blocksize = size;
  
--- 104,108 ----
        if (x->x_ctl.c_permutationtable)
  	free(x->x_ctl.c_permutationtable);
!       x->x_ctl.c_permutationtable = (int *)malloc(sizeof(int)*size);
        x->x_ctl.c_blocksize = size;
  

Index: ffpoly.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/ffpoly.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ffpoly.c	31 Dec 2005 19:31:09 -0000	1.2
--- ffpoly.c	15 Aug 2006 15:11:52 -0000	1.3
***************
*** 50,54 ****
      int fo = x->x_field_order;
      int po = x->x_poly_order;
!     t_int* c = x->x_coef;
      int i, out;
  
--- 50,54 ----
      int fo = x->x_field_order;
      int po = x->x_poly_order;
!     int* c = x->x_coef;
      int i, out;
  
***************
*** 136,140 ****
      x->x_field_order = fieldorder;
  
!     x->x_coef = (t_int *)malloc((x->x_poly_order  + 1) * sizeof(int));
  
      /* set poly to f(x) = x */
--- 136,140 ----
      x->x_field_order = fieldorder;
  
!     x->x_coef = (int *)malloc((x->x_poly_order  + 1) * sizeof(int));
  
      /* set poly to f(x) = x */





More information about the Pd-cvs mailing list