[PD-cvs] externals/creb/modules extlib_util.h, NONE, 1.1 filters.h, NONE, 1.1 ead.c, 1.4, 1.5 eadsr.c, 1.4, 1.5 ear.c, 1.4, 1.5 fdn.c, 1.5, 1.6 permut.c, 1.4, 1.5 tabreadmix.c, 1.2, 1.3
Hans-Christoph Steiner
eighthave at users.sourceforge.net
Thu May 25 18:03:22 CEST 2006
- Previous message: [PD-cvs] externals/hcs square~.pd,NONE,1.1
- Next message: [PD-cvs] externals/creb/modules abs~.c, NONE, 1.1 bdiag~.c, NONE, 1.1 bfft~.c, NONE, 1.1 bitsplit~.c, NONE, 1.1 blocknorm~.c, NONE, 1.1 cheby~.c, NONE, 1.1 cmath~.c, NONE, 1.1 diag~.c, NONE, 1.1 dist~.c, NONE, 1.1 dwt~.c, NONE, 1.1 dynwav~.c, NONE, 1.1 eadsr~.c, NONE, 1.1 ead~.c, NONE, 1.1 ear~.c, NONE, 1.1 eblosc~.c, NONE, 1.1 fdn~.c, NONE, 1.1 junction~.c, NONE, 1.1 lattice~.c, NONE, 1.1 matrix~.c, NONE, 1.1 permut~.c, NONE, 1.1 qmult~.c, NONE, 1.1 qnorm~.c, NONE, 1.1 ramp~.c, NONE, 1.1 resofilt~.c, NONE, 1.1 sbosc~.c, NONE, 1.1 scrollgrid1D~.c, NONE, 1.1 statwav~.c, NONE, 1.1 tabreadmix~.c, NONE, 1.1 window~.c, NONE, 1.1 xfm~.c, NONE, 1.1 abs.c, 1.2, NONE bdiag.c, 1.5, NONE bfft.c, 1.2, NONE bitsplit.c, 1.1, NONE blocknorm.c, 1.1, NONE cheby.c, 1.2, NONE cmath.c, 1.1, NONE diag.c, 1.5, NONE dist.c, 1.3, NONE dwt.c, 1.2, NONE dynwav.c, 1.2, NONE ead.c, 1.5, NONE eadsr.c, 1.5, NONE ear.c, 1.5, NONE eblosc.c, 1.1, NONE fdn.c, 1.6, NONE junction.c, 1.1, NONE lattice.c, 1.2, NONE matrix.c, 1.2, NONE permut.c, 1.5, NONE qmult.c, 1.1.1.1, NONE qnorm.c, 1.1.1.1, NONE ramp.c, 1.2, NONE resofilt.c, 1.1, NONE sbosc.c, 1.1, NONE scrollgrid1D.c, 1.1, NONE statwav.c, 1.2, NONE tabreadmix.c, 1.3, NONE window.c, 1.1, NONE xfm.c, 1.1.1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/pure-data/externals/creb/modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13817
Modified Files:
ead.c eadsr.c ear.c fdn.c permut.c tabreadmix.c
Added Files:
extlib_util.h filters.h
Log Message:
moved headers from externals/creb/include to externals/creb/modules to dramatically simplify build process (I discussed this with Tom, he said he would make the changes to his own source repository, this is just a copy)
Index: tabreadmix.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/tabreadmix.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tabreadmix.c 12 Apr 2005 06:22:12 -0000 1.2
--- tabreadmix.c 25 May 2006 16:03:20 -0000 1.3
***************
*** 20,24 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
/******************** tabreadmix~ ***********************/
--- 20,24 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
/******************** tabreadmix~ ***********************/
--- NEW FILE: extlib_util.h ---
/*
* Prototypes for utility functions used in pd externals
* 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.
*/
#ifndef CREB_EXTLIB_UTIL_H
#define CREB_EXTLIB_UTIL_H
#include <math.h>
#include "m_pd.h"
/* envelope stuff */
/* exponential range for envelopes is 60dB */
#define ENVELOPE_RANGE 0.001f
#define ENVELOPE_MAX (1.0f - ENVELOPE_RANGE)
#define ENVELOPE_MIN ENVELOPE_RANGE
/* convert milliseconds to 1-p, with p a real pole */
float milliseconds_2_one_minus_realpole(float time);
typedef union
{
unsigned int i;
float f;
} t_flint;
/* check if floating point number is denormal */
//#define IS_DENORMAL(f) (((*(unsigned int *)&(f))&0x7f800000) == 0)
#define IS_DENORMAL(f) (((((t_flint)(f)).i) & 0x7f800000) == 0)
#endif /* CREB_EXTLIB_UTIL_H */
Index: eadsr.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/eadsr.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** eadsr.c 12 Apr 2005 06:22:12 -0000 1.4
--- eadsr.c 25 May 2006 16:03:20 -0000 1.5
***************
*** 20,24 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
typedef struct eadsrctl
--- 20,24 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
typedef struct eadsrctl
Index: fdn.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/fdn.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** fdn.c 31 Dec 2005 19:31:09 -0000 1.5
--- fdn.c 25 May 2006 16:03:20 -0000 1.6
***************
*** 29,33 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
#include <stdlib.h>
--- 29,33 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
#include <stdlib.h>
Index: ear.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/ear.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ear.c 12 Apr 2005 06:22:12 -0000 1.4
--- ear.c 25 May 2006 16:03:20 -0000 1.5
***************
*** 20,24 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
typedef struct earctl
--- 20,24 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
typedef struct earctl
--- NEW FILE: filters.h ---
/* this file contains a 37th attempt to write a general purpose iir filter toolset */
/* 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
#define T float
#endif
/* the prototype for a word */
#define P static inline void
#define PP static void
/* the 'reference' arguments */
#define A *a
#define B *b
#define C *c
#define D *d
#define X *x
#define Y *y
#define S *s
/* the opcodes */
/* add */
P cadd (T X, T Y, T A, T B, T C, T D) { X = A + C; Y = B + D;}
P cadd2 (T A, T B, T C, T D) { A += C; B += D;}
P vcadd (T X, T A, T C) { cadd(x,x+1,a,a+1,c,c+1); }
P vcadd2 (T A, T C) { cadd2(a,a+1,c,c+1); }
/* mul */
P cmul_r (T X, T A, T B, T C, T D) { X = A * C - B * D;}
P cmul_i (T Y, T A, T B, T C, T D) { Y = A * D + B * C;}
P cmul (T X, T Y, T A, T B, T C, T D)
{
cmul_r (x, a, b, c, d);
cmul_i (y, a, b, c, d);
}
P cmul2 (T A, T B, T C, T D)
{
T x = A;
T y = B;
cmul (&x, &y, a, b, c, d);
A = x;
B = y;
}
P vcmul (T X, T A, T C) { cmul(x,x+1,a,a+1,c,c+1); }
P vcmul2 (T A, T C) { cmul2(a,a+1,c,c+1); }
/* norm */
static inline float vcnorm(T X) { return hypot(x[0], x[1]); }
/* swap */
P vcswap(T Y, T X)
{
float t[2] = {x[0], x[1]};
x[0] = y[0];
x[1] = y[1];
y[0] = t[0];
y[1] = t[1];
}
/* inverse */
P vcinv(T Y, T X)
{
float scale = 1.0f / vcnorm(x);
y[0] = scale * x[0];
y[1] = scale * x[1];
}
P vcinv1(T X)
{
float scale = 1.0f / vcnorm(x);
x[0] *= scale;
x[1] *= scale;
}
/* exp */
/* X = exp(Y) */
P vcexp2 (T Y, T X)
{
T r = exp(x[0]);
y[0] = cos (x[1]);
y[1] = sin (x[1]);
y[0] *= r;
y[1] *= r;
}
P vcexp1 (T X)
{
T y[2];
vcexp2(y,x);
x[0] = y[0];
x[1] = y[1];
}
/*
FILTERS
the transfer function is defined in terms of the "engineering"
bilateral z-transform of the discrete impulse response h[n].
H(z) = Sum{n = -inf -> inf} h[n] z^(-n)
a unit delay operating on a singnal S(z) is therefore
represented as z^(-1) S(z)
*/
/* biquads */
/* biquad, orthogonal (poles & zeros), real in, out, state, pole, output */
P biq_orth_r (T X, T Y, T S, T A, T C)
{
Y = X + c[0] * s[0] - c[1] * s[1]; /* mind sign of c[1] */
vcmul2(s, a);
S += X;
}
/* biquad, orthogonal, complex one-pole, with scaling */
/* complex one pole: (output = s[0] + is[1]): C / (1-A z^(-1)) */
P one_pole_complex (T X, T Y, T S, T A, T C)
{
vcmul(y, s, a);
vcadd2(y, x);
s[0] = y[0];
s[1] = y[1];
vcmul(y, s, c);
}
/* complex conj two pole: (output = s[0] : (Re(C) - Re(C*Conj(A))) / (1 - A z^(-1)) (1 - Conj(A) z^(-1)) */
P two_pole_complex_conj (T X, T Y, T S, T A, T C)
{
vcmul2(s, a);
s[0] += x[0];
y[0] = s[0] * c[0] - s[1] * c[1];
}
/* support functions for IIR filter design */
/* evaluate pole and allzero TF in z^-1 given the complex zeros/poles:
p(z) (or p(z)^-1) = \product (1-z_i z^-1) */
PP eval_zero_poly(float *val, float *arg, float *zeros, int nb_zeros)
{
int i;
float a[2] = {arg[0], arg[1]};
vcinv1(a);
val[0] = 1.0f;
val[1] = 0.0f;
a[0] *= -1;
a[1] *= -1;
for (i=0; i<nb_zeros; i++){
float t[2];
vcmul(t, a, zeros + 2*i);
t[0] += 1.0f;
vcmul2(val, t);
}
}
PP eval_pole_poly(float *val, float *arg, float *poles, int nb_poles)
{
eval_zero_poly(val, arg, poles, nb_poles);
vcinv1(val);
}
/* since it's more efficient to store half of the poles for a real impulse
response, these functions compute p(z) conj(p(conj(z))) */
PP eval_conj_zero_poly(float *val, float *arg, float *zeros, int nb_zeros)
{
float t[2];
float a[2] = {arg[0], arg[1]};
eval_zero_poly(t, a, zeros, nb_zeros);
a[1] *= -1;
eval_zero_poly(val, a, zeros, nb_zeros);
val[1] *= -1;
vcmul2(val, t);
}
PP eval_conj_pole_poly(float *val, float *arg, float *poles, int nb_poles)
{
eval_conj_zero_poly(val, arg, poles, nb_poles);
vcinv1(val);
}
PP eval_conj_pole_zero_ratfunc(float *val, float *arg, float *poles, float *zeros, int nb_poles, int nb_zeros)
{
float t[2];
eval_conj_zero_poly(t, arg, zeros, nb_zeros);
eval_conj_pole_poly(val, arg, poles, nb_zeros);
vcmul2(val, t);
}
/* bandlimited IIR impulse:
* design analog butterworth filter
* obtain the partial fraction expansion of the transfer function
* determine the state increment as a function of fractional delay of impulse location
(sample the impulse response)
*/
#endif /* CREB_FILTERS_H */
Index: permut.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/permut.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** permut.c 31 Dec 2005 19:31:09 -0000 1.4
--- permut.c 25 May 2006 16:03:20 -0000 1.5
***************
*** 22,26 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
#include <stdlib.h>
--- 22,26 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
#include <stdlib.h>
Index: ead.c
===================================================================
RCS file: /cvsroot/pure-data/externals/creb/modules/ead.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ead.c 12 Apr 2005 06:22:12 -0000 1.4
--- ead.c 25 May 2006 16:03:20 -0000 1.5
***************
*** 20,24 ****
#include <m_pd.h>
#include <math.h>
! #include "../include/extlib_util.h"
/* pointer to */
--- 20,24 ----
#include <m_pd.h>
#include <math.h>
! #include "extlib_util.h"
/* pointer to */
- Previous message: [PD-cvs] externals/hcs square~.pd,NONE,1.1
- Next message: [PD-cvs] externals/creb/modules abs~.c, NONE, 1.1 bdiag~.c, NONE, 1.1 bfft~.c, NONE, 1.1 bitsplit~.c, NONE, 1.1 blocknorm~.c, NONE, 1.1 cheby~.c, NONE, 1.1 cmath~.c, NONE, 1.1 diag~.c, NONE, 1.1 dist~.c, NONE, 1.1 dwt~.c, NONE, 1.1 dynwav~.c, NONE, 1.1 eadsr~.c, NONE, 1.1 ead~.c, NONE, 1.1 ear~.c, NONE, 1.1 eblosc~.c, NONE, 1.1 fdn~.c, NONE, 1.1 junction~.c, NONE, 1.1 lattice~.c, NONE, 1.1 matrix~.c, NONE, 1.1 permut~.c, NONE, 1.1 qmult~.c, NONE, 1.1 qnorm~.c, NONE, 1.1 ramp~.c, NONE, 1.1 resofilt~.c, NONE, 1.1 sbosc~.c, NONE, 1.1 scrollgrid1D~.c, NONE, 1.1 statwav~.c, NONE, 1.1 tabreadmix~.c, NONE, 1.1 window~.c, NONE, 1.1 xfm~.c, NONE, 1.1 abs.c, 1.2, NONE bdiag.c, 1.5, NONE bfft.c, 1.2, NONE bitsplit.c, 1.1, NONE blocknorm.c, 1.1, NONE cheby.c, 1.2, NONE cmath.c, 1.1, NONE diag.c, 1.5, NONE dist.c, 1.3, NONE dwt.c, 1.2, NONE dynwav.c, 1.2, NONE ead.c, 1.5, NONE eadsr.c, 1.5, NONE ear.c, 1.5, NONE eblosc.c, 1.1, NONE fdn.c, 1.6, NONE junction.c, 1.1, NONE lattice.c, 1.2, NONE matrix.c, 1.2, NONE permut.c, 1.5, NONE qmult.c, 1.1.1.1, NONE qnorm.c, 1.1.1.1, NONE ramp.c, 1.2, NONE resofilt.c, 1.1, NONE sbosc.c, 1.1, NONE scrollgrid1D.c, 1.1, NONE statwav.c, 1.2, NONE tabreadmix.c, 1.3, NONE window.c, 1.1, NONE xfm.c, 1.1.1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Pd-cvs
mailing list