Windows audio devices are less permanent than you would like. A USB interface gets nudged, a driver updates, a Bluetooth device grabs default output. On a desktop that is an annoyance. In a studio it is dead air.
Persistent output
PlayOnRadio uses WASAPI, falling back to WaveOut where WASAPI is unavailable. The output is opened once at startup and never torn down between tracks.
That persistence is what removes the click between songs — the artefact you get from opening and closing a device per track — and it also means there is one long-lived thing to monitor rather than a new one every three minutes.
Noticing failure
Audio output availability is part of the system health check, together with recent output-fault timestamps. Health refresh is triggered on audio device lifecycle changes and on playback-stopped faults, not only on a timer.
The distinction matters. A two-minute polling interval means up to two minutes of silence before anything reports a problem. Event-driven refresh means the indicator changes when the device does.
Why the fixed mix format helps
The engine mixes internally at 48 kHz, 32-bit float, stereo regardless of source. Every deck resamples into that format before the mixer.
This means the output device sees one consistent format for the life of the application. No renegotiation between a 44.1 kHz MP3 and a 48 kHz WAV — the kind of transition that produces a click, a dropout, or on unlucky hardware a device reset.
Stopping decisively
When Stop is pressed, every deck is torn down and master output is muted immediately. Not faded, not queued behind a pending operation.
Stop is the button someone presses when something has gone wrong, and it should be the most reliable control in the application. Anything that delays it — a slow file still opening, a crossfade mid-flight — is a bug.
Loading off the UI thread
Related, and the reason a stuck file cannot lock you out: the next track is opened on a background thread. A network path that has gone away will time out eventually, and while it does the interface and the Stop button keep working.