Skip to content

Smart Fades: Improve discoverability and playlist experience #208

Description

@carlhye

MA 2.10 — Synthesized from Marvin/Carl meeting notes, June 5 2026


Problem statement

Smart Fades is one of MA's most distinctive features, and with 2.9's beat-aware algorithm it's now genuinely impressive. But it's buried: to enable it, users must navigate into player settings and scroll to the queue playback section. There's no visual feedback in the main UI that it's active, and users building a queue have no way to optimize track order for better fades. BPM and musical key data is being analyzed for every track but never surfaced, missing an opportunity to give users meaningful control over their listening experience.

Community signals

  • Music Assistant 2.7 Blog Post — Smart Fades — Confirms Smart Fades with BPM analysis shipped in 2.7. The feature is buried in individual player settings (Settings > Player > Audio > Enable Smart Fades), which is exactly the discoverability problem this opportunity addresses.
  • Individual Player Settings documentation — Official docs confirm Smart Fades is a per-player setting buried in the Audio section. No queue-level toggle exists.
  • Crossfade switch from HA? — User couldn't find crossfade controls and had to enable it manually from within the MA interface each time. "If I start the track from the MA interface and enable crossfade there it works fine" — clear discoverability failure.
  • Marvin confirmed in the June 5 meeting that multiple Discord users have explicitly requested BPM-range playlist building for running playlists — search #feature-requests in MA Discord for "BPM" or "running" to surface these threads before pitching.

Scope & Boundaries

In scope

  • Move Smart Fades toggle to the queue panel — persistent, visible, no settings navigation required
  • Display BPM and musical key in the track detail/overlay view
  • "Optimize queue by mixability" action in the queue: reorders current queue so musically compatible tracks are adjacent, maximizing fade quality
  • BPM range filter in dynamic playlists (slider with min/max: e.g. 90–130 BPM for a running playlist)
  • Show current track's BPM/key in the player bar or full-screen view (alongside waveform progress bar)

Not in scope

  • Global analysis cache (longer-term infrastructure — enables these features on low-power hardware but is a separate, larger project)
  • DJ-style long-form transitions / mashups (exciting, but a separate opportunity once the cache exists)
  • Automatic queue reordering without user action (opt-in only for now)

Foreseen solution

  1. Relocate Smart Fades and Don't Stop the Music toggles to the queue header area (above the track list), mirroring Apple Music's queue UI pattern
  2. Add BPM + musical key as visible metadata on the track detail view; optionally surface key info in the main track list row
  3. Add a "Mixability sort" button to the queue actions menu — when tapped, reorders the queue by musical compatibility (same key → compatible key → incompatible)
  4. Extend dynamic playlist filters with a BPM range slider
  5. Show BPM on the currently-playing track in the expanded player view

Risks & open questions

  • Is the musical key analysis reliable enough to expose publicly? What's the error rate on the current algorithm?
  • Queue reorder UX: should this be destructive (replaces queue order) or show a preview? What about user-added queue items?
  • BPM range slider for dynamic playlists: does the current playlist engine support numeric range filters on analysis data?
  • How does "mixability" interact with "Don't Stop the Music" — do they conflict?

Appetite

Small–Medium. Toggle relocation and BPM display are quick wins (Small). Mixability queue sort and BPM range filter are Medium. Can ship incrementally.

Execution issues

No response

Decision log

Date Decision Outcome
2026-06-05 Smart Fades toggle should be at queue level, not in player settings Agreed
2026-06-05 Global cache and DJ transitions scoped out of initial opportunity Agreed — follow-on
2026-06-23 Published to GitHub #208

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status
Draft

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions