mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(slices): per-pan tuning wheel and per-slice RX mute on TX
Mouse wheel over an extra panadapter now retunes that pan's primary slice (first created on that receiver) instead of the main VFO; a slice flag under the cursor still wins, pan 0 keeps driving the VFO. Slice flags get a clickable RXM badge: RX audio of the slice is muted while transmitting (default), so the operator no longer hears himself on every slice in full duplex. State persists with the workspace. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -104,6 +104,7 @@ type
|
||||
AGC: Integer; // Ord(TWDSPAGCMode)
|
||||
Volume: Double; // 0..1
|
||||
Muted: Boolean;
|
||||
RxMuteOnTx: Boolean; // True = слайс молчит на передаче (self-monitor выкл)
|
||||
FMSQOn: Boolean;
|
||||
FMSQLevel: Integer;
|
||||
DevName: string; // имя PortAudio-устройства ('' = default)
|
||||
@@ -1783,6 +1784,7 @@ begin
|
||||
SliceObj.Add('agc', P.Pans[i].Slices[j].AGC);
|
||||
SliceObj.Add('volume', P.Pans[i].Slices[j].Volume);
|
||||
SliceObj.Add('muted', P.Pans[i].Slices[j].Muted);
|
||||
SliceObj.Add('rx_mute_on_tx', P.Pans[i].Slices[j].RxMuteOnTx);
|
||||
SliceObj.Add('fmsq_on', P.Pans[i].Slices[j].FMSQOn);
|
||||
SliceObj.Add('fmsq_level', P.Pans[i].Slices[j].FMSQLevel);
|
||||
SliceObj.Add('dev_name', P.Pans[i].Slices[j].DevName);
|
||||
@@ -1860,6 +1862,7 @@ begin
|
||||
P.Pans[id].Slices[n].AGC := JI(SliceObj, 'agc', 1);
|
||||
P.Pans[id].Slices[n].Volume := EnsureRange(JD(SliceObj, 'volume', 0.7), 0.0, 1.0);
|
||||
P.Pans[id].Slices[n].Muted := JB(SliceObj, 'muted', False);
|
||||
P.Pans[id].Slices[n].RxMuteOnTx := JB(SliceObj, 'rx_mute_on_tx', True);
|
||||
P.Pans[id].Slices[n].FMSQOn := JB(SliceObj, 'fmsq_on', False);
|
||||
P.Pans[id].Slices[n].FMSQLevel := JI(SliceObj, 'fmsq_level', 30);
|
||||
P.Pans[id].Slices[n].DevName := JS(SliceObj, 'dev_name', '');
|
||||
|
||||
Reference in New Issue
Block a user