-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Sync Lock: End of track checking is not needed #11035
Conversation
Note that if explicit leader is set it will stay on the deck that reached the end of the track and stopped. If people would prefer that it hand off leader to another deck if available we can do that instead. That was the intent of the feature but it was broken in the case that there was no other playing deck. |
This solves the GUI slowdown for me on Windows! |
Currently we've the following case, which can easily result in jumping beats in the audio output: I think a not playing deck must never stay Sync Leader. |
In this case of a stopped deck and a newly-loaded track I'm not sure we can predict that the user wants to keep the bpm of the loaded track vs the stopped track. No matter whether a deck is sync leader or follower, all sync decks will have the same BPM. So given the situation where deck 1 has a loaded track and both deck 1 and deck 2 have sync on, if the user loads a track in deck 2, either:
I think option 1, the current behavior, is more predictable because it is more likely that a user wants to keep the set playing at the same speed. If they want deck 2 to keep its natural bpm, they should turn off Sync (or, below, perhaps set it to explicit leader). If I'm misunderstanding your situation please make sure to explain the stopped/playing and sync states of all decks. There are a lot of variables involved. I am not 100% sure that a stopped deck should be prevented from being explicit leader. What is the use-case for the explicit option if the program can still override the user's choice? The point of explicit leader is to say "no mixxx, I really really want this deck to be in charge". For instance, I might set deck 1 to be explicit master even if it's stopped. Then when I load a new track in deck 1, it would keep the new track's bpm rather than change it to match other sync followers. That seems like a valid case for stopped explicit leader. |
(The primary use-case I have for explicit leader is when two variable-bpm tracks are playing back. The Leader will play at a constant rate, and the follower will adjust its speed to stay in sync, possibly causing audio artifacting unless keylock is engaged) |
I did some tests, but with standard alpha version, not with this PR. I can see the tempo change of Deck2 only when Deck2 is currently stopped, so Deck1 will stay as sync leader. |
yes this is how it works currently. I think the most important thing is that a track load does not cause a bpm change to other playing decks. |
Any news on this? Can I help with tests or similar to get this to main? |
This also fixes the GUI slowdowns for me. (this probably doesn't need more confirmation, but it would be nice to get this sorted out) |
With multiple positive replies, and the relatively small amount of code changed, I think we should merge this. And then, if there are any new issues that pop up, we can fix those as they appear. |
Been using this for the last couple weeks with and without sync and I have not yet run into any new issues that could be caused by this change. |
Thank you! |
may I ask why this bugfix didn't go into 2.4? |
If I revert the merge in Main using the Revert button, will the PR than be open again to be merged into 2.4? |
As the tooltip says Revert will only "Create a new pull request to revert these changes". |
It's not necessary to unset leader status at the end of the track based on the playposition heck. It will change automatically anyway.