1
0
Files
scoobidules/extensions/Track/classes/fadable.sc
2025-02-26 07:36:13 +01:00

36 lines
775 B
Python

// object provides fading ability and levels
Fadable {
var track, level;
fade {
// exponential fading level toward <target> during <time> seconds
// TODO: what if another fade routine is ongoing? => mischief
|target, time|
r {
var rate = 1 / time * 0.05;
while({((level - target).abs >= 0.01 )}, {
if(
(level >= target),
{
// fade out
level = level - (rate.exp - 1);
if((level < target), { level = target; });
},
{
// fade in
level = level + (rate.exp - 1);
if((level > target), { level = target; });
});
0.05.wait;
track.set(\amp, level);
});
}.play;
}
level_ {
|amp|
level = amp;
track.set(\amp, level);
^this
// ("Amplitude in set to " << amp << "sec").postln;
}
}