[chuck-users] feedback loop

Tom Lieber tom at alltom.com
Sat Oct 1 04:05:50 EDT 2011


On Sat, Oct 1, 2011 at 3:23 AM, Tomtom <tomtom at herbesfolles.org> wrote:
>>   SinOsc s => Dyno d => dac;
>>   100 => s.gain;
>>   0 => d.slopeAbove;
>>   1 => d.slopeBelow;
>>   1 => d.thresh;
>>   0::ms => d.attackTime;
>>   0::ms => d.releaseTime;
>>   day => now;
>
> Unfortunately, this does not have the expected behaviour.
>
>  note();
>  while (1){
>       1::samp => now;
>       <<< d.last() >>> ;
>  }
>
> this will show values oscillating between -1 and -X, with X moving to
> -infinity.

Ah, you're right. Things looked fine when I checked in Audacity, but I
forgot Audacity clips to [-1, 1] when it opens files anyway.

I checked Dyno's source and it works differently than I imagined.

  double slope = d->xd > d->thresh ? d->slopeAbove : d->slopeBelow;
  double f = slope == 1.0 ? 1.0 : pow( d->xd / d->thresh, slope - 1.0 );
  *out = f * in;

I haven't been able to find a way to do what you want.

> You are right, it can be simply done manually within the shred, but the
> performance cost is pretty high, isn't it ?

Maybe; I've rarely needed to optimize ChucK scripts, so I'm not the
best person to answer this. :D

-- 
Tom Lieber
http://AllTom.com/
http://infinite-sketchpad.com/


More information about the chuck-users mailing list