From bb09c185a4fd4b048b04b5d41e517fd7c88d9ab8 Mon Sep 17 00:00:00 2001 From: Jonas Stienen Date: Thu, 29 Sep 2016 20:39:56 +0200 Subject: [PATCH] Removing cepstrum --- src/ITANCTC.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/ITANCTC.cpp b/src/ITANCTC.cpp index 1caa686..71e23be 100644 --- a/src/ITANCTC.cpp +++ b/src/ITANCTC.cpp @@ -262,36 +262,32 @@ bool ITANCTC::CalculateFilter( std::vector< ITAHDFTSpectra* >& vpCTCFilter ) // First, store original energy of HRTF (left channel) float fEnergy = ( *pHRTF )[ 0 ]->getEnergy(); - // Apply WICK factor in cepstrum domain only on magnitudes (left channel) - ( *pHRTF )[ 0 ]->log(); + // Apply WICK factor only on magnitudes (left channel) for( int i = 0; i < ( *pHRTF )[ 0 ]->getSize(); i++ ) { - float fCepstrumMag = ( *pHRTF )[ 0 ]->calcMagnitude( i ); - ( *pHRTF )[ 0 ]->setMagnitudePreservePhase( i, fCepstrumMag * m_fWaveIncidenceAngleCompensationFactor ); + float fMag = ( *pHRTF )[ 0 ]->calcMagnitude( i ); + ( *pHRTF )[ 0 ]->setMagnitudePreservePhase( i, std::powf( fMag, m_fWaveIncidenceAngleCompensationFactor ) ); } - ( *pHRTF )[ 0 ]->exp(); // Compensate initial HRTF energy when WICK is used (left channel) assert( fEnergy > 0 ); - float fEnergyCompensation = powf( fEnergy, ( 1 - m_fWaveIncidenceAngleCompensationFactor ) ); + float fEnergyCompensation = std::powf( fEnergy, ( 1 - m_fWaveIncidenceAngleCompensationFactor ) ); ( *pHRTF )[ 0 ]->mul( fEnergyCompensation ); // First, store original energy of HRTF only on magnitudes (right channel) fEnergy = ( *pHRTF )[ 1 ]->getEnergy(); - // Apply WICK factor in cepstrum domain (right channel) - ( *pHRTF )[ 1 ]->log(); + // Apply WICK factor only on magnitude (right channel) for( int i = 0; i < ( *pHRTF )[ 1 ]->getSize(); i++ ) { - float fCepstrumMag = ( *pHRTF )[ 1 ]->calcMagnitude( i ); - ( *pHRTF )[ 1 ]->setMagnitudePreservePhase( i, fCepstrumMag * m_fWaveIncidenceAngleCompensationFactor ); + float fMag = ( *pHRTF )[ 1 ]->calcMagnitude( i ); + ( *pHRTF )[ 1 ]->setMagnitudePreservePhase( i, std::powf( fMag, m_fWaveIncidenceAngleCompensationFactor ) ); } - ( *pHRTF )[ 1 ]->exp(); // Compensate initial HRTF energy when WICK is used (right channel) assert( fEnergy > 0 ); - fEnergyCompensation = powf( fEnergy, ( 1 - m_fWaveIncidenceAngleCompensationFactor ) ); + fEnergyCompensation = std::powf( fEnergy, ( 1 - m_fWaveIncidenceAngleCompensationFactor ) ); ( *pHRTF )[ 1 ]->mul( fEnergyCompensation ); -- GitLab