[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Sc-devel] commit? audio rate deman ugens
Hm, can't get the patch to apply. Could you send it as an attachment please?
Thanks
Dan
2008/1/20, Julian Rohrhuber <rohrhuber@xxxxxxxxxxxxxx>:
> Ok, here is the diff for the change that allows audio rate input to
> demand ugens. Attached is also a test. Seems to work fine as long as
> the audio rate ugen is involved in one other operation (this needs to
> be fixed still).
>
> commit?
>
>
> Index: /Volumes/data/sc/SuperCollider3/Source/plugins/DemandUGens.cpp
> ===================================================================
> --- /Volumes/data/sc/SuperCollider3/Source/plugins/DemandUGens.cpp
> (revision 7021)
> +++ /Volumes/data/sc/SuperCollider3/Source/plugins/DemandUGens.cpp
> (working copy)
> @@ -243,7 +243,7 @@
> if (ztrig > 0.f && prevtrig <= 0.f) {
> //Print("triggered\n");
> for (int j=2, k=0; j<unit->mNumInputs; ++j, ++k) {
> - float x = DEMANDINPUT(j);
> + float x = DEMANDINPUT_A(j, i + 1);
> //printf("in %d %g\n", k, x);
> if (sc_isnan(x)) x = prevout[k];
> else prevout[k] = x;
> @@ -291,7 +291,7 @@
>
> if (ztrig > 0.f && prevtrig <= 0.f) {
> for (int j=2, k=0; j<unit->mNumInputs; ++j, ++k) {
> - float x = DEMANDINPUT(j);
> + float x = DEMANDINPUT_A(j, i + 1);
> if (sc_isnan(x)) x = prevout[k];
> else prevout[k] = x;
> out[k][i] = x;
> @@ -419,7 +419,7 @@
> int doneAction = (int)ZIN0(duty_doneAction);
> DoneAction(doneAction, unit);
> }
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if(sc_isnan(x)) {
> x = prevout;
> @@ -463,13 +463,13 @@
> count = 0.f;
> }
> if (count <= 0.f) {
> - count = DEMANDINPUT(duty_dur) * sr + .5f + count;
> + count = DEMANDINPUT_A(duty_dur, i + 1) * sr +
> .5f + count;
> if(sc_isnan(count)) {
> int doneAction = (int)ZIN0(duty_doneAction);
> DoneAction(doneAction, unit);
> }
>
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if(sc_isnan(x)) {
> x = prevout;
> @@ -510,17 +510,17 @@
> RESETINPUT(duty_level);
> RESETINPUT(duty_dur);
> count = 0.f;
> - reset = DEMANDINPUT(duty_reset) * sr + .5f + reset;
> + reset = DEMANDINPUT_A(duty_reset, i + 1) * sr
> + .5f + reset;
> } else {
> reset--;
> }
> if (count <= 0.f) {
> - count = DEMANDINPUT(duty_dur) * sr + .5f + count;
> + count = DEMANDINPUT_A(duty_dur, i + 1) * sr +
> .5f + count;
> if(sc_isnan(count)) {
> int doneAction = (int)ZIN0(duty_doneAction);
> DoneAction(doneAction, unit);
> }
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if(sc_isnan(x)) {
> x = prevout;
> @@ -884,9 +884,9 @@
> // printf("reset: %f %f \n", zreset,
> unit->m_prevreset);
> RESETINPUT(d_env_level);
> if(zreset <= 1.f) {
> - DEMANDINPUT(d_env_level); // remove first level
> + DEMANDINPUT_A(d_env_level, i + 1); //
> remove first level
> } else {
> - level = DEMANDINPUT(d_env_level); //
> jump to first level
> + level = DEMANDINPUT_A(d_env_level, i
> + 1); // jump to first level
> }
>
> RESETINPUT(d_env_dur);
> @@ -918,7 +918,7 @@
>
> // new time
>
> - float dur = DEMANDINPUT(d_env_dur);
> + float dur = DEMANDINPUT_A(d_env_dur, i + 1);
> // printf("dur: %f \n", dur);
> if(sc_isnan(dur)) {
> release = true;
> @@ -930,8 +930,8 @@
>
> // new shape
> float count;
> - curve = DEMANDINPUT(d_env_shape);
> - shape = (int)DEMANDINPUT(d_env_shape);
> + curve = DEMANDINPUT_A(d_env_shape, i + 1);
> + shape = (int)DEMANDINPUT_A(d_env_shape, i + 1);
>
> // printf("shapes: %i \n", shape);
> if (sc_isnan(curve)) curve = unit->m_shape;
> @@ -948,7 +948,7 @@
>
> // new end level
>
> - double endLevel = DEMANDINPUT(d_env_level);
> + double endLevel =
> DEMANDINPUT_A(d_env_level, i + 1);
> // printf("levels: %f %f\n", level, endLevel);
> if (sc_isnan(endLevel)) {
> endLevel = unit->m_endLevel;
> @@ -1165,12 +1165,12 @@
> count = 0.f;
> }
> if (count <= 0.f) {
> - count = DEMANDINPUT(duty_dur) * sr + .5f + count;
> + count = DEMANDINPUT_A(duty_dur, i + 1) * sr +
> .5f + count;
> if(sc_isnan(count)) {
> int doneAction = (int)ZIN0(2);
> DoneAction(doneAction, unit);
> }
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if (sc_isnan(x)) x = 0.f;
> out[i] = x;
> @@ -1206,12 +1206,12 @@
> count = 0.f;
> }
> if (count <= 0.f) {
> - count = DEMANDINPUT(duty_dur) * sr + .5f + count;
> + count = DEMANDINPUT_A(duty_dur, i + 1) * sr +
> .5f + count;
> if(sc_isnan(count)) {
> int doneAction = (int)ZIN0(2);
> DoneAction(doneAction, unit);
> }
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if (sc_isnan(x)) x = 0.f;
> out[i] = x;
> @@ -1242,17 +1242,17 @@
> RESETINPUT(duty_level);
> RESETINPUT(duty_dur);
> count = 0.f;
> - reset = DEMANDINPUT(duty_reset) * sr + .5f + reset;
> + reset = DEMANDINPUT_A(duty_reset, i + 1) * sr
> + .5f + reset;
> } else {
> reset--;
> }
> if (count <= 0.f) {
> - count = DEMANDINPUT(duty_dur) * sr + .5f + count;
> + count = DEMANDINPUT_A(duty_dur, i + 1) * sr +
> .5f + count;
> if(sc_isnan(count)) {
> int doneAction = (int)ZIN0(2);
> DoneAction(doneAction, unit);
> }
> - float x = DEMANDINPUT(duty_level);
> + float x = DEMANDINPUT_A(duty_level, i + 1);
> //printf("in %d %g\n", k, x);
> if (sc_isnan(x)) x = 0.f;
> out[i] = x;
> @@ -1299,10 +1299,10 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_value = DEMANDINPUT(1);
> - unit->m_step = DEMANDINPUT(2);
> + unit->m_value = DEMANDINPUT_A(1, inNumSamples);
> + unit->m_step = DEMANDINPUT_A(2, inNumSamples);
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> OUT0(0) = NAN;
> @@ -1329,10 +1329,10 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_value = DEMANDINPUT(1);
> - unit->m_grow = DEMANDINPUT(2);
> + unit->m_value = DEMANDINPUT_A(1, inNumSamples);
> + unit->m_grow = DEMANDINPUT_A(2, inNumSamples);
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> OUT0(0) = NAN;
> @@ -1359,10 +1359,10 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_lo = DEMANDINPUT(1);
> - float hi = DEMANDINPUT(2);
> + unit->m_lo = DEMANDINPUT_A(1, inNumSamples);
> + float hi = DEMANDINPUT_A(2, inNumSamples);
> unit->m_range = hi - unit->m_lo;
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> @@ -1390,10 +1390,10 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_lo = (int32)floor(DEMANDINPUT(1) + 0.5f);
> - int32 hi = (int32)floor(DEMANDINPUT(2) + 0.5f);
> + unit->m_lo = (int32)floor(DEMANDINPUT_A(1,
> inNumSamples) + 0.5f);
> + int32 hi = (int32)floor(DEMANDINPUT_A(2,
> inNumSamples) + 0.5f);
> unit->m_range = hi - unit->m_lo + 1;
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> @@ -1421,11 +1421,11 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_lo = DEMANDINPUT(1);
> - unit->m_hi = DEMANDINPUT(2);
> - unit->m_step = DEMANDINPUT(3);
> + unit->m_lo = DEMANDINPUT_A(1, inNumSamples);
> + unit->m_hi = DEMANDINPUT_A(2, inNumSamples);
> + unit->m_step = DEMANDINPUT_A(3, inNumSamples);
> unit->m_val = unit->mParent->mRGen->frand() *
> (unit->m_hi - unit->m_lo) + unit->m_lo;
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> @@ -1454,11 +1454,11 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> - unit->m_lo = (int32)floor(DEMANDINPUT(1) + 0.5f);
> - unit->m_hi = (int32)floor(DEMANDINPUT(2) + 0.5f);
> - unit->m_step = (int32)floor(DEMANDINPUT(3) + 0.5f);
> + unit->m_lo = (int32)floor(DEMANDINPUT_A(1,
> inNumSamples) + 0.5f);
> + unit->m_hi = (int32)floor(DEMANDINPUT_A(2,
> inNumSamples) + 0.5f);
> + unit->m_step = (int32)floor(DEMANDINPUT_A(3,
> inNumSamples) + 0.5f);
> unit->m_val =
> unit->mParent->mRGen->irand(unit->m_hi - unit->m_lo + 1) + unit->m_lo;
> }
> if (unit->m_repeatCount >= unit->m_repeats) {
> @@ -1489,7 +1489,7 @@
> if (inNumSamples) {
> //Print(" unit->m_repeats %d\n", unit->m_repeats);
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> }
> while (true) {
> @@ -1509,7 +1509,7 @@
> unit->m_needToResetChild = false;
> RESETINPUT(unit->m_index);
> }
> - float x = DEMANDINPUT(unit->m_index);
> + float x =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> if (sc_isnan(x)) {
> unit->m_index++;
> unit->m_needToResetChild = true;
> @@ -1518,7 +1518,7 @@
> return;
> }
> } else {
> - OUT0(0) = IN0(unit->m_index);
> + OUT0(0) =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> //Print(" unit->m_index %d
> OUT0(0) %g\n", unit->m_index, OUT0(0));
> unit->m_index++;
> unit->m_needToResetChild = true;
> @@ -1546,7 +1546,7 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> }
> while (true) {
> @@ -1562,7 +1562,7 @@
> unit->m_needToResetChild = false;
> RESETINPUT(unit->m_index);
> }
> - float x = DEMANDINPUT(unit->m_index);
> + float x =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> if (sc_isnan(x)) {
> unit->m_index++;
> unit->m_repeatCount++;
> @@ -1601,7 +1601,7 @@
> if (inNumSamples) {
>
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> }
> while (true) {
> @@ -1614,7 +1614,7 @@
> unit->m_needToResetChild = false;
> RESETINPUT(unit->m_index);
> }
> - float x = DEMANDINPUT(unit->m_index);
> + float x =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> if (sc_isnan(x)) {
> unit->m_index =
> unit->mParent->mRGen->irand(unit->mNumInputs - 1) + 1;
> unit->m_repeatCount++;
> @@ -1624,7 +1624,7 @@
> return;
> }
> } else {
> - OUT0(0) = IN0(unit->m_index);
> + OUT0(0) =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> unit->m_index =
> unit->mParent->mRGen->irand(unit->mNumInputs - 1) + 1;
> unit->m_repeatCount++;
> unit->m_needToResetChild = true;
> @@ -1652,7 +1652,7 @@
> {
> if (inNumSamples) {
> if (unit->m_repeats < 0.) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_repeats = sc_isnan(x) ? 0.f : floor(x + 0.5f);
> }
> while (true) {
> @@ -1668,7 +1668,7 @@
> unit->m_needToResetChild = false;
> RESETINPUT(unit->m_index);
> }
> - float x = DEMANDINPUT(unit->m_index);
> + float x =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> if (sc_isnan(x)) {
> int newindex =
> unit->mParent->mRGen->irand(unit->mNumInputs - 2) + 1;
> unit->m_index = newindex <
> unit->m_index ? newindex : newindex + 1;
> @@ -1679,7 +1679,7 @@
> return;
> }
> } else {
> - OUT0(0) = IN0(unit->m_index);
> + OUT0(0) =
> DEMANDINPUT_A(unit->m_index, inNumSamples);
> int newindex =
> unit->mParent->mRGen->irand(unit->mNumInputs - 2) + 1;
> unit->m_index = newindex <
> unit->m_index ? newindex : newindex + 1;
> unit->m_repeatCount++;
> @@ -1708,14 +1708,14 @@
> void Dswitch1_next(Dswitch1 *unit, int inNumSamples)
> {
> if (inNumSamples) {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> if (sc_isnan(x)) {
> OUT0(0) = x;
> return;
> }
> int index = (int32)floor(x + 0.5f);
> index = sc_wrap(index, 0, unit->mNumInputs - 2) + 1;
> - OUT0(0) = DEMANDINPUT(index);
> + OUT0(0) = DEMANDINPUT_A(index, inNumSamples);
> } else {
> for (int i=0; i<unit->mNumInputs; ++i) {
> RESETINPUT(i);
> @@ -1736,10 +1736,10 @@
> int index;
> float ival;
> if (inNumSamples) {
> - float val = DEMANDINPUT(unit->m_index);
> + float val = DEMANDINPUT_A(unit->m_index, inNumSamples);
> printf("index: %i\n", (int) val);
> if(sc_isnan(val)) {
> - ival = DEMANDINPUT(0);
> + ival = DEMANDINPUT_A(0, inNumSamples);
>
> if(sc_isnan(ival)) {
> OUT0(0) = ival;
> @@ -1748,7 +1748,7 @@
>
> index = (int32)floor(ival + 0.5f);
> index = sc_wrap(index, 0, unit->mNumInputs - 2) + 1;
> - val = DEMANDINPUT(index);
> + val = DEMANDINPUT_A(unit->m_index, inNumSamples);
>
> RESETINPUT(unit->m_index);
> printf("resetting index: %i\n", unit->m_index);
> @@ -1761,7 +1761,7 @@
> for (int i=0; i<unit->mNumInputs; ++i) {
> RESETINPUT(i);
> }
> - index = (int32)floor(DEMANDINPUT(0) + 0.5f);
> + index = (int32)floor(DEMANDINPUT_A(0, inNumSamples) + 0.5f);
> index = sc_wrap(index, 0, unit->mNumInputs - 1) + 1;
> unit->m_index = index;
> }
> @@ -1786,7 +1786,7 @@
> if (unit->m_bufcounter == unit->mWorld->mBufCounter) {
> OUT0(0) = unit->m_prev;
> } else {
> - float x = DEMANDINPUT(0);
> + float x = DEMANDINPUT_A(0, inNumSamples);
> unit->m_prev = x;
> OUT0(0) = x;
> }
> @@ -1846,7 +1846,7 @@
> {
> if (ISDEMANDINPUT(1))
> {
> - float x = DEMANDINPUT(1);
> + float x = DEMANDINPUT_A(1, inNumSamples);
> if (sc_isnan(x)) {
> OUT0(0) = NAN;
> return; //x = 0.0;
> --
>
>
>
>
>
> .
> _______________________________________________
> Sc-devel mailing list
> Sc-devel@xxxxxxxxxxxxxxx
> http://lists.create.ucsb.edu/mailman/listinfo/sc-devel
>
>
>
--
http://www.mcld.co.uk