[WIP] Traktor Kontrol S4mk3: motors revisited#14872
[WIP] Traktor Kontrol S4mk3: motors revisited#14872jtMUMT wants to merge 48 commits intomixxxdj:mainfrom
Conversation
…ze the traktor response to nudging (too easy to stop the platter)
…g is competing with the tempoFader so it's not ideal. but otherwise the quantized playback is working really well!
…eg., switch decks without affecting the timing
|
Correction: there is no bug with the pad LEDs. That was simply human error (I set the default pad mode by mistake) |
|
Welcome at Mixxx! |
|
Hi @jtMUMT , thanks for looking into this. It looks like you based your work off an old version of the mapping. Could you please move you changes off the latest version in |
|
Yup, I'll adapt it to a more recent build, no problem. By the way, for anyone who wants to give it a go, here are the controller values (set in preferences) that work for me. I'll make these default in a future commit :) Jogwheel Tension 0.5 |
I think there's no new stuff or fixes in |
|
Also, please install or, if you have |
|
Note that another way to run pre-commit after pushing is the following: pre-commit run --show-diff-on-failure --color=always --from-ref upstream/2.5 --to-ref HEADA few early nit notes before I start a deeper review:
|
|
Okay, I just gave this a shot. With these vaues I got it working somehow incl. scratching, but settings still don't feel optimal: after scratch release I have to push the wheels so they start moving again.
(. is the thousands separator) I guess I will finally have to install Traktor and check how it feels like there. |
fixed a mistake during manual merge, addressed many pre-commit warnings and errors Corrected error in the TempoFader calibration settings: missing unit conversion from mm to ticks. Added proper warning message for incorrect deck assignment Requested: reverted Tempo Fader changes typo: delete line of tabs reverted comment in scriptinterfacelegacy.cpp removed unused var oldWheelTimer
added dead zone during scratching to avoid 'chattering' motor problem re-enabled scratch mode on TT mode activation: fixes issue where scrubbing was not possible using crown adjustment until disc was touched fixed error when selecting TT mode; scratch mode will not be re-enabled if playback is already underway Fixed: inability to scrub with crown while paused in motor mode (faulty conditional) Fixed: selects proper rotation speed (more faulty conditionals). Tweak to default proportional error gain
b14d0d6 to
22a8628
Compare
…o make my new code more in line with the existing base even if there are some historical deviations from the style guide that need fixing (those can be fixed in a future PR)
*I tried rebasing but it would have necessitated 62 commits' worth of manual merges and I felt this would be too likely to introduce further errors. |
|
@jtMUMT sorry for the delay! Looks like you can squash (eg. the "experiments" commits) and also drop some commits (eg. 6d7a6ec). In case you don't have capacities to do this I can try it myself -- just to help push this awesome feature. |
I'm at it and it's very ... Mostly because you moved unrelated defintions around. I ended up simply copying the mapping files from this PR and created a new branch based on 2.6 Please check the commits and split the second one if like. -- didn't do another manual test, yet -- |
Big thank you for cleaning up my mess. I'm still inexperienced with atomizing features and keeping a clean repo. Whatever it takes to get the feature integrated, even if we have to start a new branch/PR, is OK with me. I'll be able to get involved next week to catch up with your work and to conduct tests. Again, 1000x thanks for helping and advising <3 |
|
I updated and tested ronso0#95 In general it now works well 🎉 , though there are still some issues:
|
I think I fixed that. edit: nope :\ looks like it's overshooting, and resetting The cue/hotcue goto_and_stop/preview issue is a bit annoying. Btw I think there should be some way to reset() the motor manager when switching to/from motor mode. |
|
Regarding the motor chattering, I encountered this same problem and fixed it before, but understandably it's easy to re-introduce it. There are certain boolean conditionals that require "==" instead of "===" or else they don't properly compare and always result in "False". I fear that the pre-commit might flag these and prompt us to use Line 3796: This should use There are a few instances of this, which I originally addressed in f5b1014 (Jogwheel TT mode fixes and improvements) edit: tested with the conditional change and solves the problem :) e2: for your convenience, the other affected lines are |
|
Yeah when I try to make the changes, the pre-commit is blocking me: I'm sure this is down to my own unfamiliarity with JS and these conditionals could be improved, but I'd love to know what exactly is happening. Seems like instance variable always return |
|
In any case, I made a branch with fixes for both issues: |
|
Thanks! No I'll test : ) |
|
This works good.
However, hard-stop didn't account for quick repetetive Cue/hotcue preview (stutter effect), so I tried to tweak the timers a bit. Also, minor issue: |
Revising the motorized platter control on the Traktor S4Mk3 controller.
Current Status: motors are usable for mixing and work almost identically to using Traktor. Code needs major cleanup.
Impact on common code: removed the 20ms cap on QTimer requests so that the motors can be controlled at the correct sampling rate to match the sensor input stream (2ms / 500Hz).
Extraneous / "bonus" changes: added midpoint offset for tempo faders. Not implemented in the most graceful way but it works.Implemented upstream alreadyKnown bugs: switching decks on the right side seems to change the pad mode / screw up the LED colours on that side. I suspect it has to do with how I'm assigning left/right status to each deck.
Apologies: for all the hacking and rearranging/renaming of existing declarations. This is very much a work in progress and the code needs to be revised before it's ready to merge (assuming it passes review of course). I have ambitions to improve the overall comprehensiveness of the mapping file by fixing hardcoded values and harmonizing some of the nomenclature. So far this has resulted in some improvements and also some unintended ambiguities (eg., I didn't realize that "slip" mode was already a thing before I used this to refer to the slipmat emulation). Right now this code is here so that others can try it out while I/we keep working on it :)