Technical Overview · September 2026

RadioA for Windows

How the desktop port actually works — the engine, the failure handling, the package, and the things it deliberately does not do. Written for people who want to know before they install. You decide.

One engine: LibVLC 3.0.23 C# 13 / .NET 10 MAUI on WinUI 3 Microsoft Store No telemetry No ads · no account
Under the hood
One engine, not a hybrid

The Android app runs two engines: LibVLC for ICY streams and ExoPlayer for HLS. On Windows there is only LibVLC — the same engine VLC Media Player is built on, and here it plays HLS as well. One engine means one set of rules for buffering, metadata and errors, instead of two that behave differently on the same stream.

🌐

Protocols

HTTP and HTTPS, ICY metadata, MP3, AAC, Ogg Vorbis, HLS (.m3u8), RTSP. Paste a URL — there is no engine to pick and no format to declare.

LibVLC 3.0.23, x64
🧩

47 plugins, not 323

LibVLC ships hundreds of plugins, nearly all of them for video, capture and streaming out. The package carries only the ones an audio player actually loads — the rest are dead weight in an installer people download over a phone connection.

Smaller package, same playback
🎼

AAC through Windows

AAC is decoded by the decoder that is already part of Windows, not by a bundled one. Fewer moving parts in the package, and no licence question about shipping someone else's decoder.

Windows Media Foundation
🏷️

Metadata from two sources

LibVLC reports what the stream announces, and a separate ICY probe reads the title directly — because LibVLC only surfaces ICY titles over plain http://. Whichever answers first wins.

Same title the phone shows
🖼️

Cover art

The artist and title are looked up at iTunes, Deezer and AudioAddict; the first cover found is shown. Station logos and covers are cached on disk, and the cache is capped at 100 MB so it cannot grow without limit.

Plain HTTP, no account anywhere
🧵

One command thread

Every call into LibVLC — play, stop, volume, equalizer — is queued onto a single thread. Calling a media player from two threads at once is how a desktop app disappears without a message, and this is the discipline that stops it.

Inherited from the Android engine
When streams misbehave
The watchdog watches the audio, not the status

A dead stream usually does not report an error. The server keeps the connection open, the player still says "playing", and the music simply stops — that is the failure that matters, because it is the one nobody notices until the room goes quiet.

📉

Silence is detected by counting

Two counters are watched: bytes pulled from the stream and audio buffers actually played. Both flat for six seconds means the stream is wedged, whatever the player claims about its state.

Buffering never feeds the watchdog
🔁

Reconnect with a hard reset

A wedged or dropped stream is reconnected on its own. If reconnecting is not enough, the whole player is torn down and rebuilt — the same recovery the car version uses, where nobody can pick up a phone and press a button.

Timeouts: 20 s for HLS, 15 s for ICY
⏳

A 5-second buffer

Long enough to ride out a hiccup, short enough that pressing play does not feel broken. The number came out of measurements, not taste.

ICY network cache
Why this is written down at all: the rules above were paid for on the phone version — in a car, where a stream that quietly stops is not a bug report but a silent radio on a motorway. The desktop port kept them rather than starting over, which is also why the Windows build shipped with them working from day one.
Sound
A real 10-band equalizer

Ten bands from 60 Hz to 16 kHz, ±20 dB each, applied inside the LibVLC pipeline — so it works on every stream format, not only on the ones a system effect happens to support. Presets are saved as files you can copy between machines, and the format is the same one the phone app uses.

🎚️

60 Hz – 16 kHz

60, 170, 310, 600 Hz, then 1, 3, 6, 12, 14 and 16 kHz. Bands can be linked so one slider moves the neighbours with it.

💾

Presets as files

Saved to Documents\RadioA\EQ, loaded from there, shared with the phone version. Deleting the app never touches them.

⚡

Attached before playback

The equalizer is set up before the stream starts. Attaching it mid-playback costs about a second of silence — not a crash, just a gap, and the kind of detail that only shows up if you measure it.

The package
From the Microsoft Store, nothing to install first

Self-contained: .NET 10, the Windows App SDK and LibVLC all travel inside the package. No runtime to fetch, no framework to match. The Microsoft Store is the only place to get it.

🛍

Installed and signed by the Store

