-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Rework master sync internal clock behavior #2376
Conversation
bpm display not updated on track load -- will fix |
huh, now I can't reproduce this. I'll keep an eye out for it though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for picking this up.
I have left some minor comments.
The code looks good. I think we need sorrowly manual testing before merge.
I think it makes sense to do after the half/double remove is reverted.
Had to fix a bug in how beat distances are calculated because bpmcontrol didn't know about beat distance adjustment.
Please apply this to make CMake work:
|
This works nice. |
I reintroduced this file in an update so this should work again |
This is a very complicated PR, but if other people could test master sync mode (push and hold sync on more than one deck) and play around with it, including auto dj, I'd appreciate it! This goes double for tracks that are beatmapped (old disco, etc) rather than gridded. |
This could eventually grow into an enum if necessary
Co-Authored-By: Be <be.0@gmx.com>
yeah there's a lot going on. And it looks like basesyncablelistener is probably not needed at all since only EngineSync inherits from it |
Maybe we need it later when we add midi sync? |
midi sync would just be a Syncable like the decks are -- just a source of clock that can be Explicit Master |
OK, we should probably merge the classes then. |
Can that please wait for a followup PR? |
I believe all notes are addressed |
Did some brief test at the track end and everything works as expected. @uklotzde Merge? You have an open review here. |
notes addressed, thanks! |
all approved, who wants to push the button? |
woo thanks! |
By the way, I'd appreciate if you wrote a blog post about master sync and also give some usage examples for explicit master. I bet most users have no idea that this exists. If you agree, can you add yourself to the list in mixxxdj/website#77? |
Any Ideas how to expose explicit master via GUI? We could make the sync button in a different color or with a highlighted border. Right clicking the sync button could toggle master sync. |
Let's take that discussion to zulip |
…mastersync Roland DJ-505: Update for explicit sync_master change from #2376
See https://bugs.launchpad.net/bugs/1851985
This change reworks how master sync hands off between decks and the internal clock.
Before: Internal clock always active, so even if only one sync deck is playing, it's locked to the internal clock bpm. For beatmap (non-const beatgrid) tracks, this would cause the track bpm to be locked at the initial bpm. This causes weird effects as the track's bpm wants to change but isn't allowed to.
After: If only one sync deck is playing, it is Master. This allows its rate to remain constant and let the bpm float up and down. If two decks are playing, then Internal Clock takes over and both tracks play at the same rate. Once a single track is playing, the rate follows that deck.
I had to rework a lot of code and a lot of tests. This is a large change, sorry! Master Sync code has always been a little spaghetti-ish.
Note: This includes my change to remove half/double bpm adjustment. I'll restore that code for this PR soon.