This file is indexed.

/usr/share/SuperCollider/HelpSource/Classes/ProxyMixer.schelp is in supercollider-common 1:3.8.0~repack-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
class:: ProxyMixer
summary:: mix control for a proxyspace or Ndef.all
categories:: Libraries>JITLib>GUI, Live Coding
related:: Classes/ProxySpace, Classes/Ndef, Classes/JITGui, Classes/NdefGui, Classes/MonitorGui, Classes/NdefParamGui

description::

ProxyMixer provides controls for handling and editing the node proxies in a proxyspace and their monitors (cross-platform graphics). It replaces the earlier ProxyMixer class. For Ndefs, use link::Classes/NdefMixer::.

Overview: link::Overviews/JITLib::

code::

// First examples:
(
p = ProxySpace.push(s.boot, p);
"abcde".do { |k| p[k.asSymbol].ar };
m = ProxyMixer(p, 8);
n.parent.alwaysOnTop_(true); // show mixer in front of IDE
)

p.do(_.play(0));
m.object_(nil);
m.object_(p);

// if you have JITLibExtensions installed, try ProxyMeter to see the proxy levels:
if (\ProxyMeter.asClass.notNil) { ProxyMeter.addMixer(m); };


"abcdefghijk".do { |k| p[k.asSymbol].ar };

"lmnopqrtuvw".do { |k| p[k.asSymbol].kr };

"abcdefghijk".do { |k, i|
	p[k.asSymbol].playN(vol: 0.8 - (0.1 * i) );
	p[k.asSymbol].source = {
		VarSaw.ar((i + 1 * 100) + [-1, 1])
		* LFSaw.ar((i + 1 * 0.25));
	};
};
::

ClassMethods::

subsection::Creation

method::new

argument::obj
the proxyspace to show and control

argument::numItems
how many ar and kr proxies can be shown

argument::parent
by default nil, so a window is made automatically. if a parent is supplied, the ProxyMixer will be shown there.

argument::bounds
window bounds - default is nil, so it determines it size.

argument::makeSkip
a flag whether to make make a skipjack

argument::options
additional settings - currently none provided.

method::small
like *new, but creates a proxyMixer for small screen sizes.


InstanceMethods::

subsection::Instance variables

strong::GUI areas and elements: ::
method::arZone, krZone, editZone, arGuis, krGuis, editGui, arScroller, krScroller

strong::current state and access methods: ::
method::proxyspace, existingProxies, activeProxies, playingProxies, selectedKeys, arNames, krNames, numArs, numKrs, atAr, atKr

subsection::Instance methods

method:: highlight, unhighlight
highlight and unhighlight an arGui slot in the arZone (left)
method:: highlightSlots
highlight a block of the arGuis in the arZone/

method::sizes, switchSize
switch between display modes 0: ar, 1: ar+kr, 2: ar+kr+ed

method::arKeysRotation, krKeysRotation
if too many proxies are present, by how much to rotate arKeys or krKeys to display.

method:: title
get the proxymixer window title.


method:: getNameLeftBorder, setNameLeftBorder, shiftNameLeftBorder
trade nameView size and volume slider size:
code::
m.getNameLeftBorder; // get its current left border position
m.setNameLeftBorder(250); // default
m.setNameLeftBorder(200); // aps left pos, smaller slider
// relative adjust:
m.shiftNameLeftBorder(10);
m.shiftNameLeftBorder(-10);

strong::standard JITGui methods: ::
method:: setDefaults, accepts, getState, checkUpdate

strong::internal - making the ProxyMixer gui elements: ::
method:: makeViews, makeTopLine, makeArZone, makeKrZone, makeEditZone, setEdButs

Examples::

code::

// make a proxyspace and 5 ar proxies, and a mixer to show them
(
p = ProxySpace.push(s.boot, p);
"abcde".do { |k| p[k.asSymbol].ar };
m = ProxyMixer(p, 8);
p.do(_.play(0));
)

m.object_(nil); // no object
m.object_(p);   // the proxyspace

// if you have JITLibExtensions installed, try ProxyMeter to see the proxy levels:
if (\ProxyMeter.asClass.notNil) { ProxyMeter.addMixer(m); };

    // make too many ar proxies, get a scroller
