feat(tci): name the transmit audio source when keying, per the protocol
The specification settles what a night of experiments could only guess at. TRX takes an optional THIRD argument naming the signal source — tci, mic1, mic2, micPC, ecoder2 — and TCI 2.0 says it plainly: 'The signal for transmitting is always taken from the microphone selected in the ExpertSDR3. If a third-party software connected via TCI wants to transmit its audio signal, you must specify the third argument - TCI.' Without it the radio sends no chrono at all, whatever the mode. That is what the SSB attempts ran into, and what was misread here as 'digital modes only' — the mode was never the rule, the missing argument was. So OpsLog says it, following the 'To radio' device: 'tci' when the voice keyer owns the transmission, nothing at all otherwise, which leaves the operator's own microphone alone for every other PTT. Nobody has to find that setting in ExpertSDR3 and set it again for every mode, which is how it is remembered there. Two more things from the same document. A chrono with no audio ready is now answered with silence rather than left unanswered — the vendor calls that preferable. And the receive stream declares float32 and two channels instead of trusting the defaults: they are the documented defaults, but a default is something another program sharing this radio can have changed, and a stream in an unexpected format is heard as noise rather than as a mistake.
This commit is contained in:
@@ -8498,6 +8498,11 @@ func (a *App) SaveAudioSettings(s AudioSettings) error {
|
||||
// anything else closes it. Done HERE rather than left to the next restart:
|
||||
// a device chosen in a dropdown that only takes effect after a relaunch
|
||||
// reads as a device that does not work.
|
||||
// The transmit source follows the "To radio" device, and is applied now:
|
||||
// the radio is told which input to use at the moment it is keyed, so the
|
||||
// setting has to be right before the next message rather than after the
|
||||
// next restart.
|
||||
a.applyTCITXSource()
|
||||
if s.FromRadio == audio.NetworkDeviceID {
|
||||
a.startTCIRecording()
|
||||
} else if a.tciAudioAvailable() {
|
||||
|
||||
Reference in New Issue
Block a user