improve engine.softStart, brake & spinback

Bug #1812483 reported by ronso0
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
New
Undecided
Unassigned

Bug Description

EDIT
there are a few issues with softStart etc.

1) improve ramping
like with engine.brake(), the 'final' phase of the ramping in softStart takes very long, the approximation of scratchRate to desired final rate gets slower and slower as the both get closer.
I guess this is in the very nature of the scratch filter, but it's annyoing as the key correction is audible as it's not 100% true.

IMO it would be better to stop ramping as soon as we are close enough* to the desired rate.
*close enough to not hear a key jump when jumping to desired rate

Or maybe "just" use linear acceleration as soon as scratchRate hits desiredRate*0.5

2) allow scratching while braking
Right now, triggering scratchEnable (touching the jogwheel) while braking or softStarting aborts the acceleration/decelleration and puts the deck back in regular play mode.
It would be nice to mimic a real turntable in that case: switch off the motor (activate brake) and perform scratch moves while the platter slowly comes to halt.

ronso0 (ronso0)
Changed in mixxx:
assignee: nobody → ronso0 (ronso0)
Revision history for this message
Daniel Schürmann (daschuer) wrote :

It is probably time to move this hack into the engine to make it available inside the GUI.

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Revision history for this message
ronso0 (ronso0) wrote :

the quick fix I have in mind is just one line, like here:
https://github.com/mixxxdj/mixxx/pull/1226/files#diff-9289ba7fe799f555352e9653196f4b00R1417

moving this to the engine would be nice as well, but it's another topic and I won't assign that to myself right now ;)

Revision history for this message
ronso0 (ronso0) wrote :

thinking about the curve and looking at the filter implementation, I think I got why you're referring to brake/softStart using the alphaBetaFilter as a "hack". the generated curves just don't match acceleration (deceleration respectively).
From what I understood, brake/softStart/spinback could just use a simple acceleration formula:
rate(time) = accel.factor * (time - startTime)

then, the scratchProcess could be broken up into scratching (using alphaBetaFilter) & brake etc. (using the formula).

ronso0 (ronso0)
summary: - final ramping in engine.softStart takes too long
+ improve engine.softStart, brake & spinback
Revision history for this message
ronso0 (ronso0) wrote :

I just updated the description to include another related brake issue.
If I adopt this bug I think both issues can be solved in on PR.

description: updated
tags: added: effects engine transport
ronso0 (ronso0)
Changed in mixxx:
assignee: ronso0 (ronso0) → nobody
ronso0 (ronso0)
description: updated
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/9573

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.