From f401bb9d53a662e2e78639d0d07f0d8e82e3bf7a Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 13 Dec 2010 02:53:10 +0000 Subject: refactored d_delay.c into delwrite~.h delwrite~.c delread~.c vd~.c svn path=/trunk/; revision=14612 --- externals/vanilla/delwrite~.h | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 externals/vanilla/delwrite~.h (limited to 'externals/vanilla/delwrite~.h') diff --git a/externals/vanilla/delwrite~.h b/externals/vanilla/delwrite~.h new file mode 100644 index 00000000..260e2c35 --- /dev/null +++ b/externals/vanilla/delwrite~.h @@ -0,0 +1,45 @@ + +typedef struct delwritectl +{ + int c_n; + t_sample *c_vec; + int c_phase; +} t_delwritectl; + +typedef struct _sigdelwrite +{ + t_object x_obj; + t_symbol *x_sym; + t_delwritectl x_cspace; + int x_sortno; /* DSP sort number at which this was last put on chain */ + int x_rsortno; /* DSP sort # for first delread or write in chain */ + int x_vecsize; /* vector size for delread~ to use */ + t_float x_f; +} t_sigdelwrite; + +static t_class *sigdelwrite_class; + +extern int ugen_getsortno(void); + +#define DEFDELVS 64 /* LATER get this from canvas at DSP time */ + +#define XTRASAMPS 4 +#define SAMPBLK 4 + + /* routine to check that all delwrites/delreads/vds have same vecsize */ +static void sigdelwrite_checkvecsize(t_sigdelwrite *x, int vecsize) +{ + if (x->x_rsortno != ugen_getsortno()) + { + x->x_vecsize = vecsize; + x->x_rsortno = ugen_getsortno(); + } + /* + LATER this should really check sample rate and blocking, once that is + supported. Probably we don't actually care about vecsize. + For now just suppress this check. */ +#if 0 + else if (vecsize != x->x_vecsize) + pd_error(x, "delread/delwrite/vd vector size mismatch"); +#endif +} -- cgit v1.2.1