Package com.badlogic.gdx.audio.analysis
Class FFT
java.lang.Object
com.badlogic.gdx.audio.analysis.FourierTransform
com.badlogic.gdx.audio.analysis.FFT
FFT stands for Fast Fourier Transform. It is an efficient way to calculate the Complex Discrete Fourier Transform. There is not
much to say about this class other than the fact that when you want to analyze the spectrum of an audio buffer you will almost
always use this class. One restriction of this class is that the audio buffers you want to analyze must have a length that is a
power of two. If you try to construct an FFT with a
timeSize
that is not a power of two, an
IllegalArgumentException will be thrown.- See Also:
-
Field Summary
Fields inherited from class com.badlogic.gdx.audio.analysis.FourierTransform
averages, avgPerOctave, bandWidth, HAMMING, imag, LINAVG, LOGAVG, NOAVG, NONE, octaves, real, sampleRate, spectrum, timeSize, TWO_PI, whichAverage, whichWindow
-
Constructor Summary
ConstructorsConstructorDescriptionFFT
(int timeSize, float sampleRate) Constructs an FFT that will accept sample buffers that aretimeSize
long and have been recorded with a sample rate ofsampleRate
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
void
forward
(float[] buffer) Performs a forward transform onbuffer
.void
forward
(float[] buffReal, float[] buffImag) Performs a forward transform on the passed buffers.void
inverse
(float[] buffer) Performs an inverse transform of the frequency spectrum and places the result inbuffer
.void
scaleBand
(int i, float s) Scales the amplitude of theith
frequency band bys
.void
setBand
(int i, float a) Sets the amplitude of theith
frequency band toa
.Methods inherited from class com.badlogic.gdx.audio.analysis.FourierTransform
avgSize, calcAvg, doWindow, fillSpectrum, forward, freqToIndex, getAverageCenterFrequency, getAvg, getBand, getBandWidth, getFreq, getImaginaryPart, getRealPart, getSpectrum, getTimeSize, hamming, indexToFreq, inverse, linAverages, logAverages, noAverages, scaleFreq, setComplex, setFreq, specSize, timeSize, window
-
Constructor Details
-
FFT
public FFT(int timeSize, float sampleRate) Constructs an FFT that will accept sample buffers that aretimeSize
long and have been recorded with a sample rate ofsampleRate
.timeSize
must be a power of two. This will throw an exception if it is not.- Parameters:
timeSize
- the length of the sample buffers you will be analyzingsampleRate
- the sample rate of the audio you will be analyzing
-
-
Method Details
-
allocateArrays
protected void allocateArrays()- Specified by:
allocateArrays
in classFourierTransform
-
scaleBand
public void scaleBand(int i, float s) Description copied from class:FourierTransform
Scales the amplitude of theith
frequency band bys
. You can use this to shape the spectrum before usinginverse()
.- Specified by:
scaleBand
in classFourierTransform
- Parameters:
i
- the frequency band to modifys
- the scaling factor
-
setBand
public void setBand(int i, float a) Description copied from class:FourierTransform
Sets the amplitude of theith
frequency band toa
. You can use this to shape the spectrum before usinginverse()
.- Specified by:
setBand
in classFourierTransform
- Parameters:
i
- the frequency band to modifya
- the new amplitude
-
forward
public void forward(float[] buffer) Description copied from class:FourierTransform
Performs a forward transform onbuffer
.- Specified by:
forward
in classFourierTransform
- Parameters:
buffer
- the buffer to analyze
-
forward
public void forward(float[] buffReal, float[] buffImag) Performs a forward transform on the passed buffers.- Parameters:
buffReal
- the real part of the time domain signal to transformbuffImag
- the imaginary part of the time domain signal to transform
-
inverse
public void inverse(float[] buffer) Description copied from class:FourierTransform
Performs an inverse transform of the frequency spectrum and places the result inbuffer
.- Specified by:
inverse
in classFourierTransform
- Parameters:
buffer
- the buffer to place the result of the inverse transform in
-