Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Conversation

cr7pt0gr4ph7
Copy link
Contributor

@cr7pt0gr4ph7 cr7pt0gr4ph7 commented Jun 6, 2024

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?

  • Suggestions for improving the label and tooltip texts for the settings are more than welcome.
  • The same goes for the name of the config option ([Auto DJ] ResetFaderToNeutralOnIdle)

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

  • For new users that just use Mixxx as a player with tempo control, a default value of true would be best to avoid the "surprise" that I had.

  • For advanced users, the only use case that would be affected by a default value of true is:

    • (1) Disable the Auto DJ while only one track is playing.
      or (2) Auto DJ is enabled and only one track is playing.
    • Crossfader is not touched before they...
    • ...manually start playing a second deck, and expect it to not be hearable until the fader is moved manually.

    I don't know how common this use case is in practice - maybe one of you has more insight into this?

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

So, my expectations as a user are:

  • For Novice Users: I can use Auto DJ to play a few tracks in full, turn it off, and play a few tracks manually without having to care about anything else.

    Which implies: I expect both decks to be playable from (aka. the crossfader to be neutral) when there's no reason (at this moment) for it not to be neutral, and no other visible indicator telling me otherwise.

  • For Advanced Users: Turning the Auto DJ off while two decks are playing and/or I want to manually control the crossfader does not cause the crossfader to jump.

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.

Footnotes

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

    • I had (inadvertenly, due to screen size) configured the skin to not show the crossfader.
    • I expected that turning the Auto DJ on and then later off again would not have any lingering side effects.
    • I just happened to lose on a 50/50 coin toss on which deck was active last.

@ronso0
Copy link
Member

ronso0 commented Jun 6, 2024

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
Copy link
Contributor Author

cr7pt0gr4ph7 commented Jun 6, 2024

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 😅 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.

Footnotes

  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
Copy link
Member

ronso0 commented Jun 6, 2024

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
Copy link
Contributor Author

cr7pt0gr4ph7 commented Jun 7, 2024

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants