[PD-cvs] pd/src builtins_dsp.c,1.1.2.23,1.1.2.24
Mathieu Bouchard
matju at users.sourceforge.net
Thu Jul 19 20:12:28 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9126
Modified Files:
Tag: desiredata
builtins_dsp.c
Log Message:
cleanup
Index: builtins_dsp.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins_dsp.c,v
retrieving revision 1.1.2.23
retrieving revision 1.1.2.24
diff -C2 -d -r1.1.2.23 -r1.1.2.24
*** builtins_dsp.c 19 Jul 2007 05:14:02 -0000 1.1.2.23
--- builtins_dsp.c 19 Jul 2007 18:12:25 -0000 1.1.2.24
***************
*** 234,241 ****
if (g) g = 1.f / g;
for (; n; n -= 8, in += 8, out += 8) {
! float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3];
! float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7];
! out[0] = f0 * g; out[1] = f1 * g; out[2] = f2 * g; out[3] = f3 * g;
! out[4] = f4 * g; out[5] = f5 * g; out[6] = f6 * g; out[7] = f7 * g;
}
return w+5;
--- 234,239 ----
if (g) g = 1.f / g;
for (; n; n -= 8, in += 8, out += 8) {
! out[0] = in[0] * g; out[1] = in[1] * g; out[2] = in[2] * g; out[3] = in[3] * g;
! out[4] = in[4] * g; out[5] = in[5] * g; out[6] = in[6] * g; out[7] = in[7] * g;
}
return w+5;
***************
*** 300,305 ****
}
x->phase = phase;
! }
! else x->phase = 0x7fffffff;
bad:
return w+4;
--- 298,302 ----
}
x->phase = phase;
! } else x->phase = 0x7fffffff;
bad:
return w+4;
***************
*** 330,343 ****
}
}
- static void tabwrite_tilde_setup() {
- t_class *c = tabwrite_tilde_class =
- class_new2("tabwrite~",tabwrite_tilde_new,0,sizeof(t_tabwrite_tilde),0,"S");
- CLASS_MAINSIGNALIN(c, t_tabwrite_tilde, a);
- class_addmethod2(c, tabwrite_tilde_dsp, "dsp","");
- class_addmethod2(c, tabwrite_tilde_set, "set","s");
- class_addmethod2(c, tabwrite_tilde_stop,"stop","");
- class_addmethod2(c, tabwrite_tilde_start,"start","F");
- class_addbang(c, tabwrite_tilde_bang);
- }
/* ------------ tabplay~ - non-transposing sample playback --------------- */
--- 327,330 ----
***************
*** 365,375 ****
t_tabplay_tilde *x = (t_tabplay_tilde *)w[1];
t_float *out = (t_float *)w[2], *fp;
! int n = (int)w[3], phase = x->phase,
! endphase = (x->nsampsintab < x->limit ? x->nsampsintab : x->limit), nxfer, n3;
! if (!x->vec || phase >= endphase) goto zero;
! nxfer = endphase - phase;
fp = x->vec + phase;
- if (nxfer > n)
- nxfer = n;
n3 = n - nxfer;
phase += nxfer;
--- 352,359 ----
t_tabplay_tilde *x = (t_tabplay_tilde *)w[1];
t_float *out = (t_float *)w[2], *fp;
! int n = (int)w[3], phase = x->phase, endphase = (x->nsampsintab < x->limit ? x->nsampsintab : x->limit), nxfer, n3;
! if (!x->vec || phase >= endphase) {while (n--) *out++ = 0; goto bye;}
! nxfer = min(endphase-phase,n);
fp = x->vec + phase;
n3 = n - nxfer;
phase += nxfer;
***************
*** 378,387 ****
clock_delay(x->clock, 0);
x->phase = 0x7fffffff;
! while (n3--)
! *out++ = 0;
} else x->phase = phase;
return w+4;
! zero:
! while (n--) *out++ = 0;
return w+4;
}
--- 362,369 ----
clock_delay(x->clock, 0);
x->phase = 0x7fffffff;
! while (n3--) *out++ = 0;
} else x->phase = phase;
return w+4;
! bye:
return w+4;
}
***************
*** 401,408 ****
dsp_add(tabplay_tilde_perform, 3, x, sp[0]->v, sp[0]->n);
}
! static void tabplay_tilde_list(t_tabplay_tilde *x, t_symbol *s,
! int argc, t_atom *argv) {
! long start = (int)atom_getfloatarg(0, argc, argv);
! long length = (int)atom_getfloatarg(1, argc, argv);
if (start < 0) start = 0;
if (length <= 0) x->limit = 0x7fffffff; else x->limit = start + length;
--- 383,389 ----
dsp_add(tabplay_tilde_perform, 3, x, sp[0]->v, sp[0]->n);
}
! static void tabplay_tilde_list(t_tabplay_tilde *x, t_symbol *s, int argc, t_atom *argv) {
! long start = atom_getintarg(0, argc, argv);
! long length = atom_getintarg(1, argc, argv);
if (start < 0) start = 0;
if (length <= 0) x->limit = 0x7fffffff; else x->limit = start + length;
***************
*** 412,423 ****
static void tabplay_tilde_tick(t_tabplay_tilde *x) {outlet_bang(x->out(1));}
static void tabplay_tilde_free(t_tabplay_tilde *x) {clock_free(x->clock);}
- static void tabplay_tilde_setup() {
- t_class *c = tabplay_tilde_class =
- class_new2("tabplay~",tabplay_tilde_new,tabplay_tilde_free,sizeof(t_tabplay_tilde),0,"S");
- class_addmethod2(c, tabplay_tilde_dsp, "dsp","");
- class_addmethod2(c, tabplay_tilde_stop, "stop","");
- class_addmethod2(c, tabplay_tilde_set, "set","S");
- class_addlist(c, tabplay_tilde_list);
- }
/******************** tabread~ ***********************/
--- 393,396 ----
***************
*** 442,449 ****
t_float *out = (t_float *)w[3];
int n = (int)w[4];
- int maxindex;
float *buf = x->vec;
! maxindex = x->npoints - 1;
! if (!buf) goto zero;
for (int i = 0; i < n; i++) {
int index = (int)*in++;
--- 415,421 ----
t_float *out = (t_float *)w[3];
int n = (int)w[4];
float *buf = x->vec;
! int maxindex = x->npoints - 1;
! if (!buf) {while (n--) *out++ = 0; goto bad;}
for (int i = 0; i < n; i++) {
int index = (int)*in++;
***************
*** 451,458 ****
*out++ = buf[index];
}
! return w+5;
! zero:
! while (n--) *out++ = 0;
! return w+5;
}
void tabread_tilde_set(t_tabread_tilde *x, t_symbol *s) {
--- 423,427 ----
*out++ = buf[index];
}
! bad:return w+5;
}
void tabread_tilde_set(t_tabread_tilde *x, t_symbol *s) {
***************
*** 472,482 ****
}
static void tabread_tilde_free(t_tabread_tilde *x) {}
- static void tabread_tilde_setup() {
- t_class *c = tabread_tilde_class = class_new2("tabread~",tabread_tilde_new,tabread_tilde_free,
- sizeof(t_tabread_tilde),0,"S");
- CLASS_MAINSIGNALIN(c, t_tabread_tilde, a);
- class_addmethod2(c, tabread_tilde_dsp, "dsp","");
- class_addmethod2(c, tabread_tilde_set, "set","s");
- }
/******************** tabread4~ ***********************/
--- 441,444 ----
***************
*** 557,563 ****
}
static void tabread4_tilde_free(t_tabread4_tilde *x) {}
! static void tabread4_tilde_setup() {
! t_class *c = tabread4_tilde_class =
! class_new2("tabread4~",tabread4_tilde_new,tabread4_tilde_free,sizeof(t_tabread4_tilde),0,"S");
CLASS_MAINSIGNALIN(c, t_tabread4_tilde, a);
class_addmethod2(c, tabread4_tilde_dsp, "dsp","");
--- 519,542 ----
}
static void tabread4_tilde_free(t_tabread4_tilde *x) {}
!
! static void tab_tilde_setup() {
! t_class *c;
! c = tabwrite_tilde_class = class_new2("tabwrite~",tabwrite_tilde_new,0,sizeof(t_tabwrite_tilde),0,"S");
! CLASS_MAINSIGNALIN(c, t_tabwrite_tilde, a);
! class_addmethod2(c, tabwrite_tilde_dsp, "dsp","");
! class_addmethod2(c, tabwrite_tilde_set, "set","s");
! class_addmethod2(c, tabwrite_tilde_stop,"stop","");
! class_addmethod2(c, tabwrite_tilde_start,"start","F");
! class_addbang(c, tabwrite_tilde_bang);
! c = tabplay_tilde_class = class_new2("tabplay~",tabplay_tilde_new,tabplay_tilde_free,sizeof(t_tabplay_tilde),0,"S");
! class_addmethod2(c, tabplay_tilde_dsp, "dsp","");
! class_addmethod2(c, tabplay_tilde_stop, "stop","");
! class_addmethod2(c, tabplay_tilde_set, "set","S");
! class_addlist(c, tabplay_tilde_list);
! c = tabread_tilde_class = class_new2("tabread~",tabread_tilde_new,tabread_tilde_free, sizeof(t_tabread_tilde),0,"S");
! CLASS_MAINSIGNALIN(c, t_tabread_tilde, a);
! class_addmethod2(c, tabread_tilde_dsp, "dsp","");
! class_addmethod2(c, tabread_tilde_set, "set","s");
! c = tabread4_tilde_class = class_new2("tabread4~",tabread4_tilde_new,tabread4_tilde_free,sizeof(t_tabread4_tilde),0,"S");
CLASS_MAINSIGNALIN(c, t_tabread4_tilde, a);
class_addmethod2(c, tabread4_tilde_dsp, "dsp","");
***************
*** 581,586 ****
union tabfudge {
! double tf_d;
! int32 tf_i[2];
};
static t_class *tabosc4_tilde_class;
--- 560,565 ----
union tabfudge {
! double d;
! int32 i[2];
};
static t_class *tabosc4_tilde_class;
***************
*** 610,614 ****
t_float *out = (t_float *)w[3];
int n = (int)w[4];
- int normhipart;
union tabfudge tf;
float fnpoints = x->fnpoints;
--- 589,592 ----
***************
*** 617,648 ****
float *tab = x->vec, *addr;
double dphase = fnpoints * x->phase + UNITBIT32;
! if (!tab) goto zero;
! tf.tf_d = UNITBIT32;
! normhipart = tf.tf_i[HIOFFSET];
#if 1
while (n--) {
! float 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];
! b = addr[1];
! c = addr[2];
! d = addr[3];
! cminusb = c-b;
! *out++ = b + frac * (cminusb - 0.1666667f * (1.-frac) * (
! (d - a - 3.0f * cminusb) * frac + (d + 2.0f*a - 3.0f*b)));
}
#endif
! tf.tf_d = UNITBIT32 * fnpoints;
! normhipart = tf.tf_i[HIOFFSET];
! tf.tf_d = dphase + (UNITBIT32 * fnpoints - UNITBIT32);
! tf.tf_i[HIOFFSET] = normhipart;
! x->phase = (tf.tf_d - UNITBIT32 * fnpoints) * x->finvnpoints;
! return w+5;
! zero:
! while (n--) *out++ = 0;
return w+5;
}
--- 595,621 ----
float *tab = x->vec, *addr;
double dphase = fnpoints * x->phase + UNITBIT32;
! if (!tab) {while (n--) *out++ = 0; return w+5;}
! tf.d = UNITBIT32;
! int normhipart = tf.i[HIOFFSET];
#if 1
while (n--) {
! tf.d = dphase;
dphase += *in++ * conv;
! addr = tab + (tf.i[HIOFFSET] & mask);
! tf.i[HIOFFSET] = normhipart;
! float frac = tf.d - UNITBIT32;
! float a = addr[0];
! float b = addr[1];
! float c = addr[2];
! float d = addr[3];
! 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)));
}
#endif
! tf.d = UNITBIT32 * fnpoints;
! normhipart = tf.i[HIOFFSET];
! tf.d = dphase + (UNITBIT32 * fnpoints - UNITBIT32);
! tf.i[HIOFFSET] = normhipart;
! x->phase = (tf.d - UNITBIT32 * fnpoints) * x->finvnpoints;
return w+5;
}
***************
*** 3733,3747 ****
int normhipart;
float conv = x->conv;
! tf.tf_d = UNITBIT32;
! normhipart = tf.tf_i[HIOFFSET];
! tf.tf_d = dphase;
while (n--) {
! tf.tf_i[HIOFFSET] = normhipart;
dphase += *in++ * conv;
! *out++ = tf.tf_d - UNITBIT32;
! tf.tf_d = dphase;
}
! tf.tf_i[HIOFFSET] = normhipart;
! x->phase = tf.tf_d - UNITBIT32;
return w+5;
}
--- 3706,3720 ----
int normhipart;
float conv = x->conv;
! tf.d = UNITBIT32;
! normhipart = tf.i[HIOFFSET];
! tf.d = dphase;
while (n--) {
! tf.i[HIOFFSET] = normhipart;
dphase += *in++ * conv;
! *out++ = tf.d - UNITBIT32;
! tf.d = dphase;
}
! tf.i[HIOFFSET] = normhipart;
! x->phase = tf.d - UNITBIT32;
return w+5;
}
***************
*** 3781,3794 ****
int normhipart;
union tabfudge tf;
! tf.tf_d = UNITBIT32;
! normhipart = tf.tf_i[HIOFFSET];
#if 0 /* this is the readable version of the code. */
while (n--) {
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! tf.tf_d = dphase;
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
! tf.tf_i[HIOFFSET] = normhipart;
! frac = tf.tf_d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
--- 3754,3767 ----
int normhipart;
union tabfudge tf;
! tf.d = UNITBIT32;
! normhipart = tf.i[HIOFFSET];
#if 0 /* this is the readable version of the code. */
while (n--) {
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! tf.d = dphase;
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
! tf.i[HIOFFSET] = normhipart;
! frac = tf.d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
***************
*** 3797,3814 ****
#else /* this is the same, unwrapped by hand. */
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! tf.tf_d = dphase;
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
! tf.tf_i[HIOFFSET] = normhipart;
while (--n) {
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! frac = tf.tf_d - UNITBIT32;
! tf.tf_d = dphase;
f1 = addr[0];
f2 = addr[1];
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
*out++ = f1 + frac * (f2 - f1);
! tf.tf_i[HIOFFSET] = normhipart;
}
! frac = tf.tf_d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
--- 3770,3787 ----
#else /* this is the same, unwrapped by hand. */
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! tf.d = dphase;
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
! tf.i[HIOFFSET] = normhipart;
while (--n) {
dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
! frac = tf.d - UNITBIT32;
! tf.d = dphase;
f1 = addr[0];
f2 = addr[1];
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
*out++ = f1 + frac * (f2 - f1);
! tf.i[HIOFFSET] = normhipart;
}
! frac = tf.d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
***************
*** 3830,3835 ****
/* here we check at startup whether the byte alignment
is as we declared it. If not, the code has to be recompiled the other way. */
! tf.tf_d = UNITBIT32 + 0.5;
! if ((unsigned)tf.tf_i[LOWOFFSET] != 0x80000000) bug("cos~: unexpected machine alignment");
}
static void cos_setup() {
--- 3803,3808 ----
/* here we check at startup whether the byte alignment
is as we declared it. If not, the code has to be recompiled the other way. */
! tf.d = UNITBIT32 + 0.5;
! if ((unsigned)tf.i[LOWOFFSET] != 0x80000000) bug("cos~: unexpected machine alignment");
}
static void cos_setup() {
***************
*** 3867,3879 ****
union tabfudge tf;
float conv = x->conv;
! tf.tf_d = UNITBIT32;
! normhipart = tf.tf_i[HIOFFSET];
#if 0
while (n--) {
! tf.tf_d = dphase;
dphase += *in++ * conv;
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
! tf.tf_i[HIOFFSET] = normhipart;
! frac = tf.tf_d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
--- 3840,3852 ----
union tabfudge tf;
float conv = x->conv;
! tf.d = UNITBIT32;
! normhipart = tf.i[HIOFFSET];
#if 0
while (n--) {
! tf.d = dphase;
dphase += *in++ * conv;
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
! tf.i[HIOFFSET] = normhipart;
! frac = tf.d - UNITBIT32;
f1 = addr[0];
f2 = addr[1];
***************
*** 3881,3898 ****
}
#else
! tf.tf_d = dphase;
dphase += *in++ * conv;
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
! tf.tf_i[HIOFFSET] = normhipart;
! frac = tf.tf_d - UNITBIT32;
while (--n) {
! tf.tf_d = dphase;
f1 = addr[0];
dphase += *in++ * conv;
f2 = addr[1];
! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1));
! tf.tf_i[HIOFFSET] = normhipart;
*out++ = f1 + frac * (f2 - f1);
! frac = tf.tf_d - UNITBIT32;
}
f1 = addr[0];
--- 3854,3871 ----
}
#else
! tf.d = dphase;
dphase += *in++ * conv;
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
! tf.i[HIOFFSET] = normhipart;
! frac = tf.d - UNITBIT32;
while (--n) {
! tf.d = dphase;
f1 = addr[0];
dphase += *in++ * conv;
f2 = addr[1];
! addr = tab + (tf.i[HIOFFSET] & (COSTABSIZE-1));
! tf.i[HIOFFSET] = normhipart;
*out++ = f1 + frac * (f2 - f1);
! frac = tf.d - UNITBIT32;
}
f1 = addr[0];
***************
*** 3900,3908 ****
*out++ = f1 + frac * (f2 - f1);
#endif
! tf.tf_d = UNITBIT32 * COSTABSIZE;
! normhipart = tf.tf_i[HIOFFSET];
! tf.tf_d = dphase + (UNITBIT32 * COSTABSIZE - UNITBIT32);
! tf.tf_i[HIOFFSET] = normhipart;
! x->phase = tf.tf_d - UNITBIT32 * COSTABSIZE;
return w+5;
}
--- 3873,3881 ----
*out++ = f1 + frac * (f2 - f1);
#endif
! tf.d = UNITBIT32 * COSTABSIZE;
! normhipart = tf.i[HIOFFSET];
! tf.d = dphase + (UNITBIT32 * COSTABSIZE - UNITBIT32);
! tf.i[HIOFFSET] = normhipart;
! x->phase = tf.d - UNITBIT32 * COSTABSIZE;
return w+5;
}
***************
*** 3971,3976 ****
int normhipart, tabindex;
union tabfudge tf;
! tf.tf_d = UNITBIT32;
! normhipart = tf.tf_i[HIOFFSET];
for (int i = 0; i < n; i++) {
float cf, cfindx, r, oneminusr;
--- 3944,3949 ----
int normhipart, tabindex;
union tabfudge tf;
! tf.d = UNITBIT32;
! normhipart = tf.i[HIOFFSET];
for (int i = 0; i < n; i++) {
float cf, cfindx, r, oneminusr;
***************
*** 3982,3990 ****
oneminusr = 1.0f - r;
dphase = ((double)(cfindx)) + UNITBIT32;
! tf.tf_d = dphase;
! tabindex = tf.tf_i[HIOFFSET] & (COSTABSIZE-1);
addr = tab + tabindex;
! tf.tf_i[HIOFFSET] = normhipart;
! frac = tf.tf_d - UNITBIT32;
f1 = addr[0]; f2 = addr[1]; coefr = r * (f1 + frac * (f2 - f1));
addr = tab + ((tabindex - (COSTABSIZE/4)) & (COSTABSIZE-1));
--- 3955,3963 ----
oneminusr = 1.0f - r;
dphase = ((double)(cfindx)) + UNITBIT32;
! tf.d = dphase;
! tabindex = tf.i[HIOFFSET] & (COSTABSIZE-1);
addr = tab + tabindex;
! tf.i[HIOFFSET] = normhipart;
! frac = tf.d - UNITBIT32;
f1 = addr[0]; f2 = addr[1]; coefr = r * (f1 + frac * (f2 - f1));
addr = tab + ((tabindex - (COSTABSIZE/4)) & (COSTABSIZE-1));
***************
*** 4052,4059 ****
min_setup();
! tabwrite_tilde_setup();
! tabplay_tilde_setup();
! tabread_tilde_setup();
! tabread4_tilde_setup();
tabosc4_tilde_setup();
tabsend_setup();
--- 4025,4029 ----
min_setup();
! tab_tilde_setup();
tabosc4_tilde_setup();
tabsend_setup();
More information about the Pd-cvs
mailing list