rsc3/doc-schelp/HelpSource/Classes/PitchShift.schelp

100 lines
1.7 KiB
Text
Raw Permalink Normal View History

2022-08-24 13:53:18 +00:00
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
)
}))
::