File: Done.schelp

package info (click to toggle)
supercollider 1%3A3.6.6~repack-2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 23,792 kB
  • ctags: 25,269
  • sloc: cpp: 177,129; lisp: 63,421; ansic: 11,297; python: 1,787; perl: 766; yacc: 311; sh: 286; lex: 181; ruby: 173; makefile: 168; xml: 13
file content (62 lines) | stat: -rw-r--r-- 1,560 bytes parent folder | download | duplicates (2)
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
class:: Done
summary:: Monitors another UGen to see when it is finished
related:: Classes/FreeSelfWhenDone, Classes/PauseSelfWhenDone, Reference/UGen-doneActions
categories::  UGens>Synth control

Description::

Some UGens set a 'done' flag when they are finished playing. This UGen echoes that flag when it is set to track a particular UGen.

The UGens trackable by Done are:
list::
## link::Classes/PlayBuf::
## link::Classes/RecordBuf::
## link::Classes/Line::
## link::Classes/XLine::
## link::Classes/EnvGen::
## link::Classes/Linen::
## link::Classes/BufRd::
## link::Classes/BufWr::
## link::Classes/Dbufrd::
## link::Classes/Dbufwr::
## link::Classes/DiskIn::
## link::Classes/VDiskIn::
## link::Classes/Demand::
::

classmethods::
private:: categories

method::kr

argument::src

UGen to monitor

examples::
The 'done' flag can be used to trigger other things in the same synth:
code::
(
SynthDef("Done-help", { arg out, t_trig;
	var line, a, b;

	line= Line.kr(1,0,1);

	a= SinOsc.ar(440,0,0.1*line); //sound fading out
	b= WhiteNoise.ar(Done.kr(line)*0.1); //noise starts at end of line

	Out.ar(out, Pan2.ar(a+b));
}).send(s);
)

Synth("Done-help"); //note that this synth doesn't have it's own doneAction, so you'll need to manually deallocate it
::
The 'done' flag can be used to trigger a delayed freeing of the current synth, which is not possible by using link::Reference/UGen-doneActions:: :
code::
play {
    var env = Line.kr(1,0,2);
    var sig = PinkNoise.ar(env);
    FreeSelf.kr(TDelay.kr(Done.kr(env),3));
    GVerb.ar(sig,70,7);
}
::