diff --git a/dsp/framed_model.cpp b/dsp/framed_model.cpp index 477c058..0a95d97 100644 --- a/dsp/framed_model.cpp +++ b/dsp/framed_model.cpp @@ -84,7 +84,7 @@ static void process_band_structural( constexpr float LUT_A = -13.78f; constexpr float LUT_B = 68.29f; constexpr float LUT_GAMMA = 0.344f; - constexpr float LUT_MULT = 3.8f; + constexpr float LUT_MULT = 4.4f; // res^rp term (bridge parity): smooth frequency-dependent floor constexpr double RP0 = 0.0275; @@ -130,6 +130,14 @@ static void process_band_structural( mask_out[k] *= kBand768[idx] * kWarp[idx] * std::pow(res_k, rp); } + // Step 9 (NOTES_LEVEL:830): IIR3 inline TWICE (kIIR_A3/B3), post-warp + // spectral smoothing of the mask; upper half re-mirrored afterwards. + fn529fe0::iir1(mask_out, kIIR_A3, kIIR_B3, nbin, 0.0); + fn529fe0::iir1(mask_out, kIIR_A3, kIIR_B3, nbin, 0.0); + for (size_t k = 0; k < half; k++) { + mask_out[nfft - 1 - k] = mask_out[k]; + } + for (size_t k = 0; k < nfft; k++) { mask_out[k] = mask_out[k] * (fVar30 * 1.0f) + (1.0f - fVar30); }