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-Type header:
    • audio/mpeg → MP3
    • audio/aac / audio/aacp → AAC+
    • audio/ogg → Ogg Vorbis
    • audio/opus → Opus
    • audio/flac → FLAC
    • application/x-mpegURL → HLS (opens video modal)
  • HTTPS Proxy routing — HTTP streams routed through /proxy-stream.php to prevent browser mixed-content blocks on our HTTPS site

Stereo VU Meters

  • Web Audio API ChannelSplitterNode → dual AnalyserNode (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:2bllama3.2:3bphi3
  • 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