-
-
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
Denon MC7000: Add optional jog wheel acceleration to the controller mapping #4684
Conversation
cc @toszlanyi |
@fwcd Thanks a lot for your improvement, this looks interesting. Unfortunately I cannot test it myself as i don't have the MC7000 to hand. To get rid of the code style issues you may check the wiki page here |
Many of these code style issues are unrelated to this patch, therefore I've created a separate PR #4754 to tackle those. Once merged, I would rebase this branch. |
Hey there @fwcd, thank you for your addition. I'm sorry that I forgot about this PR. In regards to the codestyle issues: I'd suggest you rebase your bug fixes and feature additions (this PR and #4755) onto the 2.3 branch, wait until those two are merged into 2.3 (and main) and then rebase #4754 ontop of that new state of main. This way, the bug fixes and feature additions get merged into the next 2.3.x release, while the changes related to the newer javascript environment stay in 2.4. What do you think? |
2135068
to
73eb693
Compare
6d76a45
to
7cde66c
Compare
That sounds like a good plan. I have updated both this and #4755 to be based on
I'll keep #4754 based on |
Can you elaborate a bit (linking to an explanation would also be fine). If interpret this correctly, this seems to alter the scratch behavior significantly (ontop of mixxx's own scratch emulation). Is this behavior desired from DJs? |
7cde66c
to
00175fe
Compare
This would lead to so-called "sticker drift", right? Like, scratching forward fast und slowly moving the same distance back would not bring you to the scratch starting point in the track. |
Yes, it does lead to 'sticker drift' as you've described it (this would be unavoidable with any kind of acceleration), making it unsuitable for certain kinds of scratching, therefore I would definitely leave it disabled by default. The primary value in such a feature, as I see it, would be a very convenient way to seek through a track, both on a fine-grained and a larger scale. Whether implementing it on top of Mixxx's own scratch emulation is a good idea or not is something I have pondered over too, though. Since this wouldn't be a feature specific to the MC7000, perhaps it would be better to include it in Mixxx directly? |
Can you link me to a manual or a video where this acceleration behavior is described / demonstrated? I don't know how popular this feature is. Many controllers already feature a "touch strip" for seeking within a track (even the MC7000 has this). |
Maybe we can start the acceleration only after a full round of the jog wheel. Normally scratch samples are only ~ 1/2 rotation = 1 s and searching for a beat when cuing a track is also only a meter of a 1/2 rotation. This probably gives enough distance to distinguished between scratching and seeking. |
Hm, I am having a hard time finding a video that explicitly demonstrates this feature. https://youtu.be/72hSiPS3yfQ?t=379 shows it very briefly, but I'll see if I can find anything specifically on this. Traktor seems to have a setting named "Rotary acceleration" that lets users map arbitrary MIDI controls with acceleration. |
Mhmm, the video you sent is a standalone controller though. Its not even related to Serato. Do they not mention this feature anywhere in their manual? |
This PR is marked as stale because it has been open 90 days with no activity. |
The Numark NV II is a Serato controller with two embedded displays, not a standalone unit. |
This PR is marked as stale because it has been open 90 days with no activity. |
What's the state of this PR? At least you need to retarget it to 2.4. |
Controller settings are ony available in main, not in 2.4. I suggest a follow up PR for main. |
I'll probably just retarget this to |
Retargeting to 2.5 is enough. My comment about Main was from before we branched 2.5. |
Fair enough, thanks for noticing that. |
The acceleration is disabled by default.
Co-authored-by: JoergAtGithub <[email protected]>
539247b
to
b060c68
Compare
// Sensitivity factor of the jog wheel (also depends on audio latency) | ||
// 0.5 for half, 2 for double sensitivity - Recommendation: | ||
// set to 0.5 with audio buffer set to 50ms | ||
// set to 1 with audio buffer set to 25ms | ||
// set to 3 with audio buffer set to 5ms | ||
sensitivity: engine.getSetting("jogSensitivity") || 1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess for the jog the input-latency matters. Because for the output-latency we have an undocumented CO: engine.getValue("[App]", "output_latency_ms")
.
LGTM! Could you please open a manual PR, to describe the new settings, curently we have only: https://manual.mixxx.org/2.5/en/hardware/controllers/denon_mc7000#user-variables |
Done: |
Can this be merged? I'm planning on adding more options to the mapping, but to avoid conflicts, I'd base them on this PR. |
Cherry-picked from mixxxdj#4684
Thank you! |
Cherry-picked from mixxxdj#4684
Based on #4757
While toying around with the jog wheels on the MC7000, I have noticed that Serato performs a form of accelerated scrubbing when scratching in vinyl mode, i.e. the jog sensitivity increases the faster you turn the wheel. Acceleration can be useful to both precisely navigate the track and scrub quickly without having to press shift.
This PR adds a simple, configurable and entirely optional acceleration whose curve is a simple monomial function. In pseudocode:
When acceleration is disabled (which it is by default, or the exponent is 0 and the coefficient 1), we get the current behavior:
Thoughts?