Auto DJ: Synchronizing queue's top item and next deck

Bug #1727747 reported by Asfan Shirim
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Confirmed
Wishlist
Unassigned

Bug Description

This is a feature request, although for me is fixing an unwanted AutoDJ behavior.
Continuing https://www.mixxx.org/forums/viewtopic.php?f=1&t=9409

I wish to have a feature that synchronizes the AutoDJ's top queue item with the next available deck, when AutoDJ is enabled.

What currently happens in Mixxx ?
1. AutoDJ is enabled and playing from the list.
2. One deck is playing while the second deck is queued with the top track in the AutoDJ queue.
3. If I move a different track up the queue to be top (or move the top track downward), the next deck still points to the track that was previously in queue.

I find this terribly confusing. It already happened several times that I changed the top track, but forgot to load it to the deck.

I think there should be an option to enable synchronizing the top queue slot with the next available deck, so when I change the one the other changes as well.
Additionally, if I double-click a track to load to the deck, it will ALSO be added to the top slot of the AutoDJ queue.
If I double-click on a track that is already in the AutoDJ list, it will moved to the top and loaded onto the deck.

I think my suggested feature is very intuitive and it is what I expected as the default behavior of AutoDJ.

Tags: autodj
Changed in mixxx:
status: New → Confirmed
importance: Undecided → Wishlist
Revision history for this message
Daniel Schürmann (daschuer) wrote :

> I might be able to adopt this. Can you give a few pointers where in the code I should focus my attention?

Cool, thank you very much.

I think the main issue is solved, if loading a track to an Auto DJ enabled deck is also added to the topmost AutoDJ queue position.
A question is what should be done with the old track. IMHO it should go to #2 because it is still a valid candidate. If the main purpose is to dismiss the track, the user can use eject.

A second aspect is that if the just loaded track was originally in the Auto DJ queue, it should be removed from the original position to avoid to play this track again later.

IMHO there is no need to have this behaviour configurable, because it sound so natural that everyone van make use of it.

We already have a signal slot for it, where the new code can be hooked in:
https://github.com/mixxxdj/mixxx/blob/master/src/library/autodj/autodjprocessor.cpp#L761

The queue can be accessed via m_pAutoDJTableModel

Do you have already a build environment?
This is a good place to start reading:
https://www.mixxx.org/wiki/doku.php/bugfix_workflow
Or just ask.

Revision history for this message
Asfan Shirim (asfan.shirim) wrote :

Here is the detailed behavior I have in mind.

* When AutoDJ is disabled, the behavior remains the same.
* When AutoDJ is enabled, then:
1. For any change to the AutoDJ queue top track, the next available deck will be loaded with the new top track. The change in the queue may occur due to moving a track to the top, moving the top track down, removing the top track, or adding a new top track.
2. Double-clicking a track in the AutoDJ queue moves the track to the top of the queue (thereby causing it to be loaded to the next available deck).
3. Double-clicking a track outside of the AutoDJ queue (e.g., another playlist/library) does as follows:
3A. Typically, the track is added to the AutoDJ queue, at the top (thereby causing it to be loaded to the next available deck). See exception in 3B.
3B. If the last change of the AutoDJ queue was due to 3A, then the top track is REPLACED with the track we double-clicked. See explanation of this behavior below.

The above behavior is set so the top AutoDJ queue track will forever be next one to be played when AutoDJ is enabled. This gives very natural and intuitive attributes to the AutoDJ feature. The exception in 3B is in place so we do not add tracks to the queue by mistake. E.g., double-clicking a track to play it next, but then deciding to play something different and we double-click another track to set it as top. Without this exception the first track we double-clicked would still be in the queue at the second position.

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

3B might be hard to understand, because we have to track, what was the reason for track #1 to be on top. This might be forgotten by the user after a while so the behaviour may feel like a bug.

The current implementation for this case is not too bad:
* double click: track is played next, ditching the cued track, the track may stick on #1.
* Context Menu "Add To Auto DJ (Top)": play track after the cued one.

Currently, if you like to save the loaded track to Auto DJ you can drag it to the AUTO DJ cue before you double click on the new track. This is kind of odd, because you may loose the context of your new track.

I think it depends on the original track itself if it is still relevant to be played next or not.
So it will be not too bad to always save the original loaded track to Auto DJ cue.
In case this is wrong you can always skip this track later without loosing the library context like right now.

> ... thereby causing it to be loaded to the next available deck.

The proposed way of implementation in #1 seems to be the easiest to implement. For 1. you just need to "prevent" to move a track to #1 and load it instead, which moves the track to #1 afterwards and the cued track back to #2.

We need to be aware that this way a ready cued track will be kicked out of the deck. Can this happen accidentally?

Revision history for this message
Asfan Shirim (asfan.shirim) wrote :

Is there a working Visual Studio project I can use? I got a working build, but I'm hoping I can properly use an IDE for windows development.

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

I am afraid not. I am on Linux using Eclipse but maybe someone else can give hints for VS.

https://www.mixxx.org/wiki/doku.php/developer_tools

Contains links to setup eclipse or qtcreator

Revision history for this message
Sébastien BLAISOT (sblaisot) wrote :

I'm on windows and use atom.

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/8956

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.