mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.25k stars 1.24k forks source link

AutoDJProcessor: Add option to reset the crossfader to neutral #13332

Closed cr7pt0gr4ph7 closed 3 weeks ago

cr7pt0gr4ph7 commented 3 weeks ago

Update: Closed, see #13303 for a different solution to the same underlying problem (#11571).

What does it do?

Add a simple configuration option for the Auto DJ that always resets the crossfader to neutral (0.0) while only one track is playing. This improves the use case of switching back and force between manually loading tracks and using the Auto DJ.

Is it tested?

I've been actively using a build that includes these changes for a few weeks now, and so far everything seems to work exactly as expected.

Are there any remaining open questions?

The setting's default value is currently false, so the non-reset behavior is the default.

What Problem Does This Solve?

Use a laptop with a small screen, and no external DJ controller. Play two tracks using Auto DJ, then turn it off. Load another track manually, press play, and.... wonder if you have broken Mixxx because now, only one of two decks works. The UI looks the same, so you have no idea why, and just assume it's a bug.[^1]

[^1]: This story happened to me a few times (a part of those live...) before I had figured it out:

So, my expectations as a user are:

Three solutions come to my mind, the last of which was implemented here:

  1. Make sure the crossfader is always visible (but a user might still overlook it)
  2. Reset the crossfader when the Auto DJ is being turned off (but avoid doing so when the user has actively changed the crossfader's value, which could get complicated).
  3. Reset the crossfader as soon as the Auto DJ is not actively using it to perform a crossfade.
ronso0 commented 3 weeks ago

Did you notice #13303? FWIW that PR also cleans up the AutoDJ preferences page, so there are some conflicts to be expected (if that is merged before this PR, which is very likely since #133030 addresses a long standing feature request and targets 2.5 while this PR targets main)

cr7pt0gr4ph7 commented 3 weeks ago

Did you notice #13303? FWIW that PR also cleans up the AutoDJ preferences page, so there are some conflicts to be expected (if that is merged before this PR, which is very likely since #133030 addresses a long standing feature request and targets 2.5 while this PR targets main)

Oh, well, not until your comment :sweat_smile: Both this PR and #13303 solve the same underlying issue #11571 [^1], so only one of these should be merged anyway. The code in this PR was written one month before #13303 appeared (so the latter didn't turn up when I looked for related PRs), but I intentionally waited to see if my changes were stable. You just beat me to the punch :D

Therefore closing this PR for now, feel free to reopen.

[^1]: Albeit in two slightly different ways - resetting to 0 when Auto DJ is disabled vs. resetting to 0 when a crossfade has finished & only one track is playing. Both ways have their pros and cons.

ronso0 commented 3 weeks ago

You just beat me to the punch

Well, sorry, actually it was @Eve00000 and I adopted their PR ; ) Anyway, sorry you invested time for this.

In general, especially with significant UX changes like this (even if they'optional) it is best to discuss them first. Either comment on the bug report, open a separate feature request or join the devs on Zulip.

Happy coding!

cr7pt0gr4ph7 commented 3 weeks ago

Well, sorry, actually it was @Eve00000 and I adopted their PR ; ) Anyway, sorry you invested time for this.

No harm done :) I had an immediate, personal pain point which I wanted to solve, so whipping up a bit of code was the quickest way to do it.

In general, especially with significant UX changes like this (even if they'optional) it is best to discuss them first. Either comment on the bug report, open a separate feature request or join the devs on Zulip.

Will do :) If often experiment for myself before going into a discussion, though, so that I'm aware of possible solutions and alternatives - sometimes the experiment actually turns out to be enough of a solution. I'll try to take care not to unnecessarily take up your time with duplicate work in the future. (On another note, I didn't actually consider this UX change to be this significant, though, when implemented in an unobtrusive way).