Station libraries are archaeological. MP3s ripped in 2003, WAVs from a production suite, an FLAC someone insisted on, WMA files from a Windows era nobody misses.
Supported formats are MP3, WAV including multichannel, WMA, M4A, AAC, FLAC and OGG.
One list, used everywhere
A detail that sounds like housekeeping and prevents a specific class of bug: the format list is defined in one place and used by file dialogs, drag-drop filters and folder scanners alike.
When those lists are maintained separately they drift. You end up with a format the file dialog accepts but the folder scanner skips, and a user who cannot understand why half their library imported.
Multichannel WAV
Production suites hand over 5.1 or 7.1 WAV files, usually by accident. Played naively, you hear the front pair and lose the centre channel — which is where the voice usually is.
Multichannel WAV files are automatically downmixed to stereo, so a 5.1 file plays correctly rather than partially. This applies to jingle buttons as well, where multichannel production files turn up most often.
Routing
Most formats decode through NAudio. WMA files and streams route through Media Foundation, which handles those cases more reliably.
Whatever the source, everything is resampled and channel-matched into the engine's fixed internal format — 48 kHz, 32-bit float, stereo — before reaching the mixer. A 22 kHz mono MP3 and a 96 kHz stereo FLAC arrive at the mixer identically.
Seeing what you actually have
Right-click any track → Information… shows two panels. General covers path, title, artist, album, duration, genre, year, and where present comment, album artist, composer, copyright, ISRC and bitrate. Technical shows codec, type, sample rate, container bits per sample, and the decoded format, channels and bit depth.
The decoded values are the useful ones when something sounds wrong. A file that claims to be stereo but decodes to mono explains a lot.
Streams show their playlist metadata without blocking on a URL decode, and missing files report an explicit not-found state rather than an empty dialog.