Select Git revision
ITACTCUtils.cpp
Jonas Stienen authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ITACTCUtils.cpp 1.10 KiB
#include <ITACTCUtils.h>
#include <ITAHDFTSpectra.h>
#include <ITAAudiofileWriter.h>
#include <ITAFFT.h>
#include <ITAFilesystemUtils.h>
#include <ITAHDFTSpectrum.h>
#include <ITASampleFrame.h>
// Helper
void Export( const ITAHDFTSpectrum* pSpectrum, const std::string& sFilePath )
{
ITASampleBuffer sbImpulseResponse( pSpectrum->getDFTSize()-1, true );
ITASampleBuffer sbSpectrum( pSpectrum->getDFTSize(), true ); // local copy
ITAFFT ifft( ITAFFT::IFFT_C2R, sbImpulseResponse.length(), sbSpectrum.GetData(), sbImpulseResponse.GetData() );
// Make local copy of input (will be destroyed by in-place FFT)
sbSpectrum.write( pSpectrum->data(), sbSpectrum.length() );
float* fIn = sbSpectrum.GetData();
float* fOut = sbImpulseResponse.GetData();
ifft.execute( fIn, fOut );
// Normalize after IFFT
sbImpulseResponse.div_scalar( float( sbImpulseResponse.length() ) );
std::string sFilePathComplete = sFilePath;
if( getFilenameSuffix( sFilePath ).empty() )
sFilePathComplete += ".wav";
//writeAudiofile( correctPath( sFilePathComplete ), &sbImpulseResponse, pSpectrum->getSamplerate(), ITA_FLOAT );
return;
}