sclang: ServerShmInterface - try to avoid multiple destructor calls
[supercollider.git] / HelpSource / Classes / PitchShift.schelp
blob99c09d808ae2beedbc20f8a6c7b2895284ca74ef
1 class:: PitchShift
2 summary:: Time domain pitch shifter.
3 categories::  UGens>Filters>Pitch
6 Description::
8 A time domain granular pitch shifter. Grains have a triangular amplitude
9 envelope and an overlap of 4:1.
12 classmethods::
14 method::ar
16 argument::in
18 The input signal.
21 argument::windowSize
23 The size of the grain window in seconds. This value cannot be
24 modulated.
27 argument::pitchRatio
29 The ratio of the pitch shift. Must be from 0 to 4.
32 argument::pitchDispersion
34 The maximum random deviation of the pitch from the
36 code::pitchRatio:: .
39 argument::timeDispersion
41 A random offset of from zero to
43 code::timeDispersion::  seconds is added to the
44 delay of each grain. Use of some dispersion can alleviate a hard
45 comb filter effect due to uniform grain placement. It can also be
46 an effect in itself.
47 code::timeDispersion::  can be
48 no larger than
49 code::windowSize:: .
52 argument::mul
54 Output will be multiplied by this value.
57 argument::add
59 This value will be added to the output.
62 Examples::
64 code::
67 play({
68         z = Blip.ar(800, 6, 0.1);
69         PitchShift.ar(z, 0.02, Line.kr(0.1,4,20), 0, 0.0001)
70 }))
73 // pitch shift input - USE HEADPHONES to prevent feedback.
74 play({
75         PitchShift.ar(
76                 AudioIn.ar([1,2]),      // stereo audio input
77                 0.1,                    // grain size
78                 MouseX.kr(0,2), // mouse x controls pitch shift ratio
79                 0,                              // pitch dispersion
80                 0.004                   // time dispersion
81         )
82 }))
85 // use PitchShift to granulate input - USE HEADPHONES to prevent feedback.
86 // upper left corner is normal playback. x = pitch dispersion, y = time dispersion
87 var grainSize;
88 grainSize = 0.5;
89 play({
90         PitchShift.ar(
91                 AudioIn.ar([1,2]),
92                 grainSize,
93                 1,                                              // nominal pitch rate = 1
94                 MouseX.kr(0,1),                         // pitch dispersion
95                 MouseY.kr(0, grainSize) // time dispersion
96         )
97 }))