class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / Unpack1FFT.schelp
blob0ceac97e0f5efa34821a8085f62600a8dfb1e568
1 class:: Unpack1FFT
2 summary:: Unpack a single value (magnitude or phase) from an FFT chain
3 categories:: UGens>FFT
4 related:: Classes/PackFFT, Classes/UnpackFFT
7 Unpack1FFT(chain, bufsize, binindex, whichmeasure=0)
9 description::
10 Takes an FFT chain and extracts a single scalar value as a demand-rate stream. To call it you need a "demander" which fires whenever the FFT chain fires - this is normally achieved using link::Classes/PackFFT:: but can also be done using link::Classes/Demand::.
12 Note::
13 The main purpose of this UGen is as a component in pvcollect, pvcalc, and pvcalc2 processes. You're welcome to use it on its own - the example below shows basic usage. But most people won't typically need to use it directly.
16 classmethods::
17 private:: categories
19 method:: new
21 argument:: chain
22 an FFT chain
23 argument:: bufsize
24 the size of the expected input FFT frames
25 argument:: binindex
26 the integer index of the bin you want to query
27 argument:: whichmeasure
28 0 for magnitude and 1 for phase. None of these arguments can be modulated.
30 examples::
31 code::
33 s.boot.doWhenBooted{
34         c = Buffer.read(s, Help.dir +/+ "sounds/a11wlk01.wav");
38 // Let's extract the DC component - i.e. the magnitude at index zero.
40 x = {
41         var fftsize = 1024;
42         var sig, chain, unp;
43         sig = PlayBuf.ar(1, c, BufRateScale.kr(c), loop: 1);
44         chain = FFT(LocalBuf(fftsize), sig);
46         unp = Unpack1FFT(chain, b.numFrames, 0, 0);
48         // Demand some data from the unpacker
49         Demand.kr(chain>=0, 0, unp).poll(chain>=0, "unpacked value");
51         (sig*0.1).dup;
52 }.play(s);
54 x.free;