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;
    }