36 lines
775 B
Python
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;
|
|
}
|
|
} |