feat(dsp): wire IIR3 x2 (kIIR_A3/B3) post-warp into structural chain
Step 9 of NOTES_LEVEL:820-840 mono-path (was missing; roadmap claimed it). Light spatial mask smoothing, upper half re-mirrored. LUT_MULT retuned 3.8 -> 4.4 for the shifted calibration. Smoke (48k/4096): mean|err| 1.093 -> 0.993 (t1kq -1.06, t1k +1.66, al12 -0.26). Module checks PASS, corpus --compare bridge baseline PASS.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user