Mapping something (e.g. loop size/out) to jog wheel
Hello,
I have a problem mapping loop size (with the help of modifier) to the jog wheel on my kontrol s3. The jog wheel is, when in learn mode, not recognized and after manually selecting left/right jog just recognized as a button.
Does anyone have solution for that?
My Traktor version is 3.9.090
Thanks
Best Answer
-
No solution for "jog turn". It is not reassignable.
0
Answers
-
No solution for "jog turn". It is not reassignable.
0 -
Anytime! I'm using Move and Loop encoders to control In and Out points in my S4 MK3 mapping.
0 -
There is the possibility to change the qml file that defines the jogwheel functions. There is (to me) an obvious way to do it.
If you hold the GRID button, you can move the beatgrid by turning the jogwheel, right? So, i would duplicate this function, but bind it to LoopKnobTouch and MoveLoopOut, meaning you just touch the LoopKnob (not turn or press it) and then turn the JogWheel. Or i could bind it to MoveKnobTouch if that is more comfortable. Or to both, if you don't care which hand you use to actually turn the wheel.
I can cook up the code and upload the adjusted file if you are willing to test the result (i don't have an S3 at home to test myself).
🦋
2 -
That sounds like it could work! Please keep us updated if you manage to remap the grid button function.
I have a theory that the jog wheels are purposely left n/a so it is imposible to map to other software than Traktor... Would never buy such a purely designed device with degradation on jogwheel capabilities.
1 -
Ok, thanks @Sûlherokhh
sure, I will test it and keep you updated.
0 -
Make a safety copy of the file "...\Native Instruments\Traktor Pro 3\Resources64\qml\CSI\S3\S3Deck.qml", then replace it with the one here:
[deleted]
These are the lines i adjusted ...
➔ line 51:
// enabled: module.active && Helpers.deckTypeSupportsGridAdjust(deckTypeProp.value) && !gridLockedProp.value enabled: module.active && Helpers.deckTypeSupportsGridAdjust(deckTypeProp.value) && !gridLockedProp.value && !loopAdjustEnableProp.value
➔ line 90:
// enabled: !gridAdjustEnableProp.value && module.active enabled: !gridAdjustEnableProp.value && !loopAdjustEnableProp.value && module.active
This is the additional section ...
➔ line 116:
//----------------------------------- Loop Adjust------------------------------------// // Loop Adjust // AppProperty { id: loopAdjust; path: "app.traktor.decks." + module.deckIdx + ".move_internal" } AppProperty { id: loopMode; path: "app.traktor.decks." + module.deckIdx + ".move.mode" } AppProperty { id: loopSize; path: "app.traktor.decks." + module.deckIdx + ".move.size" } MappingPropertyDescriptor { id: loopAdjustEnableProp; path: deckPropertiesPath + ".loop_adjust"; type: MappingPropertyDescriptor.Boolean; value: false; } Wire { enabled: module.active && loopActive.value && !gridAdjustEnableProp.value from: "%surface%.hotcues"; to: HoldPropertyAdapter { path: deckPropertiesPath + ".loop_adjust"; value: true } } Wire { enabled: loopAdjustEnableProp.value; from: "%surface%.jogwheel.rotation"; to: RelativePropertyAdapter { path: "app.traktor.decks." + module.deckIdx + ".move_internal"; step: 1; mode: RelativeMode.Stepped } } Wire { enabled: loopActive.value; from: "%surface%.hotcues"; to: ButtonScriptAdapter { onPress: loopMode.value = 3; } } Wire { enabled: loopActive.value; from: "%surface%.hotcues"; to: ButtonScriptAdapter { onPress: loopSize.value = 0; } }
It's possible that '%surface%.jogwheel' must be replaced with '%surface%.jogwheel.rotation', but i think both expressions work. This variant works with touching either MoveKnob or LoopKnob while a track is looping and then turning the JogWheel. I hope the direction is correct. Happy to hear your feedback.
🦋
Edit: typos corrected and new file uploaded.
Edit: upload deleted, corrected code displayed.
0 -
Already, trank u very much.
I will test out as soon as im home in about 2 hours
1 -
sadly at the time it won't work...while holding down loop and turning the jog wheel in loop) the loop is moved several minutes later in the track and comes than back. when I replace '%surface%.jogwheel' should I also replace the ones with for example '%surface%.jogwheel.speed' (to %surface%.jogwheel.rotation.speed) or shouldn't I change these?
0 -
I uploaded a corrected file 5 minutes ago because i discovered two typos. Can you please try again with the new file?
Edit: Don't press down the knob. Just touch it, that already sends the signal needed.
0 -
Huge thanks to @Sûlherokhh . It works, the only problem is, that by just touching the loop knob, the loop is getting smaller because the simulated "disk" aka the jogwheel "spins" (digitaly) in the tempo of the song (I think)
1 -
Try it out, if the knobs on the S3 are not sensitive, we'll find a different way to activate it, no worries. You can check if the touch sends a message to traktor by looking at the signal at the top of the GUI.
EDIT: The typos i corrected both set the move command to move LoopOut instead of the whole loop and set the size of the move command to ExtraFine instead of the complete loop size, so i think this is what went wrong the first time.
0 -
thanks but like I said it works with touching both knobs, but the loop keeps getting smaller as soon as I touch them without doing anything with the jogwheel
I think it's because Traktor simulates the movement of real disks spinning. That "spin" has a effect on the new loop function too
0 -
@Sûlherokhh Can you see a way to output MIDI from the jog wheel when the Grid button is on or had any thoughts about messing with that?
Instead of moving the grid, I would like to be able to output the "Global MIDI Knob" value from the jopg wheel on S4 MK3.
That would allow to map jogwheel for a different functions.
0 -
'...Native Instruments\Traktor Pro 3\Resources64\qml\CSI\S4MK3\S4MK3Deck.qml'
add in line 87 this codeblock
Wire { from: "%surface%.jogwheel" to: RelativePropertyAdapter { path: "app.traktor.midi.knobs." + deckIdx } enabled: module.active }
This should turn the midi knobs 1 to 4 depending on which deck you are on when turning the wheel. It's possible that 'deckIdx' has values from 0 to 3. In that case i have to insert a variable with the value 'deckIdx + 1'.
Give it a try. If the counter is off by 1, i'll update the code for you.
EDIT: With this the midiknobs are adjusted regardless of the grid button pressed. This can replace the GRID functions if you like, with just a little bit more fiddling. But for testing, this piece of code should give you some answers already.
It's possible that the code needs to have '.rotation' added:
Wire { from: "%surface%.jogwheel.rotation" to: RelativePropertyAdapter { path: "app.traktor.midi.knobs." + deckIdx } enabled: module.active }
0
Categories
- All Categories
- 19 Welcome
- 1.4K Hangout
- 60 NI News
- 735 Tech Talks
- 3.9K Native Access
- 15.9K Komplete
- 1.9K Komplete General
- 4.1K Komplete Kontrol
- 5.5K Kontakt
- 1.5K Reaktor
- 364 Battery 4
- 817 Guitar Rig & FX
- 416 Massive X & Synths
- 1.2K Other Software & Hardware
- 5.5K Maschine
- 7K Traktor
- 7K Traktor Software & Hardware
- Check out everything you can do
- Create an account
- See member benefits
- Answer questions
- Ask the community
- See product news
- Connect with creators