Master volume from 5–100%. Drag up/down or scroll the mouse wheel over it.
Controls two things at once: how far into a song playback starts, and how long the crossfade between songs lasts.
start offset = 40 × (1 − fade/10) seconds in | crossfade = 0.5 + 1.5 × (fade/10) seconds
FADE 0 → skips 40 s in, 0.5 s blend | FADE 10 → starts from 0 s, 2 s blend
Auto-advances between songs always use a short fixed 0.5 s crossfade regardless of the knob, so transitions stay tight.
Step backward or forward one song within the current mood. Wraps around at the ends. Scene context is preserved — the player remembers which scene and mood list you're in. In Random mode, both buttons pick a completely random song from any mood instead of stepping through the current mood.
Toggles shuffle mode. When active (highlighted), every song advance — natural endings, Next, Prev — picks a random song from a random mood across the entire library. Activating it jumps to a random song immediately. Clicking any mood button turns Random off. Changing scenes also turns it off and resets the variety timers (see below).
Pause suspends playback and freezes the auto-advance timer. Resuming continues from the exact position. If Chrome blocked audio on page load, the first click anywhere on the page unlocks it.
Each button starts that mood from a random starting song. Clicking an already-active mood button skips sequentially to its next song instead of restarting. Clicking any mood button also clears the current scene context and turns off Random mode — you're now DJing manually and the mood loops indefinitely until you change it.
Songs in a mood play in indexed order (A, B, C…). A timer fires near the end of each track (duration − crossfade − 0.15 s buffer) to start the next one seamlessly. When the last song in a mood finishes, the player either advances to the next mood (if a scene is active) or loops back to song A of the same mood (if no scene).
Activating a scene sets a mood list for that scene. The player picks a random starting mood from that list. Each time a mood's songs finish, it advances to the next mood in the list and cycles back to the start when it reaches the end.
If the same mood that's already playing is picked at scene activation, playback continues uninterrupted — no restart, no crossfade. The scene context is updated silently.
Clicking a mood button while a scene is active clears the scene context. The mood then loops itself without cycling.
A scene with only 1–2 moods would loop the same tracks indefinitely if the stream is left unattended. Variety mode prevents this. Two triggers run simultaneously — whichever fires first wins:
Every time mxSceneMoodIdx wraps back to 0 — meaning the player has played through the entire scene mood list once — a loop is counted. After 3 complete loops, Random mode activates automatically.
Example: a scene with 2 moods × 2 songs each ≈ 15 min per loop → variety kicks in after ≈ 45 min. A scene with 6+ moods would need ~3 h to loop 3 times, so it rarely triggers — by design, long lists don't need help.
Regardless of how many loops have completed, if the same scene has been playing continuously for 60 minutes, Random activates. This catches scenes with many moods that still feel stale in a very long unattended session.
Both triggers do the same thing: enable the 🔀 Random button (visually) and immediately switch to a random song from a random mood across the full library. From that point it behaves identically to pressing 🔀 manually.
Manual control always overrides automation. The loop counter and wall-clock timer both reset to zero when:
• You click a scene button (any scene, including re-clicking the current one)
• You click a mood button directly (also clears scene context)
• You turn Random off while a scene is active (timer restarts from 0)
• You turn Random on manually (timer is cleared — already in random, no need for it)