Skip to content

v0.3.22 — Auto-DJ scoring engine + Samsung TV parity

Latest

Choose a tag to compare

@aroundmyroom aroundmyroom released this 11 Aug 16:03

Velvet v0.3.22 — Auto-DJ scoring engine + TV parity

A smarter Auto-DJ brain for the web player, now also running on the Samsung TV app.

Auto-DJ — weighted scoring engine, year/era continuity, smarter fallback

Auto-DJ used to accept whatever song the server handed back first. It now asks
for up to 5 candidates per pick and scores each one before queuing the best:

Signal Weight What it checks
Harmonic (Camelot) fit 25% Same key, adjacent key, or two steps away
Genre compatibility 15% A matrix of transition scores (e.g. electronic↔disco 0.7, electronic↔hard 0.05) rather than a strict same/different check
Last.fm similarity rank 20% How close the artist is to the seed artist on Last.fm's similar-artist list
BPM proximity 20% Blended against a rolling tempo average
Year/era proximity 10% New — a rolling average of the last 8 picked years, so a run of similar-artist hops can't quietly drift from 2005 to 2023
Artist diversity 10% Penalises artists played recently in the session

Fixes bundled with the new engine

  • BPM/harmonic anchors no longer seed from a manually-played song. Previously, switching Auto-DJ on while listening to an unrelated track (e.g. a slow ballad) could lock the whole session to that tempo, exhausting the similar-artist pool almost immediately. The very first Auto-DJ pick is now unconstrained and lets artist/genre/harmonic signals guide it — BPM continuity kicks in naturally once the first real DJ pick plays.
  • Tier-3 "free pick" fallback (used when nothing matches BPM/key constraints) now retries up to 3 times and still enforces the keyword filter and hard genre-group jump guard, instead of accepting anything unconditionally.
  • Genre-escape fallback (used to break out of a stuck genre run) now validates its candidate the same way as every other pick; if the escape candidate is itself blocked, the original pick is kept.
  • Artist-cooldown list capped at 15 entries sent to the server (was up to 500). On smaller libraries the full history could exhaust the whole catalog, silently disabling the cooldown constraint server-side.
  • Compound artist names ("A & B", "A vs. B", "A pres. B", "A x B") are now split and tried individually against Last.fm until one returns results, and each match now carries its similarity rank for the new scoring engine.

Velvet TV — Auto-DJ parity

The Samsung TV app's Auto-DJ was a simple "pick a random unplayed song" loop.
It now runs the same scoring/continuity engine as the web player: similar-artist
matching, BPM continuity, harmonic mixing, year/era continuity, artist diversity,
and the same 3-tier fallback (similar+BPM+key → library-wide BPM+key → free pick).

The TV has no settings screen, so there's nothing to configure — these all run
with fixed defaults tuned to match the web app's behaviour. The keyword and
genre whitelist/blacklist filters remain web/desktop-only, since editing a list
of words or genres needs a UI the remote doesn't have.


Downloads

Samsung TV app (.wgt)

Docker image

docker pull ghcr.io/aroundmyroom/velvet:v0.3.22
docker pull ghcr.io/aroundmyroom/velvet:latest