fix(tx): WFM/FMRAW bp0 = аудио-полоса режима, не SSB-фолбэк

TXSignedEdges для WFM падал в else→сырую магнитуду (200,3100) и душил
вещательное аудио до телефонной полосы ещё ДО ЧМ-модулятора (у того свой
AF 20–15000). Добавлены ветки: WFM→(20,15000)=RX AF WFM, FMRAW→(20,7000)=
RX AF raw. Теперь TX-bp0 совпадает с RX-АУДИО-фильтром (истинная симметрия),
а не с РЧ-шириной канала FILT_WFM_BW/FILT_RAW_BW (это селективность RX,
другая величина). Развязка TX от RX для SSB/AM/CW не тронута.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 11:40:17 +03:00
co-authored by Claude Opus 4.8
parent f425071461
commit 8611898ad1
+11
View File
@@ -1207,6 +1207,17 @@ begin
Half := FTXFMDeviation + FTXFMHighCut;
Lo := -Half; Hi := Half;
end;
MODE_WFM:
// Широкий ЧМ: bp0 — это АУДИО-полосовик перед модулятором, а не РЧ-полоса
// канала (FILT_WFM_BW=120..200 кГц — селективность RX, другая величина).
// Открываем его в аудио-полосу вещательного FM = RX AF-фильтр WFM
// (ApplyRXWFMToChan). Без этого else-ветка душила бы аудио до (200,3100).
begin Lo := WFM_AF_LOW; Hi := WFM_AF_HIGH; end;
MODE_FMRAW:
// Плоский baseband для внешних декодеров (совпадает с RX AF в ApplyRXRawToChan
// и с явным SetTXABandpassFreqs в ApplyTXModeSettings). РЧ-ширина FILT_RAW_BW
// (6..25 кГц) — селективность RX, к аудио-полосовику отношения не имеет.
begin Lo := 20.0; Hi := 7000.0; end;
else
begin Lo := L; Hi := H; end; // прочее — как есть
end;