The Store checks and signs the package, installs it for your Windows account without administrator rights, and delivers every update. A copy from anywhere else may have been altered.

Microsoft Store
🧹

Uninstall is complete

Removing the app also removes its station list, settings and cache. Save your stations as a playlist first (PLS tab) — playlists, equalizer presets and skins in Documents are never touched.

🚫

No background service

Nothing runs at sign-in unless you switch on Start with Windows, and nothing phones home. Updates come through the Store.

What leaves your computer
Only what a radio has to send

The app connects to the stations you choose, to iTunes or Deezer to look up the cover of the track that is playing, and to radio-browser.info or AudioAddict to find a station's logo. Nothing else: no analytics, no crash reporting service, no account, no ads. The full list is in the privacy policy.

📁

Your files, in the open

Playlists, equalizer presets and skins you save are plain files in Documents\RadioA, in the same formats as on the phone. Copy them across and they work. Your station list and settings stay in the app's folder under %LOCALAPPDATA%.

🪵

The log is off

No diagnostic log is written unless you create an empty file called DIAG in Documents\RadioA. It stays on your disk either way — there is nowhere for it to be sent.

📜

Licences in the package

LibVLC and LibVLCSharp under LGPL-2.1, .NET MAUI and the Community Toolkit under MIT, Material Icons under Apache-2.0. Full texts install next to the program and are readable from the app.

Honest assessment
What it does well — and what it doesn't

This is a young port of a mature phone app. Here is the state of it, so you can decide whether it is worth your disk space.

✅ Strengths
🔊
One engine for every streamLibVLC handles ICY, MP3, AAC, Ogg and HLS — no hybrid, nothing to configure
🛡️
Failure handling built for carsReconnect and a watchdog that counts audio buffers, brought over from the Android app
🪟
Behaves like a desktop programResizable window, two-column player, system tray, keyboard shortcuts, media keys, mouse back button
🎚️
Equalizer inside the audio pipelineWorks on every format, presets shared with the phone version
💾
Files you can readPlaylists in PLS and JSON, in Documents, portable between the phone and the desktop
📦
From the Microsoft StoreNo runtime to install first, no administrator rights, updates through the Store
🤫
No telemetry at allNo analytics, no crash service, no account; the diagnostic log is off unless you turn it on
🎨
Skins and VU metersSeven backgrounds plus custom colours, five measuring VU styles, a Vintage hi-fi style with needle meters
🆓
Free, no adsNothing is sold, nothing is shown, nothing is tracked
⚠️ Limitations
🧪
A young portExpect rough edges, and please report them on GitHub
🧹
Uninstall removes your station listSave it as a PLS playlist first; Documents stays untouched
💻
x64 onlyNo ARM64 build for Snapdragon laptops, and no 32-bit build
🔍
No built-in station catalogueSix example stations to start with; the rest you add yourself, import from a playlist or find through fmstream.org in your browser
☁️
No cloud syncPlaylists live on the machine; moving them is a file copy
🎙️
No podcastsLive streams only — no RSS feeds, no episode lists
📼
No recordingThe app plays streams, it does not save them
🚗
None of the car featuresAndroid Auto, the Bluetooth media session and the Wi-Fi to mobile-data switch belong to the phone and were not ported
👤
One developerUpdates arrive when there is time to make them
Android vs. Windows — full table
FeatureAndroidWindows
Audio engineLibVLC + ExoPlayerLibVLC only
ICY metadata and cover artyesyes
10-band equalizer with presetsyesyes
Skins, VU meters, sleep timeryesyes
PLS / JSON playlists, same formatyesyes
Reconnect and watchdogyesyes
Keeps playing in the backgroundforeground servicesystem tray
Keyboard shortcuts and media keys—yes
Resizable window, two-column player—yes
Mouse: wheel volume, back button, drag to reorder—yes
Android Autocertifiednot applicable
Bluetooth media session (AVRCP)yes—
Wi-Fi → mobile data fallbackyesnot applicable
Chromecast / TVyes—
DistributionGoogle PlayMicrosoft Store
🪟

Want to try it?

Free, no ads, no tracking. Windows 11 x64, from the Microsoft Store, your playlists stay yours.

🛍 Get it — coming soon 📱 Android version