QcPenPrinter: no need to allocate QPrintDialog on heap
[supercollider.git] / HelpSource / Classes / GrainBuf.schelp
blob1f4b2795e7ad605be93332df700f3facbe976418
1 class:: GrainBuf
2 summary:: Granular synthesis with sound stored in a buffer
3 categories:: UGens>Buffer, UGens>Generators>Granular
4 related:: Classes/GrainIn, Classes/GrainFM, Classes/GrainSin
6 classmethods::
7 private:: categories
9 method:: ar
11 argument:: numChannels
12 the number of channels to output. If 1, mono is returned and pan is ignored.
14 argument:: trigger
15 a kr or ar trigger to start a new grain. If ar, grains after the start of the synth are sample accurate.
17 argument:: dur
18 size of the grain (in seconds).
20 argument:: sndbuf
21 the buffer holding a mono audio signal. If using multi-channel files, use Buffer.readChannel.
23 argument:: rate
24 the playback rate of the sampled sound
26 argument:: pos
27 the playback position for the grain to start with (0 is beginning, 1 is end of file)
29 argument:: interp
30 the interpolation method used for pitchshifting grains:
31 list::
32 ## 1 = no interpolation
33 ## 2 = linear
34 ## 4 = cubic interpolation (more computationally intensive)
37 argument:: pan
38 determines where to pan the output.
39 list::
40 ## If numChannels = 1, no panning is done.
41 ## If numChannels = 2, panning is similar to Pan2.
42 ## If numChannels > 2, pannins is the same as PanAz.
45 argument:: envbufnum
46 the buffer number containing a singal to use for the grain envelope. -1 uses a built-in Hann envelope.
48 argument:: maxGrains
49 the maximum number of overlapping grains that can be used at a given time. This value is set at the UGens init time and can't be modified. Defaults to 512. This can be set lower for more efficient use of memory.
51 warning:: The above parameter is new (post SC 3.3.1) and has the potential to break code written <= 3.3.1. This parameter is BEFORE the mul slot, and you may need to update code to account for this difference. ::
53 discussion:: All args except numChannels and trigger are polled at grain creation time.
54 instancemethods::
55 private:: init, argNamesInputsOffset
57 examples::
58 code::
59 s.boot;
62 var winenv;
64 b = Buffer.read(s, Help.dir +/+ "sounds/a11wlk01-44_1.aiff");
65 // a custom envelope
66 winenv = Env([0, 1, 0], [0.5, 0.5], [8, -8]);
67 z = Buffer.sendCollection(s, winenv.discretize, 1);
69 SynthDef(\buf_grain_test, {arg gate = 1, amp = 1, sndbuf, envbuf;
70         var pan, env, freqdev;
71         // use mouse x to control panning
72         pan = MouseX.kr(-1, 1);
73         env = EnvGen.kr(
74                 Env([0, 1, 0], [1, 1], \sin, 1),
75                 gate,
76                 levelScale: amp,
77                 doneAction: 2);
78         Out.ar(0,
79                 GrainBuf.ar(2, Impulse.kr(10), 0.1, sndbuf, LFNoise1.kr.range(0.5, 2),
80                         LFNoise2.kr(0.1).range(0, 1), 2, pan, envbuf) * env)
81         }).send(s);
85 // use built-in env
86 x = Synth(\buf_grain_test, [\sndbuf, b, \envbuf, -1])
88 // switch to the custom env
89 x.set(\envbuf, z)
90 x.set(\envbuf, -1);
92 x.set(\gate, 0);