"abcdefghijk".do { |k| p[k.asSymbol].ar };

    // make too many kr proxies, get a scroller
"lmnopqrtuvw".do { |k| p[k.asSymbol].kr };

p.stop;
    // play some of them
m.arNames.scramble.keep(5).do { |k| p[k.asSymbol].playN };

    // the top left menu sets which proxies will be shown.

        // existingProxies: even an empty proxy is shown
~test.ar;

(        // activeProxies: proxy appears when it is alive
~test = { |freq=250, intv=19, timescale=1, curve=0, loopnode=0|
    var env = EnvGen.kr(
        Env({ 1.0.rand2 }!11, {1.0.rand}!10, curve, releaseNode: 9, loopNode: loopnode),
        timeScale: timescale);
    var pitch = (env * [1, 0.33, -1] * intv).midiratio * freq;
    Splay.ar(Formant.ar(pitch, pitch.scramble * 2, pitch.scramble)) * 0.1;
};
)
~test.lag(\freq, 4);

        // playingProxies : only those that really play are shown.
~test.playN(vol: 1);

// switch back to active proxies...
        // the reduce button removes all proxies that are not playing
        // and that are not used as sources in other proxies:
~otto = { |dens=12| Dust.ar(dens) };

~otto.clear;        // remove it
p.reduce;

        // doc and docSel post the current proxyspace as code
p.document;

        // ProxyMixer has three preset widths:
m.switchSize(0);    // ar zone only
m.switchSize(1);    // ar + kr
m.switchSize(2);    // ar + kr + edit zone

        // try with a small ProxyMixer:
l = ProxyMixer.small(p, 8);
l.switchSize(0, true);    // ar zone only
l.switchSize(1, true);    // ar + kr
l.switchSize(2, true);    // ar + edit zone

        // Record opens a utility window, RecordProxyMixer.
        // this requires the JITLibExtensions quark.

    // the line of controls for one proxy and its monitor is
    // a ProxyMonitorGui, so for full details see ProxyMonitorGui.help.

    // it displays current volume,
~test.vol_(0.05);
~test.vol_(0.1);

    // proxy name; play/stop/end control:
~test.playN;        // playN as is
~test.stop;        // stop
~test.end;        // option-click on stop : end the monitor and the proxy itself.
~test.playN(vol: 0);    // option-click on play : start playing with volume zero.

~test.playNDialog;  // shift-click on play/stop: set multichan outputs from code


s.scope(8);
~test.playN(4);    // set proxy's first output channel:
~test.playN(0);

// One can move the border between sliders and nameView:

n.enableNameResize(true);	// try click and dragging that border now

n.setNameLeftBorder(200);   // or set by code

    //    paus/rsum toggles pause and resume:
~test.pause;
~test.resume;

    // send button resends the proxy,
    // option-click on send rebuilds the proxy
    // (e.g. for lookup in client-site state)
~test.send;
~test.send;
~test.rebuild;
~test.rebuild;


    // the ed button sends this proxy to the editor - see below

        // kr proxies show up in the middle
~lfo = { SinOsc.kr(2) };
~lfnoyz0 = { |lofreq = 0.5, mul=1, add| LFDNoise0.kr(lofreq, mul, add) };

        // the editor zone is a NodeProxyEditor
        // open it and set some params
m.switchSize(2);
m.editGui.object_(~test);
~test.set(\freq, exprand(80, 1250));    // set ~tests parameters
~test.set(\intv, 1.0.linrand);

    //    if you declare global specs for the range of a parameter,
    //    they can be used in the editor:
m.editGui.paramGui.specs.clear;

Spec.add(\intv, [0, 36, \lin]);
Spec.add(\timescale, [0.001, 10, \exp]);
Spec.add(\loopnode, [0, 7, \lin, 1]);
Spec.add(\curve, [-10, 10]);

m.editGui.object_(~test);

        // you can map a kr proxy to a control param;
~test.map(\intv, ~lfnoyz0);
~test.unmap(\intv);
        // this also works by dragging the kr proxy name
        // the field left of the param name.


p.reduce(method: \clear);

p.clean;

p.clear;

::