Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / SCClassLibrary / Common / Audio / Pan.sc
blob57182bd456f7d1335b9129d10959ebde44f21a7e
1 Pan2 : MultiOutUGen {
2         *ar { arg in, pos = 0.0, level = 1.0;
3                 ^this.multiNew('audio', in, pos, level )
4         }
5         *kr { arg in, pos = 0.0, level = 1.0;
6                 ^this.multiNew('control', in, pos, level )
7         }
8         init { arg ... theInputs;
9                 inputs = theInputs;
10                 channels = [
11                         OutputProxy(rate, this, 0),
12                         OutputProxy(rate, this, 1)
13                 ];
14                 ^channels
15         }
16         checkInputs { ^this.checkNInputs(1) }
19 LinPan2 : Pan2 {}
21 Pan4 : MultiOutUGen {
22         *ar { arg in, xpos = 0.0, ypos = 0.0, level = 1.0;
23                 ^this.multiNew('audio', in, xpos, ypos, level )
24         }
25         *kr { arg in, xpos = 0.0, ypos = 0.0, level = 1.0;
26                 ^this.multiNew('control', in, xpos, ypos, level )
27         }
28         init { arg ... theInputs;
29                 inputs = theInputs;
30                 channels = [ OutputProxy(rate,this, 0), OutputProxy(rate,this, 1),
31                                         OutputProxy(rate,this, 2), OutputProxy(rate,this, 3) ];
32                 ^channels
33         }
34         checkInputs { ^this.checkNInputs(1) }
37 Balance2 : MultiOutUGen {
39         *ar { arg left, right, pos = 0.0, level = 1.0;
40                 ^this.multiNew('audio', left, right, pos, level )
41         }
42         *kr { arg left, right, pos = 0.0, level = 1.0;
43                 ^this.multiNew('control', left, right, pos, level )
44         }
45         init { arg ... theInputs;
46                 inputs = theInputs;
47                 channels = [
48                         OutputProxy(rate, this, 0),
49                         OutputProxy(rate, this, 1)
50                 ];
51                 ^channels
52         }
53         checkInputs { ^this.checkNInputs(2) }
56 Rotate2 : MultiOutUGen {
57         *ar { arg x, y, pos = 0.0;
58                 ^this.multiNew('audio', x, y, pos )
59         }
60         *kr { arg x, y, pos = 0.0;
61                 ^this.multiNew('control', x, y, pos )
62         }
63         init { arg ... theInputs;
64                 inputs = theInputs;
65                 channels = [
66                         OutputProxy(rate, this, 0),
67                         OutputProxy(rate, this, 1)
68                 ];
69                 ^channels
70         }
71         checkInputs { ^this.checkNInputs(2) }
74 PanB : MultiOutUGen {
75         *ar { arg in, azimuth=0, elevation=0, gain=1;
76                 ^this.multiNew('audio', in, azimuth, elevation, gain )
77         }
78         *kr { arg in, azimuth=0, elevation=0, gain=1;
79                 ^this.multiNew('control', in, azimuth, elevation, gain )
80         }
81         init { arg ... theInputs;
82                 inputs = theInputs;
83                 channels = [ OutputProxy(rate,this,0), OutputProxy(rate,this,1),
84                                         OutputProxy(rate,this,2), OutputProxy(rate,this,3) ];
85                 ^channels
86         }
87         checkInputs { ^this.checkNInputs(1) }
90 PanB2 : MultiOutUGen {
91         *ar { arg in, azimuth=0, gain=1;
92                 ^this.multiNew('audio', in, azimuth, gain )
93         }
94         *kr { arg in, azimuth=0, gain=1;
95                 ^this.multiNew('control', in, azimuth, gain )
96         }
97         init { arg ... theInputs;
98                 inputs = theInputs;
99                 channels = [ OutputProxy(rate,this,0), OutputProxy(rate,this,1),
100                                         OutputProxy(rate,this,2) ];
101                 ^channels
102         }
103         checkInputs { ^this.checkNInputs(1) }
106 BiPanB2 : MultiOutUGen {
107         *ar { arg inA, inB, azimuth, gain=1;
108                 ^this.multiNew('audio', inA, inB, azimuth, gain )
109         }
110         *kr { arg inA, inB, azimuth, gain=1;
111                 ^this.multiNew('control', inA, inB, azimuth, gain )
112         }
113         init { arg ... theInputs;
114                 inputs = theInputs;
115                 channels = [ OutputProxy(rate,this,0), OutputProxy(rate,this,1),
116                                         OutputProxy(rate,this,2) ];
117                 ^channels
118         }
119         checkInputs { ^this.checkNInputs(2) }
122 DecodeB2 : MultiOutUGen {
123         *ar { arg numChans, w, x, y, orientation = 0.5;
124                 ^this.multiNew('audio', numChans, w, x, y, orientation = 0.5 )
125         }
126         *kr { arg numChans, w, x, y, orientation = 0.5;
127                 ^this.multiNew('control', numChans, w, x, y, orientation = 0.5 )
128         }
129         init { arg numChans ... theInputs;
130                 inputs = theInputs;
131                 channels = Array.fill(numChans, { arg i; OutputProxy(rate,this, i) });
132                 ^channels
133         }
134         checkInputs { ^this.checkNInputs(3) }
137 PanAz : MultiOutUGen {
138         *ar { arg numChans, in, pos = 0.0, level = 1.0, width = 2.0, orientation = 0.5;
139                 ^this.multiNew('audio', numChans, in, pos, level, width, orientation )
140         }
141         *kr { arg numChans, in, pos = 0.0, level = 1.0, width = 2.0, orientation = 0.5;
142                 ^this.multiNew('control', numChans, in, pos, level, width, orientation )
143         }
144         init { arg numChans ... theInputs;
145                 inputs = theInputs;
146                 channels = Array.fill(numChans, { arg i; OutputProxy(rate,this, i) });
147                 ^channels
148         }
149         checkInputs { ^this.checkNInputs(1) }
153 XFade2 : UGen {
154         // equal power two channel cross fade
155         *ar { arg inA, inB = 0.0, pan = 0.0, level = 1.0;
156                 ^this.multiNew('audio', inA, inB, pan, level)
157         }
158         *kr { arg inA, inB = 0.0, pan = 0.0, level = 1.0;
159                 ^this.multiNew('control', inA, inB, pan, level)
160         }
161         checkInputs { ^this.checkNInputs(2) }
164 LinXFade2 : UGen {
165         // linear two channel cross fade
166         *ar { arg inA, inB = 0.0, pan = 0.0, level = 1.0;
167                 ^this.multiNew('audio', inA, inB, pan) * level
168         }
169         *kr { arg inA, inB = 0.0, pan = 0.0, level = 1.0;
170                 ^this.multiNew('control', inA, inB, pan) * level
171         }
172         checkInputs { ^this.checkNInputs(2) }