Mcaster1MediaPlayer.exe is a standalone, lightweight audio player designed for both local files and ICY internet radio streams. It is launched from the command line, from the TagStack Media Library right-click menu, or directly from File Explorer.
The player uses a clean, low-latency pipeline:
waveOut output; INFINITE-wait blocking ensures no buffer starvation or premature stream-end detectionICY streams are handled by the IcyStreamReader component, which negotiates Icy-MetaData: 1, reads metadata intervals, and fires metadata-update messages to the UI as track titles change.
Mcaster1MediaPlayer.exe --file "C:\Music\artist - track.mp3"
Mcaster1MediaPlayer.exe --stream "http://stream.example.com:8000/live"
Mcaster1MediaPlayer.exe --stream "https://dnas.mcaster1.com:9443/mystation"
Mcaster1MediaPlayer.exe --playlist "C:\Music\song1.mp3" --playlist "C:\Music\song2.mp3" --playlist "C:\Music\song3.mp3"
Multiple --playlist flags build an ordered play queue. The player advances through the queue automatically when each track ends.
# Start with a specific file and queue additional tracks:
Mcaster1MediaPlayer.exe --file "C:\Music\opening.mp3" --playlist "C:\Music\track2.mp3" --playlist "C:\Music\track3.mp3"
CLI flag summary: --file plays a single file and clears any existing queue. --stream connects to an ICY stream URL. --playlist (repeatable) appends to the play queue. All paths and URLs must be quoted if they contain spaces.
The player window is a light-themed, resizable MFC dialog. All controls use GDI+ owner-draw rendering to maintain the consistent visual style regardless of the Windows system theme.
The artwork area displays:
icy-meta-track-artwork-url ICY 2.2 header, if the server sends it. Falls back to station logo from icy-meta-station-logo-url, then to a radio tower placeholder.Art loading is asynchronous — the ArtworkLoader component fetches or decodes art in a background thread and posts a message to update the UI when ready.
The info area shows Title, Artist, and Album for local files (read from MySQL if available, otherwise from file tags). For ICY streams, it shows the station name and the current now-playing title as it updates in real time.
All 9 transport controls are owner-draw GDI+ vector buttons — they render crisp at any DPI with the light theme palette:
| Button | Icon | Function |
|---|---|---|
| Previous | |◀ | Go to the previous track in the queue, or restart the current track if at the beginning |
| Rewind | ◄◄ | Seek backward 10 seconds |
| Play / Pause | ▶ / ▮▮ | Start, pause, or resume playback. Background turns accent-blue when playing. |
| Fast Forward | ►► | Seek forward 10 seconds |
| Next | ▶| | Advance to the next track in the queue |
| Loop | ↻ | Toggle loop mode — repeats the current track indefinitely |
| Shuffle | ⇼ | Toggle shuffle mode — randomizes the queue playback order |
| EQ | ≡ | Equalizer settings (placeholder — planned for a future release) |
| Favourite | ♥ | Mark the current track as a favourite (planned) |
The owner-draw progress bar shows elapsed / total time. Click anywhere on the bar to seek to that position. The current time and total duration are displayed as MM:SS / MM:SS. For streams (no known duration) it shows elapsed time only.
A GDI+ antialiased rotary knob control. The outer arc (gray) shows the full range 0–100%. The inner arc (accent-blue) fills to the current volume level. The knob face is card-gray with a dark needle and an accent-blue hub dot. Interact by:
Volume is applied to the waveOut output directly. The level is not saved between sessions.
When the player has a queue (built from multiple --playlist flags), the queue list is visible at the bottom of the window. It shows each item's title and artist. The currently playing item is highlighted. Double-click any item to jump to it immediately. The queue uses custom-draw to alternate row colors with the light theme.
When playing an ICY stream, the player reads inline metadata at the intervals specified by the server (icy-metaint). Each metadata update fires a UI refresh showing the new now-playing title. If the server sends ICY 2.2 headers (artwork URL, station verified flag, social links), the player surfaces the artwork from the URL.
| Key | Action |
|---|---|
| Space | Play / Pause toggle |
| Left Arrow | Seek -10 seconds (Rewind) |
| Right Arrow | Seek +10 seconds (Fast Forward) |
| Ctrl+Left | Previous track |
| Ctrl+Right | Next track |
| Escape | Close the player |
From the TagStack Media Library, right-click any track and select Play in Media Player. TagStack builds the command line automatically with the file path and launches Mcaster1MediaPlayer.exe. The player executable must be in the same folder as Mcaster1TagStack.exe.
The player can decode any format supported by the bundled FFmpeg libraries (avcodec, avformat, avutil, swresample):