mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feat(audio): раздельная громкость RX и TX-монитора + фикс синка слайдера
Две сохраняемые громкости: FVolume (RX) и FTxMonVolume (self-monitor даунлинка на передаче, дефолт 40). Контекст монитора = TX + DUP + RX MUTE off (тот же гейт, что аудио в движке). В этом контексте слайдер/SetVolume правят FTxMonVolume, иначе FVolume; ActiveVolume — активная под контекст. Автопереключение громкости RX<->TX-монитор на T/R (SetMOX) и при смене RX MUTE / DUP во время передачи (ApplyActiveVolume). Обе персистятся (tx_mon_volume в конфиге). Веб выровнен на ActiveVolume. Фикс: слайдер громкости не синхронизировался с загруженным значением после подключения (в rfDevice синкался только drive, volume пропущен) → слайдер оставался на 70, движок брал сохранённое → «прыжок» при первом касании. Добавлен TrkVolume.Position := ActiveVolume в rfDevice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+4
-2
@@ -219,6 +219,7 @@ type
|
||||
|
||||
TGlobalSettings = record
|
||||
Volume: Integer;
|
||||
TxMonVolume: Integer; // громкость self-monitor RX-аудио на TX (RX MUTE off)
|
||||
DriveLevel: Integer;
|
||||
ActiveVfo: Integer;
|
||||
NRMode: Integer;
|
||||
@@ -424,7 +425,7 @@ class procedure TSettingsManager.DefaultGlobal(out G: TGlobalSettings);
|
||||
var i: Integer;
|
||||
begin
|
||||
FillChar(G, SizeOf(G), 0);
|
||||
G.Volume := 70; G.DriveLevel := 50; G.ActiveVfo := 0;
|
||||
G.Volume := 70; G.TxMonVolume := 40; G.DriveLevel := 50; G.ActiveVfo := 0;
|
||||
G.NRMode := 0; G.NBMode := 0; G.SNBEnabled := False; G.ANFEnabled := False;
|
||||
G.AGCSlope := 0; G.AGCHangThreshold := 100; G.LastBand := 5;
|
||||
G.LastXvtr := -1;
|
||||
@@ -623,6 +624,7 @@ begin
|
||||
GObj := GetGlobalObj(DevObj);
|
||||
|
||||
G.Volume := JI(GObj,'volume',70);
|
||||
G.TxMonVolume := JI(GObj,'tx_mon_volume',40);
|
||||
G.DriveLevel := JI(GObj,'drive_level',50);
|
||||
G.ActiveVfo := JI(GObj,'active_vfo',0);
|
||||
G.NRMode := JI(GObj,'nr_mode',Ord(JB(GObj,'nr_enabled',False)));
|
||||
@@ -759,7 +761,7 @@ procedure TSettingsManager.SaveGlobal(const MAC: array of Byte;
|
||||
var O: TJSONObject; i: Integer;
|
||||
begin
|
||||
O := GetGlobalObj(GetDevObj(MacToStr(MAC)));
|
||||
JW(O,'volume',G.Volume); JW(O,'drive_level',G.DriveLevel);
|
||||
JW(O,'volume',G.Volume); JW(O,'tx_mon_volume',G.TxMonVolume); JW(O,'drive_level',G.DriveLevel);
|
||||
JW(O,'active_vfo',G.ActiveVfo);
|
||||
JW(O,'nr_mode',G.NRMode); JW(O,'nb_mode',G.NBMode);
|
||||
JW(O,'nr_enabled',G.NRMode <> 0); JW(O,'nb_enabled',G.NBMode <> 0);
|
||||
|
||||
Reference in New Issue
Block a user