class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / Poll.schelp
blob32046af510db36687c82a156303ef62c7e73a695
1 class:: Poll
2 categories:: UGens>Info
3 summary:: Print the current output value of a UGen
4 related:: Classes/SendTrig, Classes/OSCFunc
6 description::
8 Print the current output value of a UGen, useful for debugging SynthDefs.
10 WARNING:: Printing values from the Server in intensive for the CPU. Poll should be used for debugging purposes.
12 classmethods::
13 private:: categories, new, new1
15 method:: ar, kr
16 argument::trig
17 a non-positive to positive transition telling Poll to return a value
18 argument::in
19 the signal you want to poll
20 argument::label
21 a string or symbol to be printed with the polled value
22 argument::trigid
23 if greater then 0, a '/tr' message is sent back to the client (similar to SendTrig)
25 returns:: its in signal (and is therefore transparent).
27 instancemethods::
28 private:: checkInputs, init
30 examples::
31 code::
32 s.boot;
34 { Poll.kr(Impulse.kr(10), Line.kr(0, 1, 1), \test) }.play(s);
36 // multichannel expansion:
38 { Poll.kr(Impulse.kr([10, 5]), Line.kr(0, [1, 5], [1, 2]), [\test, \test2]) }.play(s);
42 // using the poll message:
44 { SinOsc.ar(375, 0, 1).poll(Impulse.ar(20), \test2) }.play(s);
46 // if no arguments are given, the poll is done every 0.1 sec.
47 {  Line.kr(0, 1, 1).poll }.play(s);
50 // send a '/tr' message back to the client. This can be useful if the server runs on another
51 // computer than the client, i.e. the post messages by the server cannot be read locally.
53 o = OSCFunc({arg msg; msg.postln;}, '/tr', s.addr);
55 {Poll.ar(Impulse.ar(5), Line.ar(0, 1, 1), \test2, 1234)}.play(s);
56 {SinOsc.ar(220, 0, 1).poll(Impulse.ar(15), "test", 1234)}.play(s);
58 o.free;
59 s.quit;
64 // This example will kill the server (by outputting NaN).
65 // Poll.ar will help us spot why it's happening.
66 // Warning: You may need to reboot your server after running this.
69 var cutoff, son;
70 cutoff = LFPar.kr(0.2, 0, 500, 500);
71 son = LPF.ar(WhiteNoise.ar, cutoff);
73 // Using Poll to debug by spitting out a value if the output hits NaN
74 Poll.ar(if((son<=0)||(son>=0), 0, 1), cutoff, "Cutoff value which causes NaN:");
76 son;
78 }.play(s);
82 // This example polls when someone hits the trigger
84 x = {|t_poll=0|
85 var minfreq, maxfreq, son;
86 minfreq = LFNoise2.ar(0.25, 100, 110);
87 maxfreq = LFNoise2.ar(0.25, 200, 220);
89 son = Gendy1.ar(minfreq: minfreq, maxfreq: maxfreq, mul: 0.1);
91 Poll.kr(t_poll, [minfreq, maxfreq], ["minfreq", "maxfreq"]);
93 son;
95 }.play(s);
98 x.set(\t_poll, 1); // Hit this whenever you want to know what the parameters are