-
-
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
Auto Dj + Sync enabled + Non const beat grid #9795
Comments
Commented by: ywwg There are a lot of problems with master sync and non-const beatgrids. I have been doing a lot of hacking and thinking to try to figure out how to resolve some hard problems. For instance: What should happen if a track with a non-constant grid slows down? I have a track that has a dramatic moment where it slows from 120 to 100bpm very quickly. Right now Mixxx keeps the BPM constant so this effect is lost (and the musical pitch suddenly rises unless I have keylock on). Should it be locked to the internal clock speed? Should it be allowed to slow down? What if there's another track playing? Should it slow down too? In my exploration, it seems that mixxx needs a concept of which deck should be considered "in charge" for the purpose of master sync. We do have the idea of an explicit master deck, but in the current code this is an invisible Internal Clock -- that's why it appears that the non-const track is matching the stopped deck. In reality, it's matching the Internal Clock, which was initialized to some BPM (which may have been the first deck, but could have been the second deck if both were stopped). Unfortunately trying to determine which deck "should" be master is very hard. What if the currently-playing deck is constant beatgrid, and a non-const beatmap track is loaded? |
Commented by: ywwg There are also a bunch of bugs with the current code:
|
Commented by: Be-ing This doesn't really have anything to do with AutoDJ does it? Isn't this a duplicate of Bug #1114643? |
Commented by: ywwg The fix as described would be a change to how master sync works. Changing how master sync works should be done very carefully because it's in a bad state. We shouldn't pile on auto-dj specific hacks, because that would paper over the underlying issue. If we can fix master sync, it will be fixed for auto-dj as a side effect. |
Commented by: daschuer This is a special case of Bug #1114643 |
Commented by: ywwg I think I know how to make a safe fix for this specific case: If sync is on and only one deck is playing, that deck should be the master and stay at the same playback rate and the Internal Clock should follow it. Or more generally: Internal clock should only be the master if more than one deck is playing. If one deck is playing, it is the sync master. Once the second deck starts playing, the bpm will lock and they'll play in sync. |
Commented by: daschuer Yes this sounds reasonable and will work with auto DJ. Does your idea match to this: |
Commented by: ywwg I believe that should work, yes. Master sync code is very hard but I should be able to work on this this weekend. I have had a lot of problems using non-const tracks in my sets lately so I am motivated to fix this! |
Commented by: ywwg This is hard! But it is showing promise. I have a few more tests to fix / rewrite, and then I'll post a PR |
Commented by: ywwg One question I have: I need to iterate over the available syncables to find a bpm target, and I want to exclude Samplers. Is there way to only iterate over proper playback decks? (Right now there's a check for "!pOtherSyncable->getChannel()->isMasterEnabled()" but that only catches preview decks, not samplers). |
Commented by: daschuer You can call pOtherSyncable->getGroup() to check if it is a player. |
Commented by: Be-ing Launchpad is not a great medium to discuss implementation details because of the 15 minute delay before notifications are sent. Zulip would be better. |
Commented by: ywwg 15 minute delay, lol, I am lucky to find time to work on this once a week. Anyway, still going, it's looking good. Been fixing lots of bugs too. I have to completely rewrite a couple tests, then I think it's ready for review. |
Issue closed with status Fix Released. |
Reported by: daschuer
Date: 2019-11-10T10:53:42Z
Status: Fix Released
Importance: Undecided
Launchpad Issue: lp1851985
With the new auto DJ into and outro modes, automatic beat matching is possible if you sync_enabled on both decks.
However this does not work well with non const beat grids because the playing track is nailed to the bpm of the stopped deck. This sound like a broken turn table.
I think we should update the sync feature, that it kicks in only if both decks are playing.
Any ideas how.
The text was updated successfully, but these errors were encountered: