-
-
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
Beatjumping a Loop looses sync #11381
Comments
Is quantize enabled? Do you use const or non-const beat-grids? Can you also confirm the issue with 2.4-alpha? |
Yes quantize is enabled. What is a non const beat grid? In case it's about variable tempo, no tempo is constant. Are there appimages for the nightly/2.4 alpha builds? I'm on arch and would need to compile everything from source which takes quite some time on my machine. |
I've noticed a similar issue when I try to decrease beats on a running loop e.g. from 8 to 4 beats. |
Do you halve the loop while you're in the first halve of it? Like, no potential conflict of playposition and loop_out marker? |
Oh, good question... wasn't aware of. So I did some further investigations and yes, it seems that it happens (only?) in the second half of the loop e.g. if the loop decreases from 8 beats width to 4 beats while it plays already the 5th or 6th beat within the loop. |
Hmkay, the code to calculate the new position is here, but it looks like there haven't been relevant changes for years, so the source must be somewhere else IMO. mixxx/src/engine/controls/loopingcontrol.cpp Lines 1280 to 1292 in 9db1ac1
Can you confirm the shift is not a result of the engine being overstrained, i.e. no buffer underruns occur? (see buffer underrun counter at the bottom of Pref >-Sound Hardware). Could you please verify this shift was introduced by 2.3.4, like test again with 2.3.3 (or earlier version if you find 2.3.3 is also affected). |
Seems not to be the case, counter did not increase
As there are no appimages i can't test the 2.3.3 again without compiling from source :/ But actually I'm quite sure this was a problem also with 2.3.3 and before. But it's really easy to test:
|
Yes, no underruns here, the counter still shows 0 when this issue occurs.
Went back to 2.3.3 release version just to be sure and yes, it already happens in this version too. Very odd, never noticed it before. Btw I use the buttons on my Denon MC7000 controller to change the width of the loop. But I've counter checked this using the loop buttons on the skin... it also happens there. |
I'm currently debugging this and looks like the pointed out code is not the problem. Is there anything afterwards that is still manipulating the position? I just figured out that the misplacement of the playhead also happens if the loop is moved forwards. |
I can not reproduce the issue with Mixxx 2.3.4. I did
@obsoleszenz Could it be you confuse 'quantize' with beatsync? Like, the tempo of tracks is not the same and they are not synced 100% and jumping around makes this more obvious over time? FWIW I could also not reproduce it with two different tracks (130.2 vs 160) when using Sync lock. No beat grid shift noticable. |
I figured out it's easier to reproduce with quantize being disabled, as quantize will resync the tracks by pitching up/down one track, so it's slightly off but mixxx will try to fix it again. A better way to reproduce it is this:
|
Still can't reproduce if I use deck cloning after starting deck1. No matter how I resize or move the loop, beatgrids are aligned. Can you reproduce with a cloned deck? |
Yup also happens with a cloned deck. But might be more noticable without syncing. |
I recorded a small video showing the problem: |
Here a longer video with syncing & quantization turned one, one can hear that mixxx somehow fixes the syncing but directly after the jump it's out of sync: |
@ronso0 can you make sure that you have key sync disabled? It doesn't happen for me when key sync is enabled (my current theory is that the bug is somewhere in the enginebufferscale?) |
I have observed the following when I tried to reproduce @obsoleszenz issue and mine (these are two different cases, but I think the source of our issues could be the same): |
That way I can reproduce the issue (with cloned decks). |
To summarize:
Maybe the issue is somewhere in mixxx/src/engine/controls/loopingcontrol.cpp Line 1264 in e4b8463
mixxx/src/engine/enginebuffer.cpp Line 724 in e4b8463
PS contrary to my first test I can now reproduce it even with jumps smaller than the loop size (so that the playhead doesn't seek), with rate centered 🤷♂️ |
Did some debugging, and |
The offset seems to be exactly the buffer length, so the jump obviously happens one process call to early |
Removing the flushing code paths (in all buffer scalers) touched in #11152 fixes the loopmove offset 🎉 |
Fixed by #11152 |
Bug Description
Beatjumping / moving a loop often looses sync with other decks, sometimes being just slightly off sometimes more noticable. It also seems to increase the more often one jumps. Interestingly this doesn't happen if a loop is not enabled.
Also it doesn't happen if the loop just moves inside it's own range (moving a 8beat loop one beat back wont cause a problem). But it happens if one moves a 4 beat loop 8beat back/forth.
Reproduce
Version
2.3.4
OS
Linux
The text was updated successfully, but these errors were encountered: