bool SpecificLoudnessANSIS342007::initializeInternal(const SignalBank &input) { LOUDNESS_ASSERT(input.getNChannels() > 1, name_ << ": Insufficient number of input channels."); //c value from ANSI 2007 parameterC_ = 0.046871; if (updateParameterCForBinauralInhibition_) { parameterC_ /= 0.75; LOUDNESS_DEBUG(name_ << ": Scaling parameter C for binaural inhibition model: " << parameterC_); } //Number of filters below 500Hz nFiltersLT500_ = 0; Real eThrqdB500Hz = internalExcitation(500); //fill loudness parameter vectors for (int i = 0; i < input.getNChannels(); i++) { Real fc = input.getCentreFreq(i); if (fc < 500) { Real eThrqdB = internalExcitation(fc); eThrqParam_.push_back(pow(10, eThrqdB/10.0)); Real gdB = eThrqdB500Hz - eThrqdB; parameterG_.push_back(pow(10, gdB/10.0)); parameterA_.push_back(gdBToA(gdB)); parameterAlpha_.push_back(gdBToAlpha(gdB)); nFiltersLT500_++; } } LOUDNESS_DEBUG(name_ << ": number of filters <500 Hz: " << nFiltersLT500_); //output SignalBank output_.initialize(input); return 1; }
bool SpecificPartialLoudnessMGB1997::initializeInternal(const SignalBank &input) { //c value from ANSI 2007 parameterC_ = 0.046871; if (useANSISpecificLoudness_) { yearExp_ = 0.2; parameterC2_ = parameterC_ / std::pow(1.0707, 0.5); } else { yearExp_ = 0.5; parameterC2_ = parameterC_ / std::pow(1040000.0, 0.5); } if (updateParameterCForBinauralInhibition_) { parameterC_ /= 0.75; LOUDNESS_DEBUG(name_ << ": Scaling parameter C for binaural inhibition model: " << parameterC_); } Real eThrqdB500Hz = internalExcitation(500); //fill loudness parameter vectors for (int i = 0; i < input.getNChannels(); i++) { Real fc = input.getCentreFreq (i); Real eThrqdB = internalExcitation (fc); Real gdB = eThrqdB500Hz - eThrqdB; eThrqParam_.push_back (std::pow (10, eThrqdB / 10.0)); gParam_.push_back (std::pow (10, gdB / 10.0)); aParam_.push_back (gdBToA (gdB)); alphaParam_.push_back (gdBToAlpha (gdB)); kParam_.push_back (std::pow (10, kdB (fc) / 10.0)); } //output SignalBank output_.initialize (input); return 1; }