2 *ar { arg start=0.0, end = 1.0, dur = 1.0, mul = 1.0, add = 0.0, doneAction = 0;
3 ^this.multiNew('audio', start, end, dur, doneAction).madd(mul, add)
5 *kr { arg start=0.0, end = 1.0, dur = 1.0, mul = 1.0, add = 0.0, doneAction = 0;
6 ^this.multiNew('control', start, end, dur, doneAction).madd(mul, add)
11 *ar { arg start=1.0, end = 2.0, dur = 1.0, mul = 1.0, add = 0.0, doneAction = 0;
12 ^this.multiNew('audio', start, end, dur, doneAction).madd(mul, add)
14 *kr { arg start=1.0, end = 2.0, dur = 1.0, mul = 1.0, add = 0.0, doneAction = 0;
15 ^this.multiNew('control', start, end, dur, doneAction).madd(mul, add)
20 checkInputs { ^this.checkSameRateAsFirstInput }
21 *ar { arg in=0.0, srclo = 0.0, srchi = 1.0, dstlo = 1.0, dsthi = 2.0;
22 ^this.multiNew('audio', in, srclo, srchi, dstlo, dsthi)
24 *kr { arg in=0.0, srclo = 0.0, srchi = 1.0, dstlo = 1.0, dsthi = 2.0;
25 ^this.multiNew('control', in, srclo, srchi, dstlo, dsthi)
30 *ar { arg in=0.0, srclo = 0.0, srchi = 1.0, dstlo = 1.0, dsthi = 2.0;
31 var scale = (dsthi - dstlo) / (srchi - srclo);
32 var offset = dstlo - (scale * srclo);
34 ^MulAdd(in, scale, offset)
36 *kr { arg in=0.0, srclo = 0.0, srchi = 1.0, dstlo = 1.0, dsthi = 2.0;
37 var scale = (dsthi - dstlo) / (srchi - srclo);
38 var offset = dstlo - (scale * srclo);
40 ^(in * scale + offset)
45 *ir { arg freq = 60.midicps, root = 60.midicps, exp = 0.3333;
46 ^this.multiNew('scalar', freq, root, exp)
48 *ar { arg freq = 60.midicps, root = 60.midicps, exp = 0.3333;
49 ^this.multiNew('audio', freq, root, exp)
51 *kr { arg freq = 60.midicps, root = 60.midicps, exp = 0.3333;
52 ^this.multiNew('control', freq, root, exp)
54 checkInputs { ^if(rate === \audio) { this.checkSameRateAsFirstInput } }
58 *ir { arg freq = 1000, root = 0, minAmp = 0.32, rootAmp = 1.0;
59 ^this.multiNew('scalar', freq, root, minAmp, rootAmp)
61 *ar { arg freq = 1000, root = 0, minAmp = 0.32, rootAmp = 1.0;
62 ^this.multiNew('audio', freq, root, minAmp, rootAmp)
64 *kr { arg freq = 1000, root = 0, minAmp = 0.32, rootAmp = 1.0;
65 ^this.multiNew('control', freq, root, minAmp, rootAmp)
69 K2A : PureUGen { // control rate to audio rate converter
71 ^this.multiNew('audio', in)
75 A2K : PureUGen { // audio rate to control rate converter. only needed in specific cases
77 ^this.multiNew('control', in)
81 T2K : A2K { // audio rate to control rate trigger converter.
83 if(inputs.at(0).rate != \audio) {
84 ^"first input is not audio rate"
90 T2A : K2A { // control rate to audio rate trigger converter.
91 *ar { arg in = 0.0, offset = 0;
92 ^this.multiNew('audio', in, offset)
98 ^this.multiNew('audio', in)
101 ^this.multiNew('control', in)
103 init { arg ... argInputs;
105 ^this.initOutputs(inputs.size, rate)
110 *ar { arg numChannels = 1;
112 if (numChannels == 1) {