diff --git a/Settings.pas b/Settings.pas index 52caeac..dbe5cbe 100644 --- a/Settings.pas +++ b/Settings.pas @@ -1910,6 +1910,15 @@ end; procedure DefaultTXProfiles(const Base: TTXSettings; DrivePct: Integer; out L: TTXProfileList); +var + // Заводской звук + ЖИВАЯ обвязка микрофона. Всё, что определяет тембр + // (полоса, динамика, EQ, AM carrier, TUN level), берётся из DefaultTX: + // «сброс к заводским» обязан сбрасывать именно это, иначе Default наследует + // ту полосу, на которой оператора застали (например 5000 от ESSB 5k). + // Не сбрасываем то, что описывает ЖЕЛЕЗО и безопасность: разъём и режим + // микрофона с его усилением (иначе слетит Line In у микшера) и мощность + // (внезапный скачок drive пошёл бы в усилитель). + Stock: TTXSettings; const // Кривые EQ для заводских ESSB. Значения — УЗЛЫ ломаной АЧХ WDSP (eq.c), // а не «полосы»: между узлами интерполяция по дБ, а ЗА крайними узлами @@ -1945,7 +1954,7 @@ const AComp: Boolean; ACompGain: Double); begin if L.Count >= TXPROF_MAX then Exit; - TXProfileCapture(Base, DrivePct, L.Items[L.Count]); + TXProfileCapture(Stock, DrivePct, L.Items[L.Count]); L.Items[L.Count].Name := AName; L.Items[L.Count].FilterLow := ALow; L.Items[L.Count].FilterHigh := AHigh; @@ -1985,10 +1994,18 @@ begin L.Count := 0; L.ActiveIdx := 0; ClearTXProfModeTable(L.MainByMode); // главный ничего не переключает - // «Default» — текущее состояние устройства (микрофонный вход, полоса, - // динамика, мощность), но с заводским EQ: после миграции старого конфига - // звук в эфире не меняется, а сброс к заводским возвращает ровный тембр. - TXProfileCapture(Base, DrivePct, L.Items[0]); + // База всех заводских профилей: заводской звук, живая обвязка микрофона. + TSettingsManager.DefaultTX(Stock); + Stock.MicLineIn := Base.MicLineIn; + Stock.MicBoost := Base.MicBoost; + Stock.MicBias := Base.MicBias; + Stock.MicPTTEnabled := Base.MicPTTEnabled; + Stock.MicTipRing := Base.MicTipRing; + Stock.LineInGainDB := Base.LineInGainDB; + Stock.MicGainDB := Base.MicGainDB; + // «Default» — ровно заводской звук: полоса 200..3100, компрессор выкл, + // leveler/ALC как в DefaultTX, EQ ровный. + TXProfileCapture(Stock, DrivePct, L.Items[0]); L.Items[0].Name := 'Default'; FlatEQ(L.Items[0]); L.Count := 1; diff --git a/SettingsForm.pas b/SettingsForm.pas index 54f99b8..4629344 100644 --- a/SettingsForm.pas +++ b/SettingsForm.pas @@ -1523,8 +1523,8 @@ begin MakeLbl(Grp, 'Edits on the Profile and EQ tabs go into the active profile ' + 'immediately — there is no separate Save button.', PAD, R1 + 30, GRP_W - 2 * PAD); - MakeLbl(Grp, 'New... forks the current sound under a new name. ' - + 'Factory rebuilds the stock set and flattens the equalizer.', + MakeLbl(Grp, 'New... forks the current sound under a new name. Factory rebuilds ' + + 'the stock set; it keeps the microphone wiring and drive, not the sound.', PAD, R1 + 48, GRP_W - 2 * PAD); // ---- Сегменты подвкладок ------------------------------------------------ @@ -1985,8 +1985,9 @@ begin if MessageDlg('TX Profile', 'Replace the whole profile list with the factory set?'#13#10 + 'Your own profiles and edits to the stock ones will be lost.'#13#10 - + '"Default" becomes active: microphone, bandwidth, dynamics and ' - + 'drive stay as they are, the equalizer returns to flat.', + + '"Default" becomes active and restores the stock sound: ' + + 'bandwidth, dynamics and a flat equalizer. Microphone wiring, ' + + 'its gain and drive are kept as they are.', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Exit; if Assigned(FOnTXProfileFactory) then FOnTXProfileFactory(Self); end;