Skip to content

Releases: mrketa/soundcloud-true-shuffle

SoundCloud True Shuffle v6.1.2

Choose a tag to compare

@mrketa mrketa released this 24 Jul 03:43

Firefox playback

  • Fixed crossfades getting stuck on mixing after several tracks.
  • Replaced incompatible Web Audio curve events with Firefox-safe audio timeline ramps.
  • Added background-safe recovery for paused or frozen crossfades.
  • Prevented native SoundCloud audio from starting behind a crossfade.
  • Improved stalled and expired stream recovery.

Audio and Auto Level

  • Reworked Auto Level around the selected volume target.
  • Kept 100% volume at unity gain.
  • Added safe per-track boosting and attenuation at lower volumes.
  • Added peak and master-headroom clipping protection.
  • Cached stable per-track measurements to prevent volume pumping.
  • Added a true unity path when Auto Level and EQ are disabled.

Queue and metadata

  • Fixed queue position after using Next and then Previous.
  • Improved exact Firefox waveform resolution and native fallback isolation.
  • Added Firefox, crossfade, Auto Level and queue regression coverage.

The release asset will be attached separately.

SoundCloud True Shuffle v6.1.2 Beta 1

Pre-release

Choose a tag to compare

@mrketa mrketa released this 21 Jul 16:49

Beta test

This beta focuses on playback stability and audio processing.

Changes

  • Replaced the aggressive dynamics limiter with a transparent oversampled safety clipper to prevent pumping.
  • Added a conservative stall watchdog for the custom audio player.
  • The watchdog only intervenes after a confirmed playback stall and first attempts a safe recovery before advancing.
  • Added regression coverage for the updated audio chain and stall handling.

Please test

  • Long playlists and the end of a shuffle round.
  • Background playback and tab switching.
  • Crossfade, equalizer and Auto Level.
  • Whether playback ever pumps, stalls or advances unexpectedly.

This is a test build and is not intended to replace v6.1.1 yet.

SoundCloud True Shuffle v6.1.1

Choose a tag to compare

@mrketa mrketa released this 21 Jul 00:50

Fixed

  • Fixed Firefox not displaying the currently playing track title in the browser tab.
  • Firefox popout windows now show Playing: Track Name during playback and True Shuffle while idle.
  • Added browser Media Session metadata for track title, artist, artwork and playback state.
  • Fixed queue and artwork state across Home, Feed, Library, Search, Discover and other SoundCloud routes.
  • Fixed navigation occasionally being blocked while True Shuffle was active.
  • Fixed newly added playlist tracks being missed during the first live queue synchronization.
  • Fixed unnecessary playlist sync requests from unrelated page updates.
  • Improved playlist addition and removal detection while shuffle is already running.
  • Added Like and Unlike controls to the True Shuffle PiP player.

Reliability

  • Added regression coverage for Firefox metadata, navigation, PiP controls and live playlist synchronization.
  • Preserved the active queue and current track while browsing outside the source playlist.

The userscript asset will be attached separately.

SoundCloud True Shuffle v6.1.0

Choose a tag to compare

@mrketa mrketa released this 20 Jul 22:23

SoundCloud True Shuffle v6.1.0

Live playlist sync

  • New tracks added after shuffle starts are automatically detected and shuffled into the remaining round.
  • Tracks removed from the playlist are automatically removed from the queue and Play Next.
  • The currently playing track is allowed to finish if it gets removed.
  • Queue numbers on SoundCloud reconnect correctly after playlist updates.

Background loading

  • Full playlists are now loaded from SoundCloud's playlist data instead of relying only on rendered page rows.
  • Switching tabs during loading no longer results in incomplete queues.
  • Missing track metadata is resolved in efficient batches.
  • Re-shuffle and cross-playlist merge use the complete playlist as well.

Reliability and cleanup

  • Added safeguards against partial SoundCloud playlist responses.
  • Failed metadata lookups are retried automatically.
  • Removed confirmed unused code and stale styles.
  • Expanded regression coverage for additions, removals, background loading and incomplete playlist snapshots.

Verification

  • 66 True Shuffle regression tests passed.
  • 30 audio and crossfade tests passed.
  • Tested against a real 117-track SoundCloud playlist.

SoundCloud True Shuffle v6.0.1

Choose a tag to compare

@mrketa mrketa released this 20 Jul 03:32

Fixed

  • Added compatibility with Better SoundCloud Feed picture-in-picture playback.
  • PiP now displays the currently playing True Shuffle track, artwork and timing.
  • PiP waveform and progress stay synchronized with True Shuffle, including in background tabs.
  • PiP play/pause, previous, next and seek controls now operate the True Shuffle player.
  • Fixed PiP Next incorrectly making the hub display not in queue for a queued track.
  • Native SoundCloud behavior remains unchanged whenever True Shuffle's custom player is inactive.

Verification

  • 32 True Shuffle regression tests passed.
  • 27 audio, crossfade, equalizer and Auto Level tests passed.
  • Userscript syntax and release files verified.

SoundCloud True Shuffle v6.0.0

Choose a tag to compare

@mrketa mrketa released this 20 Jul 01:01

Highlights

  • New two-deck audio engine is now the primary playback path, with SoundCloud retained as a safe fallback.
  • Added customizable DJ-style crossfade with 0–12 second duration, Smooth, Clean and DJ curves, and optional fades for manual skips.
  • Added a visual 5-band equalizer with built-in presets and persistent custom presets.
  • Added Auto Level with faster initial calibration and learned per-track levels.

Audio and controls

  • Added a continuous global output-volume slider.
  • Synchronized volume between the hub, custom decks and SoundCloud fallback playback.
  • Pause and resume now control both decks during an active crossfade.
  • Crossfades use the Web Audio clock for reliable background-tab operation.
  • EQ and Auto Level work with the primary player even when crossfade is disabled.

Reliability

  • Added safe fallback when a public progressive stream cannot be resolved or loaded.
  • Improved cross-browser behavior and background playback coordination.
  • Hardened equalizer preset storage, pointer cleanup and modal cleanup.
  • Added 55 automated regression tests covering shuffle, playback, crossfade, EQ, Auto Level, volume and persistence.

Install

Download SC.Trueshuffle-v6.0.0.user.js from the assets below and open it with Tampermonkey.

Special thanks to Abox Sotze on GreasyFork for suggesting the DJ-style crossfade feature.

SoundCloud True Shuffle v5.1.0

Choose a tag to compare

@mrketa mrketa released this 19 Jul 19:28

Highlights

  • Completely redesigned floating player and queue panel with a compact dark UI, dynamic artwork accents, a real waveform, and a resizable queue.
  • Round-based shuffle: every available track plays once before a fresh round is generated, with more balanced starting positions on small playlists.
  • One-click re-shuffle from the player header.

New

  • Queue and History tabs with persistent search.
  • Cross-playlist queue support with source-page switching.
  • Sleep timer and Stop after this round controls.
  • Persistent listening statistics and per-track priority controls.
  • Skip-based automatic deprioritization.
  • Draggable and resizable player and queue panel.

Fixed

  • Tracks no longer switch roughly 20-30 seconds before their actual end, including long tracks.
  • Prevented the brief SoundCloud auto-next audio bleed before True Shuffle selects the next track.
  • Queue search now stays active after using Play Next.
  • Playing a searched queue result no longer skips untouched tracks.
  • Tracks from earlier playlists in a cross-playlist queue can play correctly.
  • Feed tracks no longer open their profile instead of starting playback.
  • Fixed transitions between tracks with identical titles.
  • Fixed lifetime statistics double-counting.
  • Fixed delayed hub injection, stale suspended state after SPA navigation, queue viewport overflow, incorrect waveform assignment, round counters, and dead-track recursion.

Verification

  • 28 automated regression tests pass.

v5.0.0

Choose a tag to compare

@mrketa mrketa released this 13 May 19:00

v5.0.0

New Features

  • Redesigned hub — blurred artwork background, accent color extracted live from each track's artwork, SVG icons, larger album art panel
  • Sleep timer — auto-stop after 15/30/60 min or after 5/10/25 tracks
  • History tab — second tab in the queue sidebar showing all tracks played this session; click any to re-queue
  • Merge button — navigate to a second playlist mid-session and fold its tracks into the live queue without interrupting playback
  • Skip counter — tracks skipped twice in quick succession are auto-deprioritized so they surface less often
  • Persistent lifetime stats — total tracks played and listen time now accumulate in localStorage across sessions
  • Feed & stream support — shuffle now activates on /feed and /stream pages

Bug Fixes

  • Lifetime stats were double-counted when shuffle was stopped and restarted within 10 minutes
  • Clicking a history item showed "no new tracks found" (wrong toast message)
  • mergeCurrentPage could corrupt queue state if shuffle was stopped during the track-loading phase
  • start() could leave an idle background worker running if stop() was called during the initial playAt
  • Sleep timer was not cleared on manual stop, causing the dropdown to show stale state on next start
  • Dead track slot check used !== null which incorrectly passed for undefined entries

v4.1.0: bump version to 4.1.0

Choose a tag to compare

@mrketa mrketa released this 04 Apr 22:52

v4.1.0

What's new

Hub is now the central control point
The floating hub panel has been fully built out as the primary interface. It handles everything: playback controls, seekbar, now playing info, queue status, and shuffle settings — all in one place.

Queue sidebar simplified
The right-side queue panel is now a clean list-only view. The duplicate transport controls (prev/play/next) and seekbar that used to live there have been removed since they're already on the hub.

Queue toggle from the hub
A / pill button in the hub's queue section opens and closes the sidebar queue panel. No more edge tab cluttering the right side of the screen.

Old inject UI removed
The True Shuffle button, repeat checkbox and status text that appeared below SoundCloud's waveform controls are gone. The hub is the sole control point.


Bug fixes

  • Played counter no longer increments when going back — pressing ⏮ to return to a previous track was incorrectly bumping the x / N counter. It now only counts forward plays.

Performance & code

  • Track loading is ~1.9s faster: reduced poll interval (1200ms → 900ms), fewer stability checks before starting playback, removed a redundant post-scroll wait
  • Each track change is ~120ms faster: collapsed sequential pre-click waits into one
  • Removed ~300 lines of dead code (mini player, old inject UI, unused parameters)
  • Build: 1784 lines / 72 KB → 1404 lines / 51 KB

v4.0.1

Choose a tag to compare

@mrketa mrketa released this 04 Apr 12:54

v4.0.1 — Bug fixes & cross-browser compatibility

  • Fixed auto-advance permanently stopping if an error occurred during track transition
  • Fixed queue reorder race condition during same-playlist re-navigation (both Worker and fallback mode)
  • Fixed "Move up" in context menu skipping the track it moved
  • Fixed sidebar auto-scroll landing on the wrong row while in suspended mode
  • Fixed jumpTo running on a stopped session from stale DOM clicks
  • Fixed interval leak when navigating away to resume a suspended playlist
  • Added setInterval fallback for browsers/configs that block Blob Web Workers (CSP)
  • Added -webkit-user-select prefix for Safari compatibility
  • Fixed mini-player queue counter always showing "1 / N"
  • Fixed context menu overflowing off the right edge of the screen
  • Fixed ghost badges blocking live track elements after SoundCloud re-renders
  • Fixed sidebar not clearing after the queue naturally ends
  • Fixed play count incrementing on failed track loads
  • Fixed fresh shuffle cycle potentially repeating the last-played track immediately