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 ) })) ::