From d20d460faa23f9fda7dd531d6af5b6a2e108b1fe Mon Sep 17 00:00:00 2001 From: "N.N." Date: Tue, 9 Jun 2015 14:08:22 +0000 Subject: cyclone (cycle~, funbuff): cleanup garray_getarrayfloats/t_float stuff cyclone/cycle~: fixed offset as argument and in set message doc/help/cyclone/cycle~-help: improved patch svn path=/trunk/externals/miXed/; revision=17479 --- cyclone/hammer/funbuff.c | 6 +++--- cyclone/sickle/cycle.c | 39 ++++++++++++++++++++++++++------------- 2 files changed, 29 insertions(+), 16 deletions(-) (limited to 'cyclone') diff --git a/cyclone/hammer/funbuff.c b/cyclone/hammer/funbuff.c index b5a8dbd..f192896 100644 --- a/cyclone/hammer/funbuff.c +++ b/cyclone/hammer/funbuff.c @@ -339,7 +339,7 @@ static void funbuff_dump(t_funbuff *x) } /* CHECKME if pointer is updated */ -static void funbuff_dointerp(t_funbuff *x, t_floatarg f, int vsz, t_float *vec) +static void funbuff_dointerp(t_funbuff *x, t_floatarg f, int vsz, t_word *vec) { t_hammernode *np1; int trunc = (int)f; @@ -372,7 +372,7 @@ static void funbuff_dointerp(t_funbuff *x, t_floatarg f, int vsz, t_float *vec) return; } vec += vndx; - frac = *vec + (vec[1] - *vec) * vfrac; + frac = vec[0].w_float + (vec[1].w_float - vec[0].w_float) * vfrac; } value += (HAMMERNODE_GETFLOAT(np2) - HAMMERNODE_GETFLOAT(np1)) * frac; @@ -392,7 +392,7 @@ static void funbuff_interp(t_funbuff *x, t_floatarg f) static void funbuff_interptab(t_funbuff *x, t_symbol *s, t_floatarg f) { int vsz; - t_float *vec; + t_word *vec; if (vec = vefl_get(s, &vsz, 0, (t_pd *)x)) { if (vsz > 2) diff --git a/cyclone/sickle/cycle.c b/cyclone/sickle/cycle.c index b88c13e..8acb364 100644 --- a/cyclone/sickle/cycle.c +++ b/cyclone/sickle/cycle.c @@ -31,24 +31,37 @@ static void cycle_gettable(t_cycle *x) if (x->x_name) { int tabsize = 0; - t_float *table = vefl_get(x->x_name, &tabsize, 1, (t_pd *)x); + t_word *table = vefl_get(x->x_name, &tabsize, 1, (t_pd *)x); /* CHECKED buffer is copied */ if (table) { - int indx = x->x_offset + CYCLE_TABSIZE; - t_float *ptr = x->x_usertable + CYCLE_TABSIZE; - if (indx == tabsize) + int tablePtr; + int samplesFromTable = tabsize - x->x_offset; + int samplesToCopy = samplesFromTable < CYCLE_TABSIZE ? + samplesFromTable : CYCLE_TABSIZE; + +// post("samplesFromTable: %d, samplesToCopy: %d, tabsize: %d", +// samplesFromTable, samplesToCopy, tabsize); + // copy the internal table from the external one as far as + // its size permits and fill the rest with zeroes. + for (tablePtr = 0; tablePtr < CYCLE_TABSIZE; tablePtr++) { - *ptr-- = *table; - indx--; - } - if (indx < tabsize) - { - table += indx; - indx -= x->x_offset; - while (indx--) *ptr-- = *table--; - x->x_table = x->x_usertable; + if (samplesToCopy > 0) + { + x->x_usertable[tablePtr] = + table[tablePtr + x->x_offset].w_float; + samplesToCopy--; + } + else + { + x->x_usertable[tablePtr] = 0; + } } + // the 513th sample + x->x_usertable[tablePtr] = (samplesFromTable > 0) ? + table[x->x_offset + CYCLE_TABSIZE].w_float : 0; + + x->x_table = x->x_usertable; /* CHECKED else no complaint */ } } -- cgit v1.2.1