diff --git a/Settings.pas b/Settings.pas index dbe5cbe..9ffbd2d 100644 --- a/Settings.pas +++ b/Settings.pas @@ -1934,6 +1934,15 @@ const ESSB50_F: array[1..10] of Double = (100, 180, 300, 550, 950, 1600, 2400, 3300, 4200, 5100); ESSB50_G: array[1..10] of Double = ( -5, -3, -1, 0, 0, 1, 2, 3.5, 5, 5); ESSB50_PRE = -3.0; + // FM: узлы охватывают AF-полосу модулятора (штатно 300..3000, вкладка + // Hardware), крайние с запасом — за ними EQ обрывает АЧХ. Верх НЕ поднимаем: + // предыскажение (pre-emphasis) само задирает его 6 дБ/окт и по умолчанию + // стоит ПОСЛЕ динамики (xemphp вторым, сразу перед xfmmod), то есть + // компрессор его уже не удержит — лишний буст ушёл бы в перемодуляцию на + // свистящих. Снизу режем бубнение, лёгкий подъём разборчивости 1.4..2.3 кГц. + FM_F: array[1..10] of Double = (200, 300, 450, 700, 1000, 1400, 1800, 2300, 2800, 3400); + FM_G: array[1..10] of Double = ( -8, -4, -1, 0, 0, 1, 2, 2, 1, -2); + FM_PRE = -1.0; // Тембр у заводского профиля — заводской: EQ выключен, все усиления и // преамп в нуле, сетка узлов штатная. Наследовать сюда живой EQ нельзя — @@ -2018,6 +2027,13 @@ begin Add('SSB Wide', 200, 3100, False, 5.0); AddEQ('ESSB 3.5k', 100, 3500, False, 5.0, ESSB35_F, ESSB35_G, ESSB35_PRE); AddEQ('ESSB 5k', 100, 5000, False, 5.0, ESSB50_F, ESSB50_G, ESSB50_PRE); + // FM: плотная модуляция за счёт компрессора — девиация ограничена жёстко, + // поэтому громкость даёт средний уровень, а не пики. Полоса 300..3000 здесь + // косметическая: в FM края bp0 считает сам движок по Карсону (девиация + + // AF-срез), профильные значения работают, только если привязать этот профиль + // к голосовому режиму. Девиация и AF-срез — свойства аппарата (вкладка + // Hardware), профилем не переключаются. + AddEQ('FM', 300, 3000, True, 8.0, FM_F, FM_G, FM_PRE); end; function TSettingsManager.LoadTXProfiles(const MAC: array of Byte;