BASS_BFX_PITCHSHIFT

BASS FX

BASS_BFX_PITCHSHIFT structure

Used with BASS_FXGetParameters and BASS_FXSetParameters to retrieve and set the parameters of pitch-shift using FFT effect.

typedef struct {
    float fPitchShift;
    float fSemitones;
    long lFFTsize;
    long lOsamp;
    int lChannel;
} BASS_BFX_PITCHSHIFT;

Members

fPitchShift

A factor value which is between 0.5 (one octave down) and 2 (one octave up) (1 won't change the pitch)
(fSemitones is not in use, fPitchShift has a priority over fSemitones) 

[0.5...1...2], def. 1
fSemitones Semitones (0 won't change the pitch) def. 0
lFFTsize

Defines the FFT frame size used for the processing. Typical values are 1024, 2048 and 4096
It may be any value <= 8192 but it MUST be a power of 2

[1024...8192], def. 2048
lOsamp Is the STFT oversampling factor which also determines the overlap between adjacent STFT frames
It should at least be 4 for moderate scaling ratios. A value of 32 is recommended for best quality (better quality = higher CPU usage)
[4........32], def. 8
lChannel The affected channels using BASS_BFX_CHANxxx flags   

Info
Changes the sound pitch or key, without affecting the sound tempo or speed using FFT.

More information about Pitch Shifting Using The Fourier Transform:http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/

Remarks
The sound quality is average.
On mobile devices, due to expensive CPU and FPU usage, this effect is enabled for iOS, Android (armeabi-v7a, x86) and Linux ARM (hardfp), that using floating-point instead of fixed-point.

See also
BASS_ChannelSetFX