Search In
  • More options...
Find results that contain...
Find results in...

Jump to content
Quick note: Please use a real username when signing up. Random spam-style usernames may be removed.

Recommended Posts


  • Member ID:  1
  • Group:  Administrator
  • Topic Count:  15,197
  • Content Count:  16,184
  • Reputation:   2,756
  • Joined:  03/01/25
  • Last Seen:  
  • Device:  Android

Posted

Alright SAS crew 👊

Over the past little while I’ve been rebuilding SAS Radio from the ground up and I’ve finally got a proper “all-in-one” system running on the site — coded in-house and built specifically for IPS 4.7 / our theme.

Here’s a full rundown of what’s now live (and what’s been improved), from the very beginning:

1) Brand new SAS Radio Player (custom build)

I started by ditching the basic/embed style player and built a proper full-width SAS Radio player block that matches the site aesthetic.

Includes:

Play / Pause + Mute

Volume slider with saved settings

“Listen in Media Player” PLS link

A clean top bar showing connection + live status

A smoother, more realistic waveform visual

Everything is wrapped in a protected layout (hard reset) so IPS/theme CSS can’t break it.

2) Live server + now playing integration (real-time)

Next job was to make the player actually talk to the stream properly, so I hooked it into the station endpoints so it updates in real time:

Live updating:

Current listeners

Bitrate

Online / Offline status

AutoDJ vs DJ Live mode

Live DJ name (when someone is broadcasting)

Now playing (track + artist)

No more stale stats / “stuck on one song” issues — it refreshes cleanly.

3) “Mini Info” panel (clean + mobile friendly)

Then I built a mini dashboard inside the player (no messy stacked text) showing:

Current DJ

Now Playing

Next Live Event

Peak listeners

This part is responsive and stays readable on mobile without destroying the layout.

4) Peak listeners tracking (server-side)

I implemented a peak listeners system that updates automatically as the listener count rises.

So now we’ve got a real peak count that doesn’t reset every refresh and doesn’t just mirror “current listeners”.

5) DJ Booking system (members can claim slots)

After that I added a DJ booking system so approved DJs/staff can claim time slots.

Book / unbook controls

Supports staff override

Designed so the schedule can be “empty” and filled by DJs

Next Live Event pulls from the bookings so it shows the next real broadcast

This sets us up for proper scheduling without me manually editing the timetable every week.

6) “Members Tuned In” (shows who’s actually listening)

This one was a big one — I wanted the site to show which logged-in members are tuned into the radio right now.

So I built a listener tracker that:

Sends a lightweight heartbeat only while the audio is playing

Stores active listeners for a rolling time window

Pulls a live list and shows them in the block as name chips

Includes group styling (prefix/suffix), and links to profiles

So now you can literally see who’s listening with you in real time.

7) Autoplay behaviour improvements (browser-safe)

Autoplay rules are strict in modern browsers, so the player now handles it properly:

Attempts autoplay

If blocked, it falls back in the safest way

Remembers mute + volume preferences

So it behaves consistently without randomly killing the UI.

😎 Cleaner UI labels + tweaks

Small but important polish changes:

“Listening Now” renamed to “Members Tuned In”

Removed the extra “Count” line to keep it clean

Removed “SAS Radio • Mini Info” text so it looks more professional

Moved focus to Peak Listeners + LIVE status where it matters

What this means for SAS

This is basically a full custom radio system built directly into IPS:
Looks like it belongs on SAS
Updates in real time
Supports live DJs + bookings
Shows community activity live
Scales nicely for future upgrades (schedule page, sidebar mini version, etc.)

If anything looks off on your device, or you want to add features (like a compact sidebar version / live schedule widget / DJ countdown), drop a reply and I’ll tweak it.

More updates soon 👀🔥

— Future Focus / SAS Admin

If you find a dead link ask for a reupload in the topic.


  • Member ID:  588
  • Group:  +VIP Member
  • Topic Count:  99
  • Content Count:  285
  • Reputation:   288
  • Joined:  19/07/25
  • Last Seen:  
  • Device:  Macintosh

Posted

This is epic work!


  • Member ID:  1
  • Group:  Administrator
  • Topic Count:  15,197
  • Content Count:  16,184
  • Reputation:   2,756
  • Joined:  03/01/25
  • Last Seen:  
  • Device:  Android

Posted

Alright…

A lot of you have seen the radio evolving over the past few months, but I don’t think people realise just how deep this thing has become. What started as a simple stream embed is now a fully custom-built radio system, coded and engineered specifically for Serious About Sound. This isn’t some plugin. This isn’t some off-the-shelf widget. This is custom infrastructure.

The radio player has been completely rebuilt from the ground up. It now runs on a custom HTML, CSS and JavaScript layout, with real-time now playing pulled via API, live DJ detection, peak listener tracking, and a full members tuned-in system. There’s a persistent pop-out player, a custom waveform visualiser, media player handoff without breaking stats, and auto refresh without page reload. It’s no longer “just a player.” It’s a live data interface.

The player now talks directly to the stream backend and server endpoints. We’re pulling current listeners, server-side tracked peak listeners, bitrate, Live or AutoDJ mode, current DJ, track metadata, upcoming booked slots, and members actively listening — all dynamically. No page refresh. No fake counters. No manual updates.

This is where it gets serious. I’ve built a full XP and rank system tied directly into the radio. You now earn XP for listening while active, staying unmuted, catching live DJ sets, maintaining daily streaks, weekend listening, and long-term dedication. The system tracks streaks and best streaks, handles AFK detection, blocks XP if muted or volume is zero, doubles XP during live sets, awards achievements, stores recent achievements server-side, and syncs already-earned achievements without re-triggering toasts. It even safely awards IPS badges behind the scenes. This isn’t cosmetic — it’s fully functional and persistent.

Achievements are now server validated, de-duplicated, stored per user, shown in a Recent Achievements panel, toasted on unlock, and pulled via a state endpoint to avoid re-trigger bugs. No double-awards. No spam. No exploits.

The player now tracks who is actively listening. Using heartbeat checks and session validation, the system shows members tuned in, automatically removes inactive users, doesn’t rely on guesswork, and respects AFK logic. This makes the radio feel alive.

We also now have a DJ booking system. There’s live slot booking, group-restricted DJ permissions, auto next-slot detection, admin unbook controls, schedule integration, and real-time refresh. DJs can claim slots. Staff can override. Members can see what’s coming next.

Peak listeners are now tracked server-side and persisted properly. No more temporary peaks. No more reset issues. Real numbers.

Everything is integrated. The system now includes stream API integration, server-side endpoints, custom database handling, XP logic, achievement logic, UI state management, heartbeat tracking, IPS badge awarding, live metadata parsing, auto refresh loops, and fail-safe fallbacks. This isn’t just cosmetic work. This is infrastructure.

SAS isn’t just a forum anymore. It’s becoming a live radio platform, a gamified listening experience, a DJ ecosystem, and a community-driven broadcast system. Everything you see has been custom built specifically for this site. No shortcuts.

And this isn’t finished. The next phases will likely include expanded rank tiers, DJ XP, listener leaderboards, event-specific achievements, seasonal challenges, and possibly a mobile-optimised standalone radio page.

If you’ve been listening, you’re part of this evolution.

This is just the beginning.

If you find a dead link ask for a reupload in the topic.

×
×
  • Create New...