CasterClub SSL Certificate
This website is secured with a DigiCert TLS/SSL certificate.
- Issued To: www.casterclub.com
- Issued By: DigiCert Inc
- Valid From: Jan 1, 2025
- Valid To: Dec 31, 2025
- Encryption: 256-bit TLS 1.3
Verified independently via your browser's certificate viewer.
CasterClub Web Player Documentation
CasterClub WebPlayer v3.0
Release: March 2026
URL: https://yp.casterclub.com/webplayer.php
Engine: Web Audio API · ICY/ICY2.2 · Ollama AI · HTML5
Overview
The CasterClub WebPlayer is a full Winamp-style popup player purpose-built for Icecast-based internet radio. It opens in a 980×720 popup window and provides a rich broadcast experience with real-time audio analysis, AI-powered artist intelligence, and complete metadata tracking.
Browser Compatibility
| Browser | Status | Notes |
|---|---|---|
| Firefox (latest) | ✅ Best | Recommended — best ICY + Web Audio support |
| Chrome / Chromium | ✅ Good | Autoplay may require user gesture |
| Brave | ✅ Good | Same as Chrome |
| Edge | 🟡 OK | May require media permissions |
| Safari | 🟡 Limited | Partial Web Audio API + CORS restrictions |
Layout
The player has a three-column layout inside the popup window:
┌─────────────────────────────────────────────────────────────────┐
│ Station Name · Genre · Bitrate · Codec [LED display] │
├─────────────────┬───────────────────────┬───────────────────────┤
│ LEFT COLUMN │ CENTER COLUMN │ RIGHT COLUMN │
│ │ │ │
│ Transport │ Waveform / Spectrum │ AI Artist Intel │
│ Play / Stop │ Beat-reactive canvas │ (Ollama gemma2:2b) │
│ │ │ │
│ Stereo VU │ Station Info │ Song History (20) │
│ L ████░░ -12dB │ Server · Codec │ ▶ Song Title 00:00 │
│ R ██░░░░ -18dB │ Bitrate · Format │ ▶ Previous Song │
│ │ ICY2.2 Extended Info │ │
│ Peak hold │ DJ / Show / Artwork │ │
└─────────────────┴───────────────────────┴───────────────────────┘
│ Credits: CasterClub WebPlayer v3.0 · ICY/ICY2.2 · Web Audio │
└─────────────────────────────────────────────────────────────────┘
Features
Audio Engine
- HTML5
<audio>element — plays all browser-supported codecs - Codec auto-detection from HTTP
Content-Typeheader:audio/mpeg→ MP3audio/aac/audio/aacp→ AAC+audio/ogg→ Ogg Vorbisaudio/opus→ Opusaudio/flac→ FLACapplication/x-mpegURL→ HLS (opens video modal)
- HTTPS Proxy routing — HTTP streams routed through
/proxy-stream.phpto prevent browser mixed-content blocks on our HTTPS site
Stereo VU Meters
- Web Audio API
ChannelSplitterNode→ dualAnalyserNode(Left + Right channels) getFloatTimeDomainData()→ RMS calculation → dBFS reading- 60-segment canvas bars, 60fps via
requestAnimationFrame - Green → Amber → Red gradient (−40 dBFS to 0 dBFS)
- Peak-hold indicator with 2-second decay
- Clipping indicator at 0 dBFS
Beat-Reactive Spectrum Visualizer
getByteFrequencyData()— 120 frequency bars- Bass-bin beat detection — background pulse on kick/bass hits
- Smooth bar-height animation with decay
- Teal/cyan color palette matching CasterClub brand
ICY / ICY2.2 Metadata
Metadata polled every 5 seconds via /proxy-meta.php:
| Field | Description |
|---|---|
StreamTitle |
Currently playing song (inline ICY metadata) |
icy-name |
Station name |
icy-genre |
Music genre |
icy-br |
Bitrate |
icy-description |
Station description |
icy2-show-title |
Current show title |
icy2-dj-handle |
DJ on air |
icy2-track-artwork |
Album art URL |
icy2-station-slogan |
Station tagline |
icy2-upcoming-show |
Next show info |
icy2-chat-url |
Station chat |
icy2-request-url |
Song request link |
icy2-tip-url |
Tip/donate link |
icy2-social-* |
Social media links |
icy2-emergency-alert |
Emergency alert message |
icy2-hashtags |
Station hashtags |
AI Artist Intelligence (Ollama)
- Powered by Ollama running locally — no external API calls
- Model: gemma2:2b (1.6 GB, Google — best quality/size ratio)
- Fallback chain:
gemma2:2b→llama3.2:3b→phi3 - Triggered on song title change (not on timer)
- Returns 2–3 sentences about the artist/track — style, legacy, interesting fact
- Displayed in the right panel with model badge
Song History
- Tracks last 20 songs with timestamps
- Newest entry highlighted with fade-in animation
- Scrollable list with thin scrollbar styling
- Persists for the lifetime of the popup session
HTTP → HTTPS Proxy
All http:// stream URLs are automatically routed through our proxy to prevent browser mixed-content errors:
Browser → https://yp.casterclub.com:443/proxy-stream.php?id=N → http://station:port/stream
The proxy:
- Forwards ICY headers (
icy-name,icy-genre,icy-metaint, etc.) - Streams audio in real-time chunks using
CURLOPT_WRITEFUNCTION - Blocks private IP ranges (SSRF protection)
- Accepts
?id=<station_id>(DB lookup) or?url=<encoded_url>
URL Parameters
| Parameter | Description |
|---|---|
?id=N |
Station DB ID (preferred — enables proxy + full station info) |
?url=<encoded> |
Direct stream URL (no DB lookup) |
?name=<encoded> |
Station name override |
Example:
https://yp.casterclub.com/webplayer.php?id=1732&name=DOBYTEK+DnB+radio
Metadata Proxy Endpoints
/proxy-meta.php?id=N
Fetches live metadata for a station — polls Icecast status-json.xsl and reads inline ICY metadata block. Returns JSON:
{
"stream_title": "Artist - Song Title",
"icy_name": "Station Name",
"icy_genre": "Rock",
"icy2_dj_handle": "DJ Name",
"icy2_show_title": "Morning Show",
"icy2_track_artwork": "https://..."
}
/proxy-ai.php (POST)
Generates artist intel via Ollama. Body:
{ "song": "Metallica - Enter Sandman", "station": "Rock FM", "genre": "Metal" }
Returns:
{ "response": "Metallica is an American heavy metal band...", "model": "gemma2:2b" }
Known Limitations
- AI response time: First request after server restart may take 10–30s while the model loads into memory
- Popup blocking: Some browsers block
window.open()— the player falls back to opening in a new tab - HTTPS-only streams with self-signed certs: Proxy accepts self-signed upstream certs (
CURLOPT_SSL_VERIFYPEER=0) - Video streams (
application/x-mpegURL,video/*): Open in a<video>modal overlay instead of the audio engine
Version History
| Version | Changes |
|---|---|
| 3.0 | Complete rewrite — Winamp-style popup, stereo VU meters, spectrum visualizer, ICY2.2, Ollama AI, song history, proxy routing |
| 2.0.2b | VU meter stability, 16px Now Playing font, status polling improvements |
| 2.0 | Web Audio API integration, basic VU meters |
| 1.0 | Initial HTML5 player with basic ICY polling |
Credits
CasterClub WebPlayer v3.0
ICY/ICY2.2 Protocol · Web Audio API · Ollama AI (gemma2:2b) · HTML5
© 2026 CasterClub.com / MCaster1 LLC — All rights reserved