Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9908
Modified Files: Tag: desiredata d_ugen.c Log Message: cleanup
Index: d_ugen.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/d_ugen.c,v retrieving revision 1.3.4.1.2.5.2.11 retrieving revision 1.3.4.1.2.5.2.12 diff -C2 -d -r1.3.4.1.2.5.2.11 -r1.3.4.1.2.5.2.12 *** d_ugen.c 30 Jun 2007 13:56:06 -0000 1.3.4.1.2.5.2.11 --- d_ugen.c 10 Jul 2007 05:49:58 -0000 1.3.4.1.2.5.2.12 *************** *** 38,49 ****
extern "C" { ! void vinlet_dspprolog(struct _vinlet *x, t_signal **parentsigs, ! int myvecsize, int calcsize, int phase, int period, int frequency, ! int downsample, int upsample, int reblock, int switched); ! void voutlet_dspprolog(struct _voutlet *x, t_signal **parentsigs, ! int myvecsize, int calcsize, int phase, int period, int frequency, int downsample, int upsample, int reblock, int switched); ! void voutlet_dspepilog(struct _voutlet *x, t_signal **parentsigs, ! int myvecsize, int calcsize, int phase, int period, int frequency, int downsample, int upsample, int reblock, int switched); }; --- 38,46 ----
extern "C" { ! void vinlet_dspprolog( struct _vinlet *x, t_signal **parentsigs, int myvecsize, int calcsize, int phase, int period, int frequency, int downsample, int upsample, int reblock, int switched); ! void voutlet_dspprolog(struct _voutlet *x, t_signal **parentsigs, int myvecsize, int calcsize, int phase, int period, int frequency, ! int downsample, int upsample, int reblock, int switched); ! void voutlet_dspepilog(struct _voutlet *x, t_signal **parentsigs, int myvecsize, int calcsize, int phase, int period, int frequency, int downsample, int upsample, int reblock, int switched); }; *************** *** 328,332 **** }
! /* mark the signal "reusable." */ extern "C" void signal_makereusable(t_signal *sig) { int logn = ilog2(sig->s_vecsize); --- 325,329 ---- }
! /* mark the signal "reusable." */ extern "C" void signal_makereusable(t_signal *sig) { int logn = ilog2(sig->s_vecsize); *************** *** 348,353 **** if (ugen_loud) post("free %lx: %d", sig, sig->s_isborrowed); if (sig->s_isborrowed) { ! /* if the signal is borrowed, decrement the borrowed-from signal's ! reference count, possibly marking it reusable too */ t_signal *s2 = sig->s_borrowedfrom; if ((s2 == sig) || !s2) bug("signal_free"); --- 345,349 ---- if (ugen_loud) post("free %lx: %d", sig, sig->s_isborrowed); if (sig->s_isborrowed) { ! /* if the signal is borrowed, decrement the borrowed-from signal's reference count, possibly marking it reusable too */ t_signal *s2 = sig->s_borrowedfrom; if ((s2 == sig) || !s2) bug("signal_free"); *************** *** 364,371 **** }
! /* reclaim or make an audio signal. If n is zero, return a "borrowed" ! signal whose buffer and size will be obtained later via ! signal_setborrowed(). */ ! t_signal *signal_new(int n, float sr) { int logn, vecsize = 0; --- 360,365 ---- }
! /* reclaim or make an audio signal. If n is zero, return a "borrowed" ! signal whose buffer and size will be obtained later via signal_setborrowed(). */ t_signal *signal_new(int n, float sr) { int logn, vecsize = 0; *************** *** 516,520 **** }
! /* first the canvas calls this to create all the boxes... */ extern "C" void ugen_add(t_dspcontext *dc, t_object *obj) { t_ugenbox *x = (t_ugenbox *)getbytes(sizeof *x); --- 510,514 ---- }
! /* first the canvas calls this to create all the boxes... */ extern "C" void ugen_add(t_dspcontext *dc, t_object *obj) { t_ugenbox *x = (t_ugenbox *)getbytes(sizeof *x); *************** *** 533,542 **** }
! /* and then this to make all the connections. */ extern "C" void ugen_connect(t_dspcontext *dc, t_object *x1, int outno, t_object *x2, int inno) { t_ugenbox *u1, *u2; - t_sigoutlet *uout; - t_siginlet *uin; - t_sigoutconnect *oc; int sigoutno = obj_sigoutletindex(x1, outno); int siginno = obj_siginletindex(x2, inno); --- 527,533 ---- }
! /* and then this to make all the connections. */ extern "C" void ugen_connect(t_dspcontext *dc, t_object *x1, int outno, t_object *x2, int inno) { t_ugenbox *u1, *u2; int sigoutno = obj_sigoutletindex(x1, outno); int siginno = obj_siginletindex(x2, inno); *************** *** 550,561 **** if (sigoutno < 0 || sigoutno >= u1->nout || siginno >= u2->nin) { bug("ugen_connect %s %s %d %d (%d %d)", ! class_getname(x1->ob_pd), ! class_getname(x2->ob_pd), sigoutno, siginno, u1->nout, ! u2->nin); } ! uout = u1->out + sigoutno; ! uin = u2->in + siginno; /* add a new connection to the outlet's list */ ! oc = (t_sigoutconnect *)getbytes(sizeof *oc); oc->next = uout->connections; uout->connections = oc; --- 541,550 ---- if (sigoutno < 0 || sigoutno >= u1->nout || siginno >= u2->nin) { bug("ugen_connect %s %s %d %d (%d %d)", ! class_getname(x1->ob_pd), class_getname(x2->ob_pd), sigoutno, siginno, u1->nout, u2->nin); } ! t_sigoutlet *uout = u1->out + sigoutno; ! t_siginlet * uin = u2->in + siginno; /* add a new connection to the outlet's list */ ! t_sigoutconnect *oc = (t_sigoutconnect *)getbytes(sizeof *oc); oc->next = uout->connections; uout->connections = oc; *************** *** 569,576 **** /* get the index of a ugenbox or -1 if it's not on the list */ static int ugen_index(t_dspcontext *dc, t_ugenbox *x) { ! int ret; ! t_ugenbox *u; ! for (u = dc->ugenlist, ret = 0; u; u = u->next, ret++) ! if (u == x) return ret; return -1; } --- 558,563 ---- /* get the index of a ugenbox or -1 if it's not on the list */ static int ugen_index(t_dspcontext *dc, t_ugenbox *x) { ! int ret=0; ! for (t_ugenbox *u = dc->ugenlist; u; u = u->next, ret++) if (u == x) return ret; return -1; } *************** *** 648,652 **** else if (u->nin+u->nout==1) post("put %s %d (%lx)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0]); else if (u->nin+u->nout==2) post("put %s %d (%lx %lx)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0],sig[1]); ! else post("put %s %d (%lx %lx %lx ...)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0],sig[1],sig[2]); } /* pass it on and trip anyone whose last inlet was filled */ --- 635,639 ---- else if (u->nin+u->nout==1) post("put %s %d (%lx)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0]); else if (u->nin+u->nout==2) post("put %s %d (%lx %lx)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0],sig[1]); ! else post("put %s %d (%lx %lx %lx ...)", class_getname(u->obj->ob_pd), ugen_index(dc,u),sig[0],sig[1],sig[2]); } /* pass it on and trip anyone whose last inlet was filled */ *************** *** 662,667 **** s2->s_refcount--; if (!signal_compatible(s1, s2)) { ! pd_error(u->obj, "%s: incompatible signal inputs", ! class_getname(u->obj->ob_pd)); return; } --- 649,653 ---- s2->s_refcount--; if (!signal_compatible(s1, s2)) { ! pd_error(u->obj, "%s: incompatible signal inputs", class_getname(u->obj->ob_pd)); return; } *************** *** 700,704 **** t_sigoutlet *uout; t_siginlet *uin; - t_sigoutconnect *oc, *oc2; int i, n; t_block *blk; --- 686,689 ---- *************** *** 708,714 **** int period, frequency, phase, vecsize, calcsize; float srate; - int chainblockbegin; /* DSP chain onset before block prolog code */ - int chainblockend; /* and after block epilog code */ - int chainafterall; /* and after signal outlet epilog */ int reblock = 0, switched; int downsample = 1, upsample = 1; /* IOhannes */ --- 693,696 ---- *************** *** 719,726 **** post("ugen: %s", class_getname(u->obj->ob_pd)); for (uout = u->out, i = 0; i < u->nout; uout++, i++) ! for (oc = uout->connections; oc; oc = oc->next) { ! post("... out %d to %s, index %d, inlet %d", i, ! class_getname(oc->who->obj->ob_pd), ! ugen_index(dc, oc->who), oc->inno); } } --- 701,706 ---- post("ugen: %s", class_getname(u->obj->ob_pd)); for (uout = u->out, i = 0; i < u->nout; uout++, i++) ! for (t_sigoutconnect *oc = uout->connections; oc; oc = oc->next) { ! post("... out %d to %s, index %d, inlet %d", i, class_getname(oc->who->obj->ob_pd), ugen_index(dc, oc->who), oc->inno); } } *************** *** 810,822 **** if (outsigs) outsigs += dc->ninlets; if (pd_class(zz) == vinlet_class) ! vinlet_dspprolog((struct _vinlet *)zz, ! dc->iosigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); else if (pd_class(zz) == voutlet_class) ! voutlet_dspprolog((struct _voutlet *)zz, ! outsigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); } ! chainblockbegin = dsp_chainsize; if (blk && (reblock || switched)) { /* add the block DSP prolog */ dsp_add(block_prolog, 1, blk); --- 790,800 ---- if (outsigs) outsigs += dc->ninlets; if (pd_class(zz) == vinlet_class) ! vinlet_dspprolog((struct _vinlet *)zz, dc->iosigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); else if (pd_class(zz) == voutlet_class) ! voutlet_dspprolog((struct _voutlet *)zz, outsigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); } ! int chainblockbegin = dsp_chainsize; /* DSP chain onset before block prolog code */ if (blk && (reblock || switched)) { /* add the block DSP prolog */ dsp_add(block_prolog, 1, blk); *************** *** 856,860 **** /* add block DSP epilog */ if (blk && (reblock || switched)) dsp_add(block_epilog, 1, blk); ! chainblockend = dsp_chainsize; /* add epilogs for outlets. */ for (u = dc->ugenlist; u; u = u->next) { --- 834,838 ---- /* add block DSP epilog */ if (blk && (reblock || switched)) dsp_add(block_epilog, 1, blk); ! int chainblockend = dsp_chainsize; /* and after block epilog code */ /* add epilogs for outlets. */ for (u = dc->ugenlist; u; u = u->next) { *************** *** 863,872 **** t_signal **iosigs = dc->iosigs; if (iosigs) iosigs += dc->ninlets; ! voutlet_dspepilog((struct _voutlet *)zz, ! iosigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); } } ! chainafterall = dsp_chainsize; if (blk) { blk->blocklength = chainblockend - chainblockbegin; --- 841,849 ---- t_signal **iosigs = dc->iosigs; if (iosigs) iosigs += dc->ninlets; ! voutlet_dspepilog((struct _voutlet *)zz, iosigs, vecsize, calcsize, dsp_phase, period, frequency, downsample, upsample, reblock, switched); } } ! int chainafterall = dsp_chainsize; /* and after signal outlet epilog */ if (blk) { blk->blocklength = chainblockend - chainblockbegin; *************** *** 883,887 **** while (dc->ugenlist) { for (uout = dc->ugenlist->out, n = dc->ugenlist->nout; n--; uout++) { ! oc = uout->connections; while (oc) { oc2 = oc->next; --- 860,864 ---- while (dc->ugenlist) { for (uout = dc->ugenlist->out, n = dc->ugenlist->nout; n--; uout++) { ! t_sigoutconnect *oc = uout->connections, *oc2; while (oc) { oc2 = oc->next; *************** *** 914,921 ****
t_int *downsampling_perform_0(t_int *w) { ! t_float *in = (t_float *)(w[1]); /* original signal */ ! t_float *out = (t_float *)(w[2]); /* downsampled signal */ ! int down = (int)(w[3]); /* downsampling factor */ ! int parent = (int)(w[4]); /* original vectorsize */ int n=parent/down; while(n--) { --- 891,898 ----
t_int *downsampling_perform_0(t_int *w) { ! t_float *in = (t_float *)w[1]; /* original signal */ ! t_float *out = (t_float *)w[2]; /* downsampled signal */ ! int down = int(w[3]); /* downsampling factor */ ! int parent = int(w[4]); /* original vectorsize */ int n=parent/down; while(n--) { *************** *** 982,987 **** t_float *in = (t_float *)w[2]; /* original signal */ t_float *out = (t_float *)w[3]; /* upsampled signal */ ! const int up = int(w[4]); /* upsampling factor */ ! const int parent = int(w[5]); /* original vectorsize */ const int length = parent*up; int n; --- 959,964 ---- t_float *in = (t_float *)w[2]; /* original signal */ t_float *out = (t_float *)w[3]; /* upsampled signal */ ! const int up = int(w[4]); /* upsampling factor */ ! const int parent = int(w[5]); /* original vectorsize */ const int length = parent*up; int n; *************** *** 1009,1016 **** * cool for FFT-data, where you only want to process the significant (1st) part of the vector */ ! t_float *in = (t_float *)(w[1]); /* original signal */ ! t_float *out = (t_float *)(w[2]); /* upsampled signal */ ! int up = (int)(w[3]); /* upsampling factor */ ! int parent = (int)(w[4]); /* original vectorsize */ int i=parent; int n=parent*(up-1); --- 986,993 ---- * cool for FFT-data, where you only want to process the significant (1st) part of the vector */ ! t_float *in = (t_float *)w[1]; /* original signal */ ! t_float *out = (t_float *)w[2]; /* upsampled signal */ ! int up = (int)w[3]; /* upsampling factor */ ! int parent = (int)w[4]; /* original vectorsize */ int i=parent; int n=parent*(up-1); *************** *** 1039,1046 ****
/* dsp-adding */ ! void resample_dsp(t_resample *x, ! t_sample* in, int insize, ! t_sample* out, int outsize, ! int method) { if (insize == outsize) { bug("nothing to be done"); --- 1016,1020 ----
/* dsp-adding */ ! void resample_dsp(t_resample *x, t_sample* in, int insize, t_sample* out, int outsize, int method) { if (insize == outsize) { bug("nothing to be done"); *************** *** 1053,1061 **** } switch (method) { ! case RESAMPLE_BLOCK: ! dsp_add(downsampling_perform_block, 4, in, out, insize/outsize, insize); ! break; ! default: ! dsp_add(downsampling_perform_0, 4, in, out, insize/outsize, insize); } } else { /* upsampling */ --- 1027,1032 ---- } switch (method) { ! case RESAMPLE_BLOCK: dsp_add(downsampling_perform_block, 4, in, out, insize/outsize, insize); break; ! default: dsp_add(downsampling_perform_0, 4, in, out, insize/outsize, insize); } } else { /* upsampling */ *************** *** 1065,1071 **** } switch (method) { ! case RESAMPLE_HOLD: ! dsp_add(upsampling_perform_hold, 4, in, out, outsize/insize, insize); ! break; case RESAMPLE_LINEAR: if (x->bufsize != 1) { --- 1036,1040 ---- } switch (method) { ! case RESAMPLE_HOLD: dsp_add(upsampling_perform_hold, 4, in, out, outsize/insize, insize); break; case RESAMPLE_LINEAR: if (x->bufsize != 1) { *************** *** 1076,1084 **** dsp_add(upsampling_perform_linear, 5, x, in, out, outsize/insize, insize); break; ! case RESAMPLE_BLOCK: ! dsp_add(upsampling_perform_block, 4, in, out, outsize/insize, insize); ! break; ! default: ! dsp_add(upsampling_perform_0, 4, in, out, outsize/insize, insize); } } --- 1045,1050 ---- dsp_add(upsampling_perform_linear, 5, x, in, out, outsize/insize, insize); break; ! case RESAMPLE_BLOCK: dsp_add(upsampling_perform_block, 4, in, out, outsize/insize, insize); break; ! default: dsp_add(upsampling_perform_0, 4, in, out, outsize/insize, insize); } } *************** *** 1105,1109 **** void resampleto_dsp(t_resample *x, t_sample *out, int insize, int outsize, int method) { if (insize==outsize) { ! if (x->s_n)free(x->s_vec); x->s_n = 0; x->s_vec = out; --- 1071,1075 ---- void resampleto_dsp(t_resample *x, t_sample *out, int insize, int outsize, int method) { if (insize==outsize) { ! if (x->s_n) free(x->s_vec); x->s_n = 0; x->s_vec = out; *************** *** 1149,1154 ****
static void samplerate_tilde_setup() { ! samplerate_tilde_class = class_new(gensym("samplerate~"), ! (t_newmethod)samplerate_tilde_new, 0, sizeof(t_samplerate), 0, 0); class_addbang(samplerate_tilde_class, samplerate_tilde_bang); } --- 1115,1119 ----
static void samplerate_tilde_setup() { ! samplerate_tilde_class = class_new(gensym("samplerate~"), (t_newmethod)samplerate_tilde_new, 0, sizeof(t_samplerate), 0, 0); class_addbang(samplerate_tilde_class, samplerate_tilde_bang); }