allow escape loops seeking backwards #1367
Conversation
…in LoopingControl
…olve bug #1716897
|
https://bugs.launchpad.net/mixxx/+bug/1669500 describes also the direction change issue. |
|
Cool, thanks for taking care of this.
Do you mean 'fast rates' when scratching or just playing fast? |
|
Any fast speed. In you case scratching. |
|
Yeah, both issues are fixed! |
|
I doubt the loop should stay active when escaping it, either back or forth. So "bug or feature?" depends on the use use case. This is mine:
|
|
We have introduced this catching loop behaviour here #1187 |
|
Ready! Now it works nice. |
|
When I just tested again I noticed clicking "reloop" has no effect anymore when the play position is behind the loop. Before, it would jump from the later play pos to the loop_in position and enable the previously set loop. What is the intention of "Allow scratching in front of an enabled loop"? |
|
Oh, I will have a look. "Allow scratching in front of an enabled loop" was a commit, fixing a regression from a previous commit. |
|
Reloop works again. |
|
Yes, both bugs are fixed and reloop works again.
|
|
I agree. The loop might be short and setting the loop in marker should also enable the loop while entering it. If I press the in marker again within a loop it will be adjusted and the remaining part should be looped. Of course, this only applies if the loop in marker is strictly before an already set loop out marker. The other question: Should pressing the loop out marker beyond an already activated loop again really jump to the beginning of the loop like pressing reloop? Or wouldn't it be more reasonable to extend the loop up to this point alike pressing the loop in button which will shorten the loop after this point. The loop stays activated, but since playing forward we will not entering it. And then all this must work mirrored when playing in reverse. I did not test this. |
I do not understand the question. You cannot set a loop out marker behind an activated loop. You can also not set a loop out marker before a loop. You can only set a loop out marker behind a loop in marker. Since we activate the loop, it is quite natural that the playposition jumps to loop in as usual. I have tried to hard make everything working in forward and backward direction, but it was not possible in every detail, because of the different loop jump out and loop catching logic. IMHO this part works just right though. |
|
I don't use loops very often, so don't take my questions too serious ;) LGTM. And since everyone seems to be happy we are ready to merge this work, aren't we? I just want to wait until the builds have completed. Just in case. |
|
Thank you :-) |
uklotzde
left a comment
There was a problem hiding this comment.
Tests enter an infinite loop
|
ready. |
|
Shall I test it again with my controller? |
|
Yes, an other test can't hurt. Thank you. |
|
Now tests are failing: |
|
OK, now it should be done. At least tests are not failing (sorry for not testing them before). |
|
Is still see one test failing due to rounding errors (GCC 7.2.1): |
|
Only rounding errors. With EXPECT_NEAR and a delta of 10⁻⁹ the tests pass. |
|
Interesting that this fails compiler dependent. |
Even if it is only a test the rules for maintainable code still apply.
|
I'm still a bit concerned about the complete removal of those strange +/-2 adjustments. The meaning of the code has changed and the behaviour should be different than before. On the other hand it seems to work when using floating point calculations without the adjustments. |
|
LGTM. Thank you, Daniel. |
This fixes https://bugs.launchpad.net/mixxx/+bug/1716897
Now you can jump back to cue, or any other position and the loop remains active.
This discovers also a "bug", that is jumps back to loop after changing the direction.
In this case we are suddenly "after" the loop.
How should we handle this? Normaly we disable the loop if we jump after it. In this case it seems also be wrong.