99 lines
1.7 KiB
Text
99 lines
1.7 KiB
Text
class:: PitchShift
|
|
summary:: Time domain pitch shifter.
|
|
categories:: UGens>Filters>Pitch
|
|
|
|
|
|
Description::
|
|
|
|
A time domain granular pitch shifter. Grains have a triangular amplitude
|
|
envelope and an overlap of 4:1.
|
|
|
|
|
|
classmethods::
|
|
|
|
method::ar
|
|
|
|
argument::in
|
|
|
|
The input signal.
|
|
|
|
|
|
argument::windowSize
|
|
|
|
The size of the grain window in seconds. This value cannot be
|
|
modulated.
|
|
|
|
|
|
argument::pitchRatio
|
|
|
|
The ratio of the pitch shift. Must be from 0 to 4.
|
|
|
|
|
|
argument::pitchDispersion
|
|
|
|
The maximum random deviation of the pitch from the
|
|
|
|
code::pitchRatio:: .
|
|
|
|
|
|
argument::timeDispersion
|
|
|
|
A random offset of from zero to
|
|
|
|
code::timeDispersion:: seconds is added to the
|
|
delay of each grain. Use of some dispersion can alleviate a hard
|
|
comb filter effect due to uniform grain placement. It can also be
|
|
an effect in itself.
|
|
code::timeDispersion:: can be
|
|
no larger than
|
|
code::windowSize:: .
|
|
|
|
|
|
argument::mul
|
|
|
|
Output will be multiplied by this value.
|
|
|
|
|
|
argument::add
|
|
|
|
This value will be added to the output.
|
|
|
|
|
|
Examples::
|
|
|
|
code::
|
|
|
|
(
|
|
play({
|
|
z = Blip.ar(800, 6, 0.1);
|
|
PitchShift.ar(z, 0.02, Line.kr(0.1,4,20), 0, 0.0001)
|
|
}))
|
|
|
|
(
|
|
// pitch shift input - USE HEADPHONES to prevent feedback.
|
|
play({
|
|
PitchShift.ar(
|
|
SoundIn.ar([0, 1]), // stereo audio input
|
|
0.1, // grain size
|
|
MouseX.kr(0,2), // mouse x controls pitch shift ratio
|
|
0, // pitch dispersion
|
|
0.004 // time dispersion
|
|
)
|
|
}))
|
|
|
|
(
|
|
// use PitchShift to granulate input - USE HEADPHONES to prevent feedback.
|
|
// upper left corner is normal playback. x = pitch dispersion, y = time dispersion
|
|
var grainSize;
|
|
grainSize = 0.5;
|
|
play({
|
|
PitchShift.ar(
|
|
SoundIn.ar([0, 1]),
|
|
grainSize,
|
|
1, // nominal pitch rate = 1
|
|
MouseX.kr(0,1), // pitch dispersion
|
|
MouseY.kr(0, grainSize) // time dispersion
|
|
)
|
|
}))
|
|
|
|
::
|