From da1f3eb2bda63b4f43507540a20631787d32b65b Mon Sep 17 00:00:00 2001 From: rouggy Date: Fri, 31 Jul 2026 21:20:35 +0200 Subject: [PATCH] fix: say which devices a recording is captured from MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A station with two radios has two sets of audio endpoints, and the recorder will happily capture the one nobody is listening to — a Flex DAX channel while the operator works a Yaesu over USB. The file is then full of hiss with no relation to what they hear, unaffected by the rig's AGC, and nothing anywhere said which receiver it came from. The device names are now logged, resolved to their friendly names, once when capture starts. --- internal/audio/recorder.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/audio/recorder.go b/internal/audio/recorder.go index ff92dd7..fc9df32 100644 --- a/internal/audio/recorder.go +++ b/internal/audio/recorder.go @@ -204,6 +204,18 @@ func (r *Recorder) Start(fromDev, micDev string, prerollSec int) error { }() } + // Name the devices being recorded FROM, once, at the start. + // + // A station with two radios has two sets of endpoints, and the recorder will + // happily capture the one that is not being listened to: the result is a + // file full of hiss with no relation to what the operator hears, and nothing + // anywhere said which receiver it came from. + if twoSrc { + LogSink("recorder: capturing %q + %q", DeviceName(fromDev), DeviceName(micDev)) + } else { + LogSink("recorder: capturing %q", DeviceName(fromDev)) + } + // Watchdog. A WASAPI device can open cleanly and then produce nothing at // all — a DAX channel with no stream behind it does exactly that, and it is // indistinguishable from silence until the recording turns out to be empty