Skip to content

Weighted / Probability-Based Shuffle (per track, rating & behavior driven) #344

Description

@YBTopaz8

Context
I came across a Reddit discussion where a user was looking for a music player that allows setting a probability for each track when using shuffle. Historically, this existed in Windows Media Player via ratings → probability, but modern players no longer support it well.
This aligns strongly with how Dimmer already models song behavior and intent.

Problem
Current shuffle modes are purely random and ignore:
user ratings
favorites
skip behavior
listening history
This makes “random” feel repetitive or disconnected from user taste.
Proposed Solution
Introduce a Weighted Shuffle (Smart Shuffle) mode where each song has a calculated weight instead of equal probability.
Selection is still random, but biased by user behavior.
Weight inputs (already available in Dimmer):
Rating
ManualFavoriteCount / IsFavorite
PlayCompletedCount
SkipCount
LastPlayed (recency)
Hidden songs → weight 0

Example behavior
Favorite + highly rated songs appear more often
Frequently skipped songs fade out naturally
Songs not played in a long time slowly regain weight
Hidden songs are never picked

Algorithm (high-level)
Compute a weight per song (integer ≥ 0)
Sum all weights
Pick a random number in [0..totalWeight)
Return the song whose cumulative weight contains that number

  • Optional Enhancements to add too!

Cooldown window to avoid repeats
Playlist-scoped weighting
Toggle between:
Pure Random
Smart (Weighted)
Debug view: “Why this song was picked”

  • Why this matters
    Preserves randomness while respecting taste
    No micromanagement required
    Differentiates Dimmer from most players
    Cross-platform friendly, no platform APIs needed

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions