aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tab/tabosc4aa~-help.pd233
-rw-r--r--tab/tabosc4aa~.c256
-rw-r--r--tab/tabosc4cloop~-help.pd78
-rw-r--r--tab/tabosc4cloop~.c240
-rw-r--r--tab/tabosc4h~-help.pd110
-rw-r--r--tab/tabosc4h~.c270
-rw-r--r--tab/tabread4h~-help.pd33
-rw-r--r--tab/tabread6c~-help.pd56
-rw-r--r--tab/tabread6c~.c192
9 files changed, 0 insertions, 1468 deletions
diff --git a/tab/tabosc4aa~-help.pd b/tab/tabosc4aa~-help.pd
deleted file mode 100644
index 1b5d0c9..0000000
--- a/tab/tabosc4aa~-help.pd
+++ /dev/null
@@ -1,233 +0,0 @@
-#N canvas 635 121 774 681 12;
-#X floatatom 41 42 9 0 0 0 - - -;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array array99 11 float 0;
-#X coords 0 1 10 -1 250 200 1;
-#X restore 436 180 graph;
-#X obj 437 48 loadbang;
-#X floatatom 41 -1 5 0 135 0 - - -;
-#X obj 41 19 mtof;
-#X floatatom 77 307 0 0 0 0 - - -;
-#N canvas 159 26 706 447 output 0;
-#X obj 414 196 t b;
-#X obj 414 134 f;
-#X obj 414 73 inlet;
-#X text 421 36 mute;
-#X obj 414 227 f;
-#X msg 521 218 0;
-#X msg 414 104 bang;
-#X obj 414 166 moses 1;
-#X obj 521 187 t b f;
-#X obj 486 143 moses 1;
-#X obj 102 181 dbtorms;
-#X obj 486 113 r master-lvl;
-#X obj 102 52 r master-lvl;
-#X obj 414 257 s master-lvl;
-#X obj 26 222 inlet~;
-#X obj 244 50 inlet;
-#X text 244 22 level;
-#X obj 244 122 s master-lvl;
-#X msg 118 80 set \$1;
-#X obj 118 109 outlet;
-#X msg 262 78 \; pd dsp 1;
-#X obj 102 238 line~;
-#X obj 26 259 *~;
-#X obj 26 295 dac~;
-#X obj 102 210 pack 0 50;
-#X text 24 195 audio;
-#X text 114 135 show level;
-#X connect 0 0 4 0;
-#X connect 1 0 7 0;
-#X connect 2 0 6 0;
-#X connect 4 0 13 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 0;
-#X connect 7 0 0 0;
-#X connect 7 1 8 0;
-#X connect 8 0 5 0;
-#X connect 9 1 4 1;
-#X connect 10 0 24 0;
-#X connect 11 0 1 1;
-#X connect 11 0 9 0;
-#X connect 12 0 10 0;
-#X connect 12 0 18 0;
-#X connect 14 0 22 0;
-#X connect 15 0 17 0;
-#X connect 15 0 20 0;
-#X connect 18 0 19 0;
-#X connect 21 0 22 1;
-#X connect 22 0 23 0;
-#X connect 22 0 23 1;
-#X connect 24 0 21 0;
-#X restore 43 333 pd output;
-#X msg 113 307 MUTE;
-#X obj 179 230 *~;
-#X msg 356 42 \$1 30;
-#X obj 359 19 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 12700 1;
-#X obj 357 89 -~ 1;
-#X obj 356 113 *~ -1;
-#X obj 356 66 line~;
-#X obj 43 231 *~;
-#X msg 294 67 0;
-#X msg 437 75 \; array99 resize 11 \; array99 0 0 0 -0.5 -0.5 1 -1
-0.5 -1 0 0 0 \; pd dsp 1 \;;
-#X text 40 395 tabosc4c~ is a drop in remplacement for tabosc4~ \,
-but offer a 4 points cubic interpolation with tengent continuity. So
-\, in some case \, quality is better than the standart interpolation
-;
-#X obj 179 122 tabosc4~ array99;
-#X obj 157 498 oscillo~;
-#X text 279 17 tabosc4~;
-#X text 498 18 tabosc4aa~;
-#N canvas 607 39 645 763 osc~ 0;
-#X obj 12 133 pack~;
-#X obj 14 7 inlet~;
-#X text 269 6 change block size;
-#X msg 77 379 0;
-#X obj 47 403 f;
-#X obj 63 428 + 1;
-#X obj 17 379 t a b;
-#X obj 16 245 gemhead;
-#X text 72 7 audio input;
-#X obj 13 29 rfft~;
-#X obj 13 51 *~;
-#X obj 53 53 *~;
-#X obj 173 6 block~ 4096 4;
-#X obj 12 75 /~ 4096;
-#X obj 12 95 log~;
-#X obj 12 114 *~ 0.05;
-#X obj 12 152 list prepend 0;
-#X obj 12 173 s \$0-fft;
-#X obj 172 26 table \$0-fft 2048;
-#X obj 172 46 table \$0-fft-lop 2048;
-#X obj 401 13 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 401 31 t b b;
-#X obj 400 71 until;
-#X msg 401 52 2048;
-#X msg 443 74 0;
-#X obj 400 96 f;
-#X obj 415 119 + 1;
-#X obj 400 163 tabread \$0-fft;
-#X obj 494 163 tabread \$0-fft-lop;
-#X obj 400 213 +;
-#X obj 400 256 tabwrite \$0-fft-lop;
-#X obj 400 138 t f f f;
-#X obj 424 7 bang~;
-#X obj 400 235 / 8;
-#X obj 495 187 * 7;
-#X obj 77 494 tabread \$0-fft-lop;
-#X obj 30 589 loadbang;
-#X obj 47 451 t f f;
-#X obj 98 591 l;
-#X msg 30 611 res 3;
-#X obj 22 224 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 97 560 t l b;
-#X obj 18 659 curve 2;
-#X obj 46 519 pack f f f;
-#X floatatom 36 296 5 0 0 0 - - -;
-#X floatatom 78 297 5 0 0 0 - - -;
-#X obj 17 334 t a b;
-#X floatatom 72 250 5 0 0 0 - - -;
-#X floatatom 114 251 5 0 0 0 - - -;
-#X obj 17 358 repeat 2048;
-#X obj 14 277 translateXYZ -4 0 0;
-#X obj 47 471 log;
-#X obj 17 314 scaleXYZ 1.04 6 0;
-#X connect 0 0 16 0;
-#X connect 1 0 9 0;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 4 0 37 0;
-#X connect 5 0 4 1;
-#X connect 6 0 42 0;
-#X connect 6 1 4 0;
-#X connect 7 0 50 0;
-#X connect 9 0 10 0;
-#X connect 9 0 10 1;
-#X connect 9 1 11 0;
-#X connect 9 1 11 1;
-#X connect 10 0 13 0;
-#X connect 11 0 13 0;
-#X connect 13 0 14 0;
-#X connect 14 0 15 0;
-#X connect 15 0 0 0;
-#X connect 16 0 17 0;
-#X connect 20 0 21 0;
-#X connect 21 0 23 0;
-#X connect 21 1 24 0;
-#X connect 22 0 25 0;
-#X connect 23 0 22 0;
-#X connect 24 0 25 1;
-#X connect 25 0 26 0;
-#X connect 25 0 31 0;
-#X connect 26 0 25 1;
-#X connect 27 0 29 0;
-#X connect 28 0 34 0;
-#X connect 29 0 33 0;
-#X connect 31 0 27 0;
-#X connect 31 1 28 0;
-#X connect 31 2 30 1;
-#X connect 32 0 21 0;
-#X connect 33 0 30 0;
-#X connect 34 0 29 1;
-#X connect 35 0 43 1;
-#X connect 36 0 39 0;
-#X connect 37 0 51 0;
-#X connect 37 1 35 0;
-#X connect 38 0 42 2;
-#X connect 39 0 42 0;
-#X connect 40 0 7 0;
-#X connect 41 0 38 1;
-#X connect 41 1 38 0;
-#X connect 43 0 41 0;
-#X connect 43 0 42 1;
-#X connect 44 0 52 1;
-#X connect 45 0 52 2;
-#X connect 46 0 49 0;
-#X connect 46 1 3 0;
-#X connect 47 0 50 1;
-#X connect 48 0 50 2;
-#X connect 49 0 6 0;
-#X connect 50 0 52 0;
-#X connect 51 0 43 0;
-#X connect 52 0 46 0;
-#X restore 205 288 pd osc~;
-#X msg 305 230 reset \, create \, 1;
-#X msg 311 252 0 \, destroy;
-#X msg 41 60 \$1 100;
-#X obj 41 83 line~;
-#X obj 42 123 tabosc4aa~ array99;
-#X obj 305 274 gemwin 20;
-#X floatatom 106 4 5 0 0 0 - - -;
-#X connect 0 0 25 0;
-#X connect 2 0 16 0;
-#X connect 3 0 4 0;
-#X connect 4 0 0 0;
-#X connect 5 0 6 1;
-#X connect 6 0 5 0;
-#X connect 7 0 6 2;
-#X connect 8 0 6 0;
-#X connect 8 0 19 0;
-#X connect 8 0 22 0;
-#X connect 9 0 13 0;
-#X connect 10 0 9 0;
-#X connect 11 0 12 0;
-#X connect 12 0 8 1;
-#X connect 13 0 11 0;
-#X connect 13 0 14 1;
-#X connect 14 0 6 0;
-#X connect 14 0 19 0;
-#X connect 14 0 22 0;
-#X connect 15 0 18 1;
-#X connect 15 0 27 1;
-#X connect 18 0 8 0;
-#X connect 23 0 28 0;
-#X connect 24 0 28 0;
-#X connect 25 0 26 0;
-#X connect 26 0 18 0;
-#X connect 26 0 27 0;
-#X connect 27 0 14 0;
-#X connect 29 0 4 0;
diff --git a/tab/tabosc4aa~.c b/tab/tabosc4aa~.c
deleted file mode 100644
index fece19f..0000000
--- a/tab/tabosc4aa~.c
+++ /dev/null
@@ -1,256 +0,0 @@
-// tabosc4aa~
-// can replace with tabosc4~
-// most of this code comes from pd. just the interpolation shematic is diferent.
-
-/*
-This software is copyrighted by Miller Puckette and others. The following
-terms (the "Standard Improved BSD License") apply to all files associated with
-the software unless explicitly disclaimed in individual files:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Cyrille Henry 06 2008
-
-
-#include "m_pd.h"
-
-/******************** tabosc4aa~ ***********************/
-
-/* this is all copied from d_osc.c... what include file could this go in? */
-#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */
-
- /* machine-dependent definitions. These ifdefs really
- should have been by CPU type and not by operating system! */
-#ifdef IRIX
- /* big-endian. Most significant byte is at low address in memory */
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#define int32 long /* a data type that has 32 bits */
-#endif /* IRIX */
-
-#ifdef MSW
- /* little-endian; most significant byte is at highest address */
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#define int32 long
-#endif
-
-#if defined(__FreeBSD__) || defined(__APPLE__)
-#include <machine/endian.h>
-#endif
-
-#ifdef __linux__
-#include <endian.h>
-#endif
-
-#if defined(__unix__) || defined(__APPLE__)
-#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN)
-#error No byte order defined
-#endif
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#else
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#endif /* __BYTE_ORDER */
-#include <sys/types.h>
-#define int32 int32_t
-#endif /* __unix__ or __APPLE__*/
-
-union tabfudge
-{
- double tf_d;
- int32 tf_i[2];
-};
-
-static t_class *tabosc4aa_tilde_class;
-
-typedef struct _tabosc4aa_tilde
-{
- t_object x_obj;
- t_float x_fnpoints;
- t_float x_finvnpoints;
- t_word *x_vec;
- t_symbol *x_arrayname;
- t_float x_f;
- double x_phase;
- t_float x_conv;
- t_sample x_prev_in, x_last_in, x_prev_out, x_last_out;
-} t_tabosc4aa_tilde;
-
-static void *tabosc4aa_tilde_new(t_symbol *s)
-{
- t_tabosc4aa_tilde *x = (t_tabosc4aa_tilde *)pd_new(tabosc4aa_tilde_class);
- x->x_arrayname = s;
- x->x_vec = 0;
- x->x_fnpoints = 512.;
- x->x_finvnpoints = (1./512.);
- outlet_new(&x->x_obj, gensym("signal"));
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1"));
- x->x_f = 0;
- return (x);
-}
-
-static t_int *tabosc4aa_tilde_perform(t_int *w)
-{
- t_tabosc4aa_tilde *x = (t_tabosc4aa_tilde *)(w[1]);
- t_sample *in = (t_sample *)(w[2]);
- t_sample *out = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- int normhipart;
- union tabfudge tf;
- double a1,a2,a3; // CH
- t_float fnpoints = x->x_fnpoints;
- int mask = fnpoints - 1;
- t_float conv = fnpoints * x->x_conv;
- int maxindex;
- t_word *tab = x->x_vec, *addr;
- int i;
- double dphase = fnpoints * x->x_phase + UNITBIT32;
-
- if (!tab) goto zero;
- tf.tf_d = UNITBIT32;
- normhipart = tf.tf_i[HIOFFSET];
-
-#if 1
- while (n--)
- {
- t_sample frac, a, b, c, d, cminusb, temp, sum, filter_out;
-
- sum = 0;
- for (i=0;i<4;i++)
- {
- tf.tf_d = dphase;
- dphase += *in/4 * conv;
- addr = tab + (tf.tf_i[HIOFFSET] & mask);
- tf.tf_i[HIOFFSET] = normhipart;
- frac = tf.tf_d - UNITBIT32;
- a = addr[0].w_float;
- b = addr[1].w_float;
- c = addr[2].w_float;
- d = addr[3].w_float;
-
- // 4-point, 3rd-order Hermite (x-form)
- a1 = 0.5f * (c - a);
- a2 = a - 2.5 * b + 2.f * c - 0.5f * d;
- a3 = 0.5f * (d - a) + 1.5f * (b - c);
-
- temp = ((a3 * frac + a2) * frac + a1) * frac + b;
-
-// temp = cut_filter(x, temp);
-// t_sample filter_out;
-
- filter_out = 0.0603297 * temp + 0.120659 * x->x_last_in + 0.0603297 * x->x_prev_in + 1.1565 * x->x_last_out - 0.397817 * x->x_prev_out;
-
- x->x_prev_in = x->x_last_in;
- x->x_last_in = temp;
- x->x_prev_out = x->x_last_out;
- x->x_last_out = filter_out;
- sum += filter_out;
-
- }
- *out++ = sum/4;
- *in++;
- }
-#endif
-
- tf.tf_d = UNITBIT32 * fnpoints;
- normhipart = tf.tf_i[HIOFFSET];
- tf.tf_d = dphase + (UNITBIT32 * fnpoints - UNITBIT32);
- tf.tf_i[HIOFFSET] = normhipart;
- x->x_phase = (tf.tf_d - UNITBIT32 * fnpoints) * x->x_finvnpoints;
- return (w+5);
- zero:
- while (n--) *out++ = 0;
-
- return (w+5);
-}
-
-void tabosc4aa_tilde_set(t_tabosc4aa_tilde *x, t_symbol *s)
-{
- t_garray *a;
- int npoints, pointsinarray;
-
- x->x_arrayname = s;
- if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
- {
- if (*s->s_name)
- pd_error(x, "tabosc4aa~: %s: no such array", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if (!garray_getfloatwords(a, &pointsinarray, &x->x_vec))
- {
- pd_error(x, "%s: bad template for tabosc4aa~", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if ((npoints = pointsinarray - 3) != (1 << ilog2(pointsinarray - 3)))
- {
- pd_error(x, "%s: number of points (%d) not a power of 2 plus three",
- x->x_arrayname->s_name, pointsinarray);
- x->x_vec = 0;
- garray_usedindsp(a);
- }
- else
- {
- x->x_fnpoints = npoints;
- x->x_finvnpoints = 1./npoints;
- garray_usedindsp(a);
- }
-}
-
-static void tabosc4aa_tilde_ft1(t_tabosc4aa_tilde *x, t_float f)
-{
- x->x_phase = f;
-}
-
-static void tabosc4aa_tilde_dsp(t_tabosc4aa_tilde *x, t_signal **sp)
-{
- x->x_conv = 1. / sp[0]->s_sr;
- tabosc4aa_tilde_set(x, x->x_arrayname);
-
- dsp_add(tabosc4aa_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
-
-void tabosc4aa_tilde_setup(void)
-{
- tabosc4aa_tilde_class = class_new(gensym("tabosc4aa~"),
- (t_newmethod)tabosc4aa_tilde_new, 0,
- sizeof(t_tabosc4aa_tilde), 0, A_DEFSYM, 0);
- CLASS_MAINSIGNALIN(tabosc4aa_tilde_class, t_tabosc4aa_tilde, x_f);
- class_addmethod(tabosc4aa_tilde_class, (t_method)tabosc4aa_tilde_dsp,
- gensym("dsp"), 0);
- class_addmethod(tabosc4aa_tilde_class, (t_method)tabosc4aa_tilde_set,
- gensym("set"), A_SYMBOL, 0);
- class_addmethod(tabosc4aa_tilde_class, (t_method)tabosc4aa_tilde_ft1,
- gensym("ft1"), A_FLOAT, 0);
-}
-
diff --git a/tab/tabosc4cloop~-help.pd b/tab/tabosc4cloop~-help.pd
deleted file mode 100644
index 6fdc98b..0000000
--- a/tab/tabosc4cloop~-help.pd
+++ /dev/null
@@ -1,78 +0,0 @@
-#N canvas 366 99 606 399 12;
-#X floatatom 40 42 9 0 0 0 - - -;
-#X obj 40 63 sig~ 100;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array array99 8 float 0;
-#X coords 0 1 7 -1 250 200 1;
-#X restore 250 120 graph;
-#X obj 251 14 loadbang;
-#X floatatom 40 -1 5 0 0 0 - - -;
-#X obj 40 19 mtof;
-#X floatatom 74 124 0 0 0 0 - - -;
-#N canvas 159 26 706 447 output 0;
-#X obj 414 196 t b;
-#X obj 414 134 f;
-#X obj 414 73 inlet;
-#X text 421 36 mute;
-#X obj 414 227 f;
-#X msg 521 218 0;
-#X msg 414 104 bang;
-#X obj 414 166 moses 1;
-#X obj 521 187 t b f;
-#X obj 486 143 moses 1;
-#X obj 102 181 dbtorms;
-#X obj 486 113 r master-lvl;
-#X obj 102 52 r master-lvl;
-#X obj 414 257 s master-lvl;
-#X obj 26 222 inlet~;
-#X obj 244 50 inlet;
-#X text 244 22 level;
-#X obj 244 122 s master-lvl;
-#X msg 118 80 set \$1;
-#X obj 118 109 outlet;
-#X msg 262 78 \; pd dsp 1;
-#X obj 102 238 line~;
-#X obj 26 259 *~;
-#X obj 26 295 dac~;
-#X obj 102 210 pack 0 50;
-#X text 24 195 audio;
-#X text 114 135 show level;
-#X connect 0 0 4 0;
-#X connect 1 0 7 0;
-#X connect 2 0 6 0;
-#X connect 4 0 13 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 0;
-#X connect 7 0 0 0;
-#X connect 7 1 8 0;
-#X connect 8 0 5 0;
-#X connect 9 1 4 1;
-#X connect 10 0 24 0;
-#X connect 11 0 1 1;
-#X connect 11 0 9 0;
-#X connect 12 0 10 0;
-#X connect 12 0 18 0;
-#X connect 14 0 22 0;
-#X connect 15 0 17 0;
-#X connect 15 0 20 0;
-#X connect 18 0 19 0;
-#X connect 21 0 22 1;
-#X connect 22 0 23 0;
-#X connect 22 0 23 1;
-#X connect 24 0 21 0;
-#X restore 40 150 pd output;
-#X msg 110 124 MUTE;
-#X obj 41 92 tabosc4cloop~ array99;
-#X msg 251 39 \; array99 resize 8 \; array99 0 0 0 -0.5 -0.5 1 -1 0.5
-0.5 \; pd dsp 1 \;;
-#X text 42 345 just like tabosc4c~ \, but does not need to copy the
-first 3 point in the end. So \, table must be a power of 2;
-#X connect 0 0 1 0;
-#X connect 1 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 5 0;
-#X connect 5 0 0 0;
-#X connect 6 0 7 1;
-#X connect 7 0 6 0;
-#X connect 8 0 7 2;
-#X connect 9 0 7 0;
diff --git a/tab/tabosc4cloop~.c b/tab/tabosc4cloop~.c
deleted file mode 100644
index 5e9f9da..0000000
--- a/tab/tabosc4cloop~.c
+++ /dev/null
@@ -1,240 +0,0 @@
-// tabosc4cloop~
-// most of this code comes from pd. just the interpolation shematic is diferent.
-// and the modulo for the position is made for all sample, so you don't need to copy the first 3 points in the end of the table for a smoth loop
-
-/*
-This software is copyrighted by Miller Puckette and others. The following
-terms (the "Standard Improved BSD License") apply to all files associated with
-the software unless explicitly disclaimed in individual files:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Cyrille Henry 06 2008
-
-
-#include "m_pd.h"
-
-/******************** tabosc4cloop~ ***********************/
-
-/* this is all copied from d_osc.c... what include file could this go in? */
-#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */
-
- /* machine-dependent definitions. These ifdefs really
- should have been by CPU type and not by operating system! */
-#ifdef IRIX
- /* big-endian. Most significant byte is at low address in memory */
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#define int32 long /* a data type that has 32 bits */
-#endif /* IRIX */
-
-#ifdef MSW
- /* little-endian; most significant byte is at highest address */
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#define int32 long
-#endif
-
-#if defined(__FreeBSD__) || defined(__APPLE__)
-#include <machine/endian.h>
-#endif
-
-#ifdef __linux__
-#include <endian.h>
-#endif
-
-#if defined(__unix__) || defined(__APPLE__)
-#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN)
-#error No byte order defined
-#endif
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#else
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#endif /* __BYTE_ORDER */
-#include <sys/types.h>
-#define int32 int32_t
-#endif /* __unix__ or __APPLE__*/
-
-union tabfudge
-{
- double tf_d;
- int32 tf_i[2];
-};
-
-static t_class *tabosc4cloop_tilde_class;
-
-typedef struct _tabosc4cloop_tilde
-{
- t_object x_obj;
- t_float x_fnpoints;
- t_float x_finvnpoints;
- t_word *x_vec;
- t_symbol *x_arrayname;
- t_float x_f;
- double x_phase;
- t_float x_conv;
-} t_tabosc4cloop_tilde;
-
-static void *tabosc4cloop_tilde_new(t_symbol *s)
-{
- t_tabosc4cloop_tilde *x = (t_tabosc4cloop_tilde *)pd_new(tabosc4cloop_tilde_class);
- x->x_arrayname = s;
- x->x_vec = 0;
- x->x_fnpoints = 512.;
- x->x_finvnpoints = (1./512.);
- outlet_new(&x->x_obj, gensym("signal"));
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1"));
- x->x_f = 0;
- return (x);
-}
-
-static t_int *tabosc4cloop_tilde_perform(t_int *w)
-{
- t_tabosc4cloop_tilde *x = (t_tabosc4cloop_tilde *)(w[1]);
- t_sample *in = (t_sample *)(w[2]);
- t_sample *out = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- int normhipart;
- union tabfudge tf;
- double a0,a1,a2,a3; // CH
- t_float fnpoints = x->x_fnpoints;
- int mask = fnpoints -1;
- t_float conv = fnpoints * x->x_conv;
- int maxindex;
- t_word *tab = x->x_vec, *addr;
- int i;
- double dphase = fnpoints * x->x_phase + UNITBIT32;
-
- if (!tab) goto zero;
- tf.tf_d = UNITBIT32;
- normhipart = tf.tf_i[HIOFFSET];
-
-#if 1
- while (n--)
- {
- t_sample frac, a, b, c, d, cminusb;
- tf.tf_d = dphase;
- dphase += *in++ * conv;
- addr = tab + (tf.tf_i[HIOFFSET] & mask);
-// thx to dh
- a = addr[0].w_float;
- addr = tab + ((1+tf.tf_i[HIOFFSET]) & mask);
- b = addr[0].w_float;
- addr = tab + ((2+tf.tf_i[HIOFFSET]) & mask);
- c = addr[0].w_float;
- addr = tab + ((3+tf.tf_i[HIOFFSET]) & mask);
- d = addr[0].w_float;
- tf.tf_i[HIOFFSET] = normhipart;
- frac = tf.tf_d - UNITBIT32;
-// CH
- a0 = d - c - a + b;
- a1 = a - b - a0;
- a2 = c - a;
- a3 = b;
- *out++ = ((a0*frac+a1)*frac+a2)*frac+a3;
-
- }
-#endif
-
- tf.tf_d = UNITBIT32 * fnpoints;
- normhipart = tf.tf_i[HIOFFSET];
- tf.tf_d = dphase + (UNITBIT32 * fnpoints - UNITBIT32);
- tf.tf_i[HIOFFSET] = normhipart;
- x->x_phase = (tf.tf_d - UNITBIT32 * fnpoints) * x->x_finvnpoints;
- return (w+5);
- zero:
- while (n--) *out++ = 0;
-
- return (w+5);
-}
-
-void tabosc4cloop_tilde_set(t_tabosc4cloop_tilde *x, t_symbol *s)
-{
- t_garray *a;
- int npoints, pointsinarray;
-
- x->x_arrayname = s;
- if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
- {
- if (*s->s_name)
- pd_error(x, "tabosc4cloop~: %s: no such array", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if (!garray_getfloatwords(a, &pointsinarray, &x->x_vec))
- {
- pd_error(x, "%s: bad template for tabosc4cloop~", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if (pointsinarray != (1 << ilog2(pointsinarray)))
- {
- pd_error(x, "%s: number of points (%d) not a power of 2",
- x->x_arrayname->s_name, pointsinarray);
- x->x_vec = 0;
- garray_usedindsp(a);
- }
- else
- {
- x->x_fnpoints = pointsinarray;
- x->x_finvnpoints = 1./pointsinarray;
- garray_usedindsp(a);
- }
-}
-
-static void tabosc4cloop_tilde_ft1(t_tabosc4cloop_tilde *x, t_float f)
-{
- x->x_phase = f;
-}
-
-static void tabosc4cloop_tilde_dsp(t_tabosc4cloop_tilde *x, t_signal **sp)
-{
- x->x_conv = 1. / sp[0]->s_sr;
- tabosc4cloop_tilde_set(x, x->x_arrayname);
-
- dsp_add(tabosc4cloop_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
-
-void tabosc4cloop_tilde_setup(void)
-{
- tabosc4cloop_tilde_class = class_new(gensym("tabosc4cloop~"),
- (t_newmethod)tabosc4cloop_tilde_new, 0,
- sizeof(t_tabosc4cloop_tilde), 0, A_DEFSYM, 0);
- CLASS_MAINSIGNALIN(tabosc4cloop_tilde_class, t_tabosc4cloop_tilde, x_f);
- class_addmethod(tabosc4cloop_tilde_class, (t_method)tabosc4cloop_tilde_dsp,
- gensym("dsp"), 0);
- class_addmethod(tabosc4cloop_tilde_class, (t_method)tabosc4cloop_tilde_set,
- gensym("set"), A_SYMBOL, 0);
- class_addmethod(tabosc4cloop_tilde_class, (t_method)tabosc4cloop_tilde_ft1,
- gensym("ft1"), A_FLOAT, 0);
-}
-
diff --git a/tab/tabosc4h~-help.pd b/tab/tabosc4h~-help.pd
deleted file mode 100644
index 4ba7e2a..0000000
--- a/tab/tabosc4h~-help.pd
+++ /dev/null
@@ -1,110 +0,0 @@
-#N canvas 398 81 891 660 12;
-#X floatatom 40 43 9 0 0 0 - - -;
-#X obj 40 63 sig~ 100;
-#X text 116 41 signal input for frequency (Hz.);
-#X obj 78 127 oscillo~;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array array99 11 float 0;
-#X coords 0 1 10 -1 250 200 1;
-#X restore 522 197 graph;
-#X obj 511 40 loadbang;
-#X floatatom 40 0 5 0 0 0 - - -;
-#X obj 40 21 mtof;
-#X floatatom 85 592 0 0 0 0 - - -;
-#N canvas 159 26 706 447 output 0;
-#X obj 414 196 t b;
-#X obj 414 134 f;
-#X obj 414 73 inlet;
-#X text 421 36 mute;
-#X obj 414 227 f;
-#X msg 521 218 0;
-#X msg 414 104 bang;
-#X obj 414 166 moses 1;
-#X obj 521 187 t b f;
-#X obj 486 143 moses 1;
-#X obj 102 181 dbtorms;
-#X obj 486 113 r master-lvl;
-#X obj 102 52 r master-lvl;
-#X obj 414 257 s master-lvl;
-#X obj 26 222 inlet~;
-#X obj 244 50 inlet;
-#X text 244 22 level;
-#X obj 244 122 s master-lvl;
-#X msg 118 80 set \$1;
-#X obj 118 109 outlet;
-#X msg 262 78 \; pd dsp 1;
-#X obj 102 238 line~;
-#X obj 26 259 *~;
-#X obj 26 295 dac~;
-#X obj 102 210 pack 0 50;
-#X text 24 195 audio;
-#X text 114 135 show level;
-#X connect 0 0 4 0;
-#X connect 1 0 7 0;
-#X connect 2 0 6 0;
-#X connect 4 0 13 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 0;
-#X connect 7 0 0 0;
-#X connect 7 1 8 0;
-#X connect 8 0 5 0;
-#X connect 9 1 4 1;
-#X connect 10 0 24 0;
-#X connect 11 0 1 1;
-#X connect 11 0 9 0;
-#X connect 12 0 10 0;
-#X connect 12 0 18 0;
-#X connect 14 0 22 0;
-#X connect 15 0 17 0;
-#X connect 15 0 20 0;
-#X connect 18 0 19 0;
-#X connect 21 0 22 1;
-#X connect 22 0 23 0;
-#X connect 22 0 23 1;
-#X connect 24 0 21 0;
-#X restore 51 618 pd output;
-#X msg 121 592 MUTE;
-#X obj 80 342 oscillo~;
-#X obj 40 564 *~;
-#X msg 116 456 \$1 30;
-#X obj 119 433 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 0 1;
-#X obj 117 503 -~ 1;
-#X obj 116 527 *~ -1;
-#X obj 116 480 line~;
-#X obj 60 511 *~;
-#X msg 190 67 0;
-#X msg 514 74 \; array99 resize 11 \; array99 0 0 0 -1 0.5 -0.5 -0.5
--0.5 0.5 1 0 0 \; pd dsp 1 \;;
-#X msg 81 273 tension \$1;
-#X floatatom 81 251 5 0 0 0 - - -;
-#X obj 62 94 tabosc4~ array99;
-#X obj 41 303 tabosc4h~ array99;
-#X text 172 272 with tension = -1 \, tabosc4h~ is like tabosc4c~;
-#X text 174 256 -1 < tension < 1;
-#X text 300 598 tabosc4h~ is a drop in remplacement for tabosc4~;
-#X connect 0 0 1 0;
-#X connect 1 0 23 0;
-#X connect 1 0 24 0;
-#X connect 5 0 20 0;
-#X connect 6 0 7 0;
-#X connect 7 0 0 0;
-#X connect 8 0 9 1;
-#X connect 9 0 8 0;
-#X connect 10 0 9 2;
-#X connect 12 0 9 0;
-#X connect 13 0 17 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 16 0 12 1;
-#X connect 17 0 15 0;
-#X connect 17 0 18 1;
-#X connect 18 0 9 0;
-#X connect 19 0 23 1;
-#X connect 19 0 24 1;
-#X connect 21 0 24 0;
-#X connect 22 0 21 0;
-#X connect 23 0 3 0;
-#X connect 23 0 18 0;
-#X connect 24 0 11 0;
-#X connect 24 0 12 0;
diff --git a/tab/tabosc4h~.c b/tab/tabosc4h~.c
deleted file mode 100644
index e4593db..0000000
--- a/tab/tabosc4h~.c
+++ /dev/null
@@ -1,270 +0,0 @@
-// tabosc4h~
-// can replace with tabosc4~
-//
-// 99% comes from pd. just the interpolation shematic is diferent and comes from :
-// http://local.wasp.uwa.edu.au/~pbourke/other/interpolation/
-
-
-/*
-This software is copyrighted by Miller Puckette and others. The following
-terms (the "Standard Improved BSD License") apply to all files associated with
-the software unless explicitly disclaimed in individual files:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Cyrille Henry 06 2008
-
-
-#include "m_pd.h"
-
-/******************** tabosc4h~ ***********************/
-
-/* this is all copied from d_osc.c... what include file could this go in? */
-#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */
-
- /* machine-dependent definitions. These ifdefs really
- should have been by CPU type and not by operating system! */
-#ifdef IRIX
- /* big-endian. Most significant byte is at low address in memory */
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#define int32 long /* a data type that has 32 bits */
-#endif /* IRIX */
-
-#ifdef MSW
- /* little-endian; most significant byte is at highest address */
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#define int32 long
-#endif
-
-#if defined(__FreeBSD__) || defined(__APPLE__)
-#include <machine/endian.h>
-#endif
-
-#ifdef __linux__
-#include <endian.h>
-#endif
-
-#if defined(__unix__) || defined(__APPLE__)
-#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN)
-#error No byte order defined
-#endif
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define HIOFFSET 1
-#define LOWOFFSET 0
-#else
-#define HIOFFSET 0 /* word offset to find MSB */
-#define LOWOFFSET 1 /* word offset to find LSB */
-#endif /* __BYTE_ORDER */
-#include <sys/types.h>
-#define int32 int32_t
-#endif /* __unix__ or __APPLE__*/
-
-#ifndef min
-#define min(a, b) ((a) < (b) ? (a) : (b))
-#endif
-
-#ifndef max
-#define max(a, b) ((a) > (b) ? (a) : (b))
-#endif
-
-
-union tabfudge
-{
- double tf_d;
- int32 tf_i[2];
-};
-
-static t_class *tabosc4h_tilde_class;
-
-typedef struct _tabosc4h_tilde
-{
- t_object x_obj;
- t_float x_fnpoints;
- t_float x_finvnpoints;
- t_word *x_vec;
- t_symbol *x_arrayname;
- t_float x_f;
- double x_phase;
- t_float x_conv;
- t_float x_tension;
-} t_tabosc4h_tilde;
-
-static void *tabosc4h_tilde_new(t_symbol *s, t_floatarg tension)
-{
- t_tabosc4h_tilde *x = (t_tabosc4h_tilde *)pd_new(tabosc4h_tilde_class);
- x->x_arrayname = s;
- x->x_vec = 0;
- x->x_fnpoints = 512.;
- x->x_finvnpoints = (1./512.);
- outlet_new(&x->x_obj, gensym("signal"));
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1"));
- x->x_f = 0;
- x->x_tension = min(1,max(-1,tension));
- return (x);
-}
-
-static t_int *tabosc4h_tilde_perform(t_int *w)
-{
- t_tabosc4h_tilde *x = (t_tabosc4h_tilde *)(w[1]);
- t_sample *in = (t_sample *)(w[2]);
- t_sample *out = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- int normhipart;
- union tabfudge tf;
- double a0,a1,a2,a3; // CH
- double m0,m1,mu,mu2,mu3; // CH
- t_float fnpoints = x->x_fnpoints;
- int mask = fnpoints - 1;
- t_float conv = fnpoints * x->x_conv;
- int maxindex;
- t_word *tab = x->x_vec, *addr;
- int i;
- double dphase = fnpoints * x->x_phase + UNITBIT32;
-
- if (!tab) goto zero;
- tf.tf_d = UNITBIT32;
- normhipart = tf.tf_i[HIOFFSET];
-
-#if 1
- while (n--)
- {
- t_sample frac, a, b, c, d, cminusb;
- tf.tf_d = dphase;
- dphase += *in++ * conv;
- addr = tab + (tf.tf_i[HIOFFSET] & mask);
- tf.tf_i[HIOFFSET] = normhipart;
- frac = tf.tf_d - UNITBIT32;
- a = addr[0].w_float;
- b = addr[1].w_float;
- c = addr[2].w_float;
- d = addr[3].w_float;
- // cminusb = c-b;
- // *out++ = b + frac * (cminusb - 0.1666667f * (1.-frac) * ( (d - a - 3.0f * cminusb) * frac + (d + 2.0f*a - 3.0f*b) ) );
-// CH
- mu = frac;
- mu2 = mu * mu;
- mu3 = mu2 * mu;
-
- m0 = (b-a)*(1-x->x_tension)/2;
- m0 += (c-b)*(1-x->x_tension)/2;
- m1 = (c-b)*(1-x->x_tension)/2;
- m1 += (d-c)*(1-x->x_tension)/2;
-
- a0 = 2*mu3 - 3*mu2 + 1;
- a1 = mu3 - 2*mu2 + mu;
- a2 = mu3 - mu2;
- a3 = -2*mu3 + 3*mu2;
-
- *out++ = a0*b+a1*m0+a2*m1+a3*c;
-
- }
-#endif
-
- tf.tf_d = UNITBIT32 * fnpoints;
- normhipart = tf.tf_i[HIOFFSET];
- tf.tf_d = dphase + (UNITBIT32 * fnpoints - UNITBIT32);
- tf.tf_i[HIOFFSET] = normhipart;
- x->x_phase = (tf.tf_d - UNITBIT32 * fnpoints) * x->x_finvnpoints;
- return (w+5);
- zero:
- while (n--) *out++ = 0;
-
- return (w+5);
-}
-
-void tabosc4h_tilde_set(t_tabosc4h_tilde *x, t_symbol *s)
-{
- t_garray *a;
- int npoints, pointsinarray;
-
- x->x_arrayname = s;
- if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
- {
- if (*s->s_name)
- pd_error(x, "tabosc4h~: %s: no such array", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if (!garray_getfloatwords(a, &pointsinarray, &x->x_vec))
- {
- pd_error(x, "%s: bad template for tabosc4h~", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if ((npoints = pointsinarray - 3) != (1 << ilog2(pointsinarray - 3)))
- {
- pd_error(x, "%s: number of points (%d) not a power of 2 plus three",
- x->x_arrayname->s_name, pointsinarray);
- x->x_vec = 0;
- garray_usedindsp(a);
- }
- else
- {
- x->x_fnpoints = npoints;
- x->x_finvnpoints = 1./npoints;
- garray_usedindsp(a);
- }
-}
-
-static void tabosc4h_tilde_ft1(t_tabosc4h_tilde *x, t_float f)
-{
- x->x_phase = f;
-}
-
-static void tabosc4h_tilde_tension(t_tabosc4h_tilde *x, t_float f)
-{
- x->x_tension = min(1,max(-1,f));
-}
-
-static void tabosc4h_tilde_dsp(t_tabosc4h_tilde *x, t_signal **sp)
-{
- x->x_conv = 1. / sp[0]->s_sr;
- tabosc4h_tilde_set(x, x->x_arrayname);
-
- dsp_add(tabosc4h_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
-
-void tabosc4h_tilde_setup(void)
-{
- tabosc4h_tilde_class = class_new(gensym("tabosc4h~"),
- (t_newmethod)tabosc4h_tilde_new, 0,
- sizeof(t_tabosc4h_tilde), 0, A_DEFSYM, A_DEFFLOAT, 0);
- CLASS_MAINSIGNALIN(tabosc4h_tilde_class, t_tabosc4h_tilde, x_f);
- class_addmethod(tabosc4h_tilde_class, (t_method)tabosc4h_tilde_dsp,
- gensym("dsp"), 0);
- class_addmethod(tabosc4h_tilde_class, (t_method)tabosc4h_tilde_set,
- gensym("set"), A_SYMBOL, 0);
- class_addmethod(tabosc4h_tilde_class, (t_method)tabosc4h_tilde_ft1,
- gensym("ft1"), A_FLOAT, 0);
- class_addmethod(tabosc4h_tilde_class, (t_method)tabosc4h_tilde_tension,
- gensym("tension"), A_FLOAT, 0);
-}
-
diff --git a/tab/tabread4h~-help.pd b/tab/tabread4h~-help.pd
deleted file mode 100644
index 193a072..0000000
--- a/tab/tabread4h~-help.pd
+++ /dev/null
@@ -1,33 +0,0 @@
-#N canvas 413 327 814 475 10;
-#X text 27 173 signal input x(n);
-#X msg 727 51 \; pd dsp 0;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array array99 11 float 0;
-#X coords 0 1 10 -1 250 200 1;
-#X restore 514 173 graph;
-#X text 127 21 4-point-interpolating table lookup;
-#X msg 452 50 \; readout 1 \; array99 resize 10 \; array99 0 -0.5 -0.5
--0.5 0.5 0.5 0.5 \; pd dsp 1 \;;
-#X msg 40 144 set array99;
-#X text 122 144 "set" message permits you to switch between arrays
-;
-#X text 145 194 creation argument initializes array name;
-#X text 509 27 click here to test;
-#X text 7 58 Tabread4~ is used to build samplers and other table lookup
-algorithms. The interpolation scheme is 4-point polynomial.;
-#X text 616 460 updated for Pd version 0.29;
-#X obj 15 120 line~;
-#X obj 149 87 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 458 6 table save1 44100;
-#X obj 16 224 tabwrite~ save1;
-#X floatatom 25 31 5 0 0 0 - - -;
-#X msg 15 97 0 \, 10 1000;
-#X obj 16 194 tabread4h~ array99;
-#X connect 5 0 17 0;
-#X connect 11 0 17 0;
-#X connect 12 0 16 0;
-#X connect 12 0 14 0;
-#X connect 15 0 11 0;
-#X connect 16 0 11 0;
-#X connect 17 0 14 0;
diff --git a/tab/tabread6c~-help.pd b/tab/tabread6c~-help.pd
deleted file mode 100644
index 9867b91..0000000
--- a/tab/tabread6c~-help.pd
+++ /dev/null
@@ -1,56 +0,0 @@
-#N canvas 334 239 834 544 10;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array array99 20 float 0;
-#X coords 0 1 19 -1 250 200 1;
-#X restore 515 66 graph;
-#X obj 69 195 line~;
-#X obj 36 139 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 36 32 loadbang;
-#X obj 300 195 line~;
-#X obj 36 55 t b b;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array test_4c 44100 float 0;
-#X coords 0 1 44099 -1 250 200 1;
-#X restore 278 316 graph;
-#X obj 70 219 tabread6c~ array99;
-#N canvas 0 0 450 300 (subpatch) 0;
-#X array test_6c 44100 float 0;
-#X coords 0 1 44099 -1 250 200 1;
-#X restore 18 317 graph;
-#X obj 301 219 tabread4c~ array99;
-#X obj 583 373 phasor~ 222;
-#X msg 68 77 \; array99 resize 20 \; array99 0 0 0 0 0 0 -0.5 -0.5
--0.5 0.5 0.5 0.5 -0.5 0 0 0.5 0 0 0 0 0 \; pd dsp 1 \;;
-#X msg 70 171 2 \, 17 1000;
-#X msg 300 172 2 \, 17 1000;
-#X obj 583 400 *~ 15;
-#X obj 582 425 +~ 2;
-#X obj 582 448 tabread6c~ array99;
-#X obj 606 471 tabread4c~ array99;
-#X obj 582 494 dac~;
-#X floatatom 583 354 5 0 0 0 - - -;
-#X floatatom 583 314 5 0 0 0 - - -;
-#X obj 583 333 mtof;
-#X obj 302 258 tabwrite~ test_4c;
-#X obj 36 250 tabwrite~ test_6c;
-#X connect 1 0 7 0;
-#X connect 2 0 12 0;
-#X connect 2 0 13 0;
-#X connect 2 0 22 0;
-#X connect 2 0 23 0;
-#X connect 3 0 5 0;
-#X connect 4 0 9 0;
-#X connect 5 0 2 0;
-#X connect 5 1 11 0;
-#X connect 7 0 23 0;
-#X connect 9 0 22 0;
-#X connect 10 0 14 0;
-#X connect 12 0 1 0;
-#X connect 13 0 4 0;
-#X connect 14 0 15 0;
-#X connect 15 0 16 0;
-#X connect 15 0 17 0;
-#X connect 19 0 10 0;
-#X connect 20 0 21 0;
-#X connect 21 0 19 0;
diff --git a/tab/tabread6c~.c b/tab/tabread6c~.c
deleted file mode 100644
index 45026cb..0000000
--- a/tab/tabread6c~.c
+++ /dev/null
@@ -1,192 +0,0 @@
-// tabread6c~
-// most of this code comes from pd. just the interpolation shematic is diferent.
-
-
-/*
-This software is copyrighted by Miller Puckette and others. The following
-terms (the "Standard Improved BSD License") apply to all files associated with
-the software unless explicitly disclaimed in individual files:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Cyrille Henry 06 2008
-
-#include "m_pd.h"
-
-/******************** tabread6c~ ***********************/
-
-static t_class *tabread6c_tilde_class;
-
-typedef struct _tabread6c_tilde
-{
- t_object x_obj;
- int x_npoints;
- t_word *x_vec;
- t_symbol *x_arrayname;
- t_float x_f;
-} t_tabread6c_tilde;
-
-static void *tabread6c_tilde_new(t_symbol *s)
-{
- t_tabread6c_tilde *x = (t_tabread6c_tilde *)pd_new(tabread6c_tilde_class);
- x->x_arrayname = s;
- x->x_vec = 0;
- outlet_new(&x->x_obj, gensym("signal"));
- x->x_f = 0;
- return (x);
-}
-
-static t_int *tabread6c_tilde_perform(t_int *w)
-{
- t_tabread6c_tilde *x = (t_tabread6c_tilde *)(w[1]);
- t_sample *in = (t_sample *)(w[2]);
- t_sample *out = (t_sample *)(w[3]);
- int n = (int)(w[4]);
- int maxindex;
- t_word *buf = x->x_vec, *wp;
- int i;
- double a0,a1,a2,a3,a4,a5; // CH
-
- maxindex = x->x_npoints - 3;
-
- if (!buf) goto zero;
-
-#if 0 /* test for spam -- I'm not ready to deal with this */
- for (i = 0, xmax = 0, xmin = maxindex, fp = in1; i < n; i++, fp++)
- {
- t_sample f = *in1;
- if (f < xmin) xmin = f;
- else if (f > xmax) xmax = f;
- }
- if (xmax < xmin + x->c_maxextent) xmax = xmin + x->c_maxextent;
- for (i = 0, splitlo = xmin+ x->c_maxextent, splithi = xmax - x->c_maxextent,
- fp = in1; i < n; i++, fp++)
- {
- t_sample f = *in1;
- if (f > splitlo && f < splithi) goto zero;
- }
-#endif
-
- for (i = 0; i < n; i++)
- {
- t_sample findex = *in++;
- int index = findex;
- t_sample frac, a, b, c, d, e, f, cminusb;
- static int count;
- if (index < 1)
- index = 1, frac = 0;
- else if (index > maxindex)
- index = maxindex, frac = 1;
- else frac = findex - index;
- wp = buf + index;
- a = wp[-2].w_float;
- b = wp[-1].w_float;
- c = wp[0].w_float;
- d = wp[1].w_float;
- e = wp[2].w_float;
- f = wp[3].w_float;
-// CH
-
-/* a0 = c;
- a1 = ( 1./12.)*a - ( 2./3. )*b + ( 2./3. )*d - ( 1./12.)*e;
- a2 = (-1./24.)*a + ( 2./3. )*b - ( 5./4. )*c + ( 2./3. )*d - ( 1./24.)*e;
- a3 = (-3./8. )*a + (13./8. )*b - (35./12.)*c + (11./4. )*d - (11./8. )*e + ( 7./24.)*f;
- a4 = (13./24.)*a - ( 8./3. )*b + (21./4. )*c - (31./6. )*d + (61./24.)*e - ( 1./2. )*f;
- a5 = (-5./24.)*a + (25./24.)*b - (25./12.)*c + (25./12.)*d - (25./24.)*e + ( 5./24.)*f;
-
- *out++ = ((((a5 * frac + a4 ) * frac + a3) * frac + a2) * frac + a1) * frac + a0;
-*/
-// same but optimized :
-
- t_sample a3plusa4plusa5 = 0.25f*c+0.125f*e-(1./3.)*d-(1./24.)*a;
- t_sample fminusa = f-a;
- t_sample eminusb = e-b;
- t_sample dminusc = d-c;
-
- a5 = (5./24.)*((fminusa-5.f*eminusb+10.f*dminusc));
- a4 = (8./3.)*eminusb-0.5f*fminusa-5.5f*dminusc-a3plusa4plusa5;
- a3 = a3plusa4plusa5-a4-a5;
- a2 = (2./3.)*(d+b)-(1./24.)*(a+e)-1.25f*c;
- a1 = (2./3.)*(d-b)+(1./12.)*(a-e);
- a0 = c;
-
- *out++ = ((((a5 * frac + a4 ) * frac + a3) * frac + a2) * frac + a1)
-* frac + a0;
-
- }
- return (w+5);
- zero:
- while (n--) *out++ = 0;
-
- return (w+5);
-}
-
-void tabread6c_tilde_set(t_tabread6c_tilde *x, t_symbol *s)
-{
- t_garray *a;
-
- x->x_arrayname = s;
- if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
- {
- if (*s->s_name)
- pd_error(x, "tabread6c~: %s: no such array", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else if (!garray_getfloatwords(a, &x->x_npoints, &x->x_vec))
- {
- pd_error(x, "%s: bad template for tabread6c~", x->x_arrayname->s_name);
- x->x_vec = 0;
- }
- else garray_usedindsp(a);
-}
-
-static void tabread6c_tilde_dsp(t_tabread6c_tilde *x, t_signal **sp)
-{
- tabread6c_tilde_set(x, x->x_arrayname);
-
- dsp_add(tabread6c_tilde_perform, 4, x,
- sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-
-}
-
-static void tabread6c_tilde_free(t_tabread6c_tilde *x)
-{
-}
-
-void tabread6c_tilde_setup(void)
-{
- tabread6c_tilde_class = class_new(gensym("tabread6c~"),
- (t_newmethod)tabread6c_tilde_new, (t_method)tabread6c_tilde_free,
- sizeof(t_tabread6c_tilde), 0, A_DEFSYM, 0);
- CLASS_MAINSIGNALIN(tabread6c_tilde_class, t_tabread6c_tilde, x_f);
- class_addmethod(tabread6c_tilde_class, (t_method)tabread6c_tilde_dsp,
- gensym("dsp"), 0);
- class_addmethod(tabread6c_tilde_class, (t_method)tabread6c_tilde_set,
- gensym("set"), A_SYMBOL, 0);
-}