void ofxFFTBase::setBufferSize(int value) { int bufferSizeNew = ofNextPow2(value); if(bufferSize == bufferSizeNew) { return; } bufferSize = bufferSizeNew; binSize = (int)(bufferSize * 0.5); killFFT(); initFFT(); initAudioData(fftData, bufferSize); }
void ofxFFTBase :: setNoOfBands( int value ) { int audioNoOfBandsNew; audioNoOfBandsNew = ofNextPow2( value ); if( audioNoOfBands == audioNoOfBandsNew ) return; audioNoOfBands = OFX_FFT_NO_OF_BANDS; audioNoOfBandsHalf = (int)( audioNoOfBands * 0.5 ); killFFT(); initFFT(); initAudioData( rawData, getNoOfBands() ); initAudioData( fftData, getNoOfBands() ); }
void ofxFFTBase::initFFT() { killFFT(); _fft = new fft(bufferSize); buffer = (float *)malloc(bufferSize * sizeof(float)); memset(buffer, 0, bufferSize * sizeof(float)); magnitudes = (float *)malloc(binSize * sizeof(float)); memset(magnitudes, 0, binSize * sizeof(float)); magnitudesDB = (float *)malloc(binSize * sizeof(float)); memset(magnitudesDB, 0, binSize * sizeof(float)); phases = (float *)malloc(binSize * sizeof(float)); memset(phases, 0, binSize * sizeof(float)); window = (float *)malloc(bufferSize * sizeof(float)); memset(window, 0, bufferSize * sizeof(float)); fft::genWindow(3, bufferSize, window); }
ofxFFTBase :: ofxFFTBase() { specData = NULL; fftMagnitude = NULL; fftPhase = NULL; fftPower = NULL; fftFreq = NULL; setMaxDecay( 0.995 ); setPeakDecay( 0.96 ); setThreshold( 0.5 ); setMirrorData( false ); renderBorder = 1; audioNoOfBands = OFX_FFT_NO_OF_BANDS; audioNoOfBandsHalf = (int)( audioNoOfBands * 0.5 ); killFFT(); initFFT(); initAudioData( rawData, audioNoOfBandsHalf ); initAudioData( fftData, audioNoOfBandsHalf ); }
ofxFFTBase :: ~ofxFFTBase() { killFFT(); }