Track history window too large?

Bug #1766163 reported by Jamie Gifford
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Committed
Medium
ronso0

Bug Description

The Track History mechanism deliberately omits tracks that have been played "recently". The definition of "recent" is hard-coded to use a window of 6 tracks in setlogfeature.cpp.

A window size of 6 is inappropriate for some use cases. For example, in tango DJing it is common to separate blocks of 3 or 4 tracks with a "filler" track. With a window size of 6, the filler tracks won't be recorded properly in the history logs if the same track is used repeatedly.

Could the window size be reduced (eg to 3), or made configurable?

Changed in mixxx:
status: New → Confirmed
importance: Undecided → Medium
Changed in mixxx:
milestone: none → 2.2.0
Revision history for this message
Daniel Schürmann (daschuer) wrote :

This is related to the code that decides which track is currently. On one hand, we want to catch any track changes like requested here, on the other hand, a mashup of all four decks should not change the current track.

I think we need to do something mor intelligent, maybe we need a timer, or luck if a track is paused an re-cued.

Any idea?

Revision history for this message
Jamie Gifford (jamie.gifford) wrote :

Currently the code in PlayerInfo::updateCurrentPlayingDeck examines all playing decks and picks the one with the highest gain as the "current" deck. When the "current deck" changes, it emits the currentPlayingTrackChanged signal, which is then filtered by SetlogFeature using the window of 6 to determine if a new history entry is written and the playcount is incremented.

Fair enough that a mash-up of multiple decks shouldn't cause the history to spasm, and I guess the window of 6 has proven itself as a reasonable filter for that case.

But if there is only one deck contributing to the mix, there is no question of a mashup and so in that case it seems reasonable to drop the "window of 6" filter and just unconditionally write the history entry and update the playcount.

It looks like it would be simple enough to change the signature of the

currentPlayingTrackChanged(TrackPointer pTrack)

signal to something like

currentPlayingTrackChanged(TrackPointer pTrack, bool force)

and have PlayerInfo pass force=true when there is only one source contributing to the mix.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Yes something like this sounds reasonable.
We will hit the same issue if we start to publish the playing track at Twitter or as a RDS tag while broadcasting. So we should decouple the logic from the history feature.

I am still unclear when the "force" flag should be set. Or should we just raise a timer, that removed duplicates for let's say 6 min?

Be (be.ing)
Changed in mixxx:
milestone: 2.2.0 → 2.3.0
Be (be.ing)
Changed in mixxx:
milestone: 2.3.0 → none
ronso0 (ronso0)
Changed in mixxx:
assignee: nobody → ronso0 (ronso0)
status: Confirmed → In Progress
milestone: none → 2.4.0
Revision history for this message
ronso0 (ronso0) wrote :
ronso0 (ronso0)
Changed in mixxx:
status: In Progress → Fix Committed
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/9259

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.