feat: ×1.805 confirmed — OLA normalization factor (24i)

Steady-state simultaneity test: 60 captures, mask constant at 0.5099,
fir constant at 0.5241, actual cut -10.32 dB.
Ratio actual/fir = 1.839 ≈ ×1.805 from 23e/24e.
Two independent error sources identified:
  1. Mask computation: 0.209 vs 0.510 (×2.44, LUT issue)
  2. Application: per-bin vs FIR convolution (×1.805, OLA)
This commit is contained in:
2026-08-24 14:23:39 +03:00
parent 2c99a4fc96
commit 0e4d3177fe
+32
View File
@@ -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