1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
Done : UGen {
// aliases for UGen doneActions
const <none = 0;
const <pauseSelf = 1;
const <freeSelf = 2;
const <freeSelfAndPrev = 3;
const <freeSelfAndNext = 4;
const <freeSelfAndFreeAllInPrev = 5;
const <freeSelfAndFreeAllInNext = 6;
const <freeSelfToHead = 7;
const <freeSelfToTail = 8;
const <freeSelfPausePrev = 9;
const <freeSelfPauseNext = 10;
const <freeSelfAndDeepFreePrev = 11;
const <freeSelfAndDeepFreeNext = 12;
const <freeAllInGroup = 13;
const <freeGroup = 14;
const <freeSelfResumeNext = 15;
*kr { arg src;
^this.multiNew('control', src)
}
}
FreeSelf : UGen {
*kr { arg in;
this.multiNew('control', in);
^in
}
}
PauseSelf : UGen {
*kr { arg in;
this.multiNew('control', in);
^in
}
}
FreeSelfWhenDone : UGen {
*kr { arg src;
^this.multiNew('control', src)
}
}
PauseSelfWhenDone : UGen {
*kr { arg src;
^this.multiNew('control', src)
}
}
Pause : UGen {
*kr { arg gate, id;
^this.multiNew('control', gate, id)
}
}
Free : UGen {
*kr { arg trig, id;
^this.multiNew('control', trig, id)
}
}
EnvGen : UGen { // envelope generator
*ar { arg envelope, gate = 1.0, levelScale = 1.0, levelBias = 0.0, timeScale = 1.0, doneAction = 0;
envelope = this.convertEnv(envelope);
^this.multiNewList(['audio', gate, levelScale, levelBias, timeScale, doneAction, envelope])
}
*kr { arg envelope, gate = 1.0, levelScale = 1.0, levelBias = 0.0, timeScale = 1.0, doneAction = 0;
envelope = this.convertEnv(envelope);
^this.multiNewList(['control', gate, levelScale, levelBias, timeScale, doneAction, envelope])
}
*convertEnv { arg env;
if(env.isSequenceableCollection) {
if (env.shape.size == 1) {
^env.reference
} {
// multi-channel envelope
^env.collect(_.reference)
};
};
^env.asMultichannelArray.collect(_.reference).unbubble
}
*new1 { arg rate, gate, levelScale, levelBias, timeScale, doneAction, envArray;
^super.new.rate_(rate).addToSynth.init([gate, levelScale, levelBias, timeScale, doneAction]
++ envArray.dereference);
}
init { arg theInputs;
// store the inputs as an array
inputs = theInputs;
}
argNamesInputsOffset { ^2 }
}
Linen : UGen {
*kr { arg gate = 1.0, attackTime = 0.01, susLevel = 1.0, releaseTime = 1.0, doneAction = 0;
^this.multiNew('control', gate, attackTime, susLevel, releaseTime, doneAction)
}
}
|