mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +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:
+3
-2
@@ -1313,7 +1313,7 @@ begin
|
||||
rfAGCMode:
|
||||
for i := 0 to 4 do StyleButton(BtnAGCMode[i], i = FController.FAGCMode);
|
||||
rfVolume:
|
||||
TrkVolume.Position := FController.FVolume;
|
||||
TrkVolume.Position := FController.ActiveVolume; // RX или TX-монитор
|
||||
rfRxGain:
|
||||
UpdateRxGainUI;
|
||||
rfDrive:
|
||||
@@ -1457,6 +1457,7 @@ begin
|
||||
RebuildXvtrButtons;
|
||||
PushXvtrToWeb;
|
||||
TrkDrive.Position := FController.FDrivePercent; // слайдер ← drive%
|
||||
TrkVolume.Position := FController.ActiveVolume; // слайдер ← загруженная громкость (был баг: не синхронизировался)
|
||||
UpdateDriveLabel; // переключаем единицу %/дБ под бэкенд
|
||||
if Assigned(FSampleRateOverlay) then
|
||||
FSampleRateOverlay.SetCurrentRate(FController.FSampleRate);
|
||||
@@ -5372,7 +5373,7 @@ procedure TMainForm.PushVfoOverlayExtState;
|
||||
begin
|
||||
if not (Assigned(FVfoOverlay) and FVfoOverlay.Visible) then Exit;
|
||||
// TxSel: этот слайс выбран для передачи. Пока слайс один → всегда True.
|
||||
FVfoOverlay.SetExtState(FController.FVolume, FController.FMuted,
|
||||
FVfoOverlay.SetExtState(FController.ActiveVolume, FController.FMuted,
|
||||
FController.FSplitTxB, FController.FTransmitting, True);
|
||||
end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user