Shortening loop can cause deck to go out of sync.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Medium
|
Owen Williams |
Bug Description
build r3818 Ubuntu 12.04
Please consider the next steps:
- Enable n beats Loop on a playing deck;
- After k beats have been played, enable a new k beat Loop length, where k < n, for example 8 beats -> 4 beats;
Result: new Loop starts at the same position the original Loop began; this makes the sound jump to original start position, and creates problems during mixes, especially if new length button is not exactly pressed on a beat occurrence, because decks will go out of sync. Please note that behavior is correct if the new shorter Loop is enabled before k th beats have been played, because in this case the new Loop end position has not been reached and no jumps occur.
In cases where the problem occurs, new Loop could start on the first beat after the position corresponding to the button event enabling the new Loop, if quantisation is enabled, or on the position corresponding to button event otherwise.
The important thing, in my opinion, is to avoid anyway position jumps.
tags: | added: looping |
tags: | added: loop |
tags: | removed: loop |
Changed in mixxx: | |
milestone: | none → 2.1.0 |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
I can confirm this behaviour. But the way I work with loops, I'd rather have new loops stick to starting on the currently active loop_in point than at the current button position (just my opinion), and I can see some issues with the approach you're suggesting.
For example, I use a knob on some of my controller mappings to activate a dynamic length loop - turning the knob cycles through the various beatloop lengths, growing or shrinking the loop. I want position jumps when I'm doing this, and I need the loop_in point to stick as I'm cycling through lengths.
But I agree that as a general principle it's a good idea to give users an ability to avoid position jumps... Maybe the "avoid position jumps when quantize is active" approach you suggest might work. But I think that scripts should be able to override that, to deal with situations like my beatloop knob script, where position jumps are desirable.
Another option might be to stick the new loop to the currently active loop_out position if starting at the loop_in point would cause a jump. But would might cause unexpected behaviour where the user was not paying attention to the playposition within the loop, and this wouldn't work for my beatloop knob scripts either, since the behaviour would be unpredictable.
I wonder if it makes sense to add a parameter to beatloop_x_activate that would give controller scripts three options - either respect the currently active loop_in position, respect the currently active loop_out position, or start the new loop at the current play position. Or maybe different controls for each of these options might be the easier way to go until the scripting engine is overhauled. I've thought for a while that being able to specify sticking to the loop_out point rather than loop_in might allow for some interesting effects.
Here's a vaguely related looping bug report that whoever winds up working on this might want to take a look at at the same time: /bugs.launchpad .net/mixxx/ +bug/1159243
https:/