question: public FloatHalfBandNoDecimateFilter ( Filters filter , float gain ) { mCoefficients = filter . getCoefficients ( ) ; mBuffer = new ArrayList < Float > ( ) ; mBufferSize = mCoefficients . length ; for ( int x = 0 ; x < mCoefficients . length ; x ++ ) { mBuffer . add ( 0.0f ) ; } generateIndexMap ( mCoefficients . length ) ; mGain = gain ; }
target:  Half-Band filter with decimation by a real valued float. Takes advantage of the symmetrical nature of FIR filter coefficients by adding oldest and newest sample first, then multiplying once by the  corresponding coefficient Also, takes advantage of the 0-valued FIR half-band coefficents inherent in the half-band filter, and does not calculate those coefficients. This reduces the workload to (tap-size - 1) / 4 + 1 calculations per sample.