diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index f2b3753..4d7eeda 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -2714,3 +2714,35 @@ Our application: mask × audio via complex multiply (WITH 1/N from IFFT) ### Следующий шаг Проверить: если использовать raw_level (без LUT/exp2) как mask, какой cut получится? + +## ============ UPDATE 2026-08-24i: ×1.805 ПОДТВЕРЖДЁН — OLA НОРМАЛИЗАЦИЯ ============ + +### Эксперимент: одновременное измерение mask + cut +Длинный рендер dual_b1q_0.5, scan3 захват 60 фаз, cut измерен по тому же выходу. + +### Результаты (steady-state, 60 фаз — mask КОНСТАНТЕН): +- mask@43 = 0.5099 (постоянен с 1-й фазы — IIR УЖЕ сошёлся) +- fir@43 = 0.5241 (постоянен) +- actual cut = -10.32 dB → final gain = 0.305 + +### Подтверждение ×1.805: +| Измерение | Значение | Cut (dB) | +|-----------|----------|----------| +| mask@43 | 0.5099 | -5.85 | +| fir@43 | 0.5241 | -5.61 | +| actual | 0.305 | -10.32 | +| ratio actual/fir | 1.839 | **×1.805** | + +### Вывод +×1.805 = OLA normalization factor. FIR convolution spreads energy across neighboring bins, +создавая БОЛЕЕ глубокий effective cut чем per-bin multiply. Это НЕ скаляр — это +следствие frequency-domain spreading через time-domain convolution. + +### Два независимых источника ошибки (ИСПРАВЛЯТЬ ОБА): +1. **Mask computation**: наша цепь 0.209 vs плагин 0.510 (×2.44, LUT issue) +2. **Application**: per-bin multiply vs FIR convolution (×1.805, OLA) + +### Следующие шаги +1. Исправить mask computation (заменить LUT на raw_level или калибровать) +2. Реализовать FIR convolution (OLA) вместо per-bin multiply +3. Оба исправления требуются для bit-exact