initial commit
This commit is contained in:
36
extensions/Track/classes/fadable.sc
Normal file
36
extensions/Track/classes/fadable.sc
Normal file
@ -0,0 +1,36 @@
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user