S4MK3 & S3: Community Performance MOD (qml coding)
NEW: Traktor 4 - Flexible Beatgrid and additional Stem Deck support!
(S4MK3: qml coding projects) S3-variant found below.
I thought the S4Mk3 could use some coding love, adjusting only a few bits and pieces to work out some kinks and adding small extras. The mods listed here are supposed to be small and easy to implement qml-mods to address a few needs of those who are not satisfied with the basic version.
Any ideas, small enough to easily implement, are welcome; feedback is appreciated.
PLEASE READ THIS CAREFULLY:
INSTALLATION INSTRUCTIONS:
Before applying any of the ideas and files i am hoping to collect in this thread, make sure to make a safety copy of the complete qml-folder of the Traktor software, so you have the original files as a fallback in case of, you know, failure. After that, all the files contained in the archive replace the original files.
"If you enjoy any of these mods as much as i do, please consider supporting me." 🦋🎧
S4MK3: Community Performance Mod TP4.1.1 - Version 7 / TP3.11.1 - Version 13:
Deck Transport Features:
- SHIFT+Play: Activate Vinyl Break, the length of which is calculated using the inverse of the jog wheel haptic tension. Vinyl Break will automatically deactivate Sync to work correctly.
- Jogwheel: Motor (and LED turning) stops temporarily when the jogwheel is used for loop or Tension adjustment. Turning LED now also active when cuing.
- Sync Button: Sync Tap: Sync Toggle (On/Off). Sync Hold (>0.2sec): Deactivate Sync (Off). Tempo is reset to +/- 0%.
- Sync Button: (Alternate Function) Sync Tap: BPM is set to Master BPM aka TempoSync. Sync is not activated. If Sync is already active it will be turned off. Sync Hold (>0.2sec): Sync Toggle. If Sync status is released, Tempo is reset to +/- 0%.
- Sync LED Feedback: BRIGHT when Sync is activated. - CYAN (Tempo & Phase in sync, both with tiny error margins for beat juggling), - YELLOW (Tempo in sync but out of phase), RED (not in sync & out of phase)
- Master Tap: Deck TempoMaster toggle (ON/OFF).
- Master Hold (>0.2sec): Master Clock AUTO toggle. Also sets internal clock to be master clock.
- Master LED Feedback: BRIGHT CYAN (deck is TempoMaster), - YELLOW (Master Clock AUTO is not active, deck is not TempoMaster), RED (Master Clock AUTO is active, deck is not TempoMaster)
- On-Cue Feedback: Cue Button LED and PLAY Button LED can be set to CDJ CueBlinker-Style (see below).
Deck GUI/Colours:
- Hold DECK (A, B, C or D) + Move Enc Turn (Push): Cycle through all 17 deck colours. Also cycles through the NI-designed waveform colours at the same time, from Red at the low end to White at the high end. The adjustment hard-stops at the left end (Red) and the right end (White). Push Encoder to reset.
- Hold DECK (A, B, C or D) + Loop Enc Turn (Push): Cycle through waveform colours (only). From white at the high end, the S4 uses my custom designs (and adapted designs), beginning with X-Ray (for White), over Infrared, Ultraviolet, Denon SC5000/SC6000 Prime (Blue/Green), Pioneer CDJ-2000 Nexus 2 (Red/Blue) to Pioneer CDJ-3000 (Blue/Yellow).
- Hold DECK (A, B, C or D) + Browse Enc Turn (Push): Adjust Traktor GUI waveform zoom factor. Push Encoder to reset to -0.75
Stem Deck Features (Traktor Pro 4+ version only):
- Pads 1-4 LEDs (Mute Toggles): LEDs will now blink when MUTE is activated so you don't have to rely on the LED brightness to know if MUTE is active or not.
- SHIFT (Hold) + Pads 1-4: Reset Filter and Volume/Mute (WHITE)
- SHIFT (Hold) + Pads 5-8: Toggle FX Send (ORANGE)
Track/Stem Deck Features:
- Rec: Loop-In
- Mute: Loop-Out
- Jogwheel Turn: (while in active Loop) hold Rec or Mute (or both) to adjust Loop-In or Loop-Out (or both) with the Jog Wheel. Turn slow for precision adjustment, fast for accelerated adjustment. Jogwheel LED turns GREEN while in an active loop.
- Loop/Move Encoder Turn: (while in active Loop) hold Rec or Mute (or both) to adjust Loop-In or Loop-Out (or both) by exactly 1 beat.
- SHIFT+Move Encoder Push: Triggers Re-Loop. It's mechanically Cue Play (CUP) with an added Loop Active trigger if the targeted active cue is a loop cue. Behaviour depends on your CUP settings. Set in 'Preferences➔Transport➔Cue Play (CUP Mode)'.
Track/Stem Deck Beatgrid Features:
- Grid: Also doubles as Beat-Tap to adjust the beatgrid on the fly (RED colouring, OFF if GridLock is active)
- SHIFT+Grid: Toggles GridLock (WHITE colouring).
Track/Stem Deck Beatgrid Features (Traktor Pro 4+ version only):
- Grid (Hold) + Master: BPM /2
- Grid (Hold) + Sync: BPM x2
- Grid (Hold) + Move (Push): Delete current gridmarker
- Grid (Hold) + Loop (Push): Set gridmarker at current position
- Grid (Hold) + Move (Turn): Nothing (Go to previous/next gridmarker, via mapping file [see below])
- Grid (Hold) + Loop (Turn): Adjustment of current gridmarker's BPM (very fine)
- Grid (Hold) + Jogwheel (Touch Platter) + Jogwheel (Turn): Adjust postition of current gridmarker
- Grid (Hold) + Jogwheel (Turn): Adjustment of current gridmarker's BPM (coarse)
Track/Stem Deck Hotcue Features (Traktor Pro 4+ version only):
- PadMode.Hotcue (Hold) + Pads 3+4: Jump to previous/next Hotcue
- PadMode.Hotcue (Hold) + Pads 5-8: Remap Hotcue type (Load, Fade-In/Out, Hotcue
- SHIFT(Hold) + PadMode.Hotcue (Tap) + Hotcue: Remap Hotcue to new number
Remix Deck Features:
- Rec: Activates Step Sequencer (Red LED), toggles recording function (Red Blinking LED).
- SHIFT+Rec: Deactivates Step Sequencer and recording function.
- SHIFT+Loop Enc Toggle: Deactivates Step Sequencer and recording function as well as toggling Quantize function (which btw. doesn't work when the Step Sequencer is active).
- Mute (Hold) + Pads 5-8: FX Send toggle (Traktor Pro 4.+ version only)
Mixer Channel Features:
- Ext Button: Cycles through all deck types, as long as the corresponding deck is not playing (Track Deck ➔ Remix Deck ➔ Stem Deck ➔ Live Deck ➔ Track Deck).
Browser Features:
- Preview Button: Can be used both in HOLD as well as TOGGLE modes. As long as the Preview Player is loaded, the Browse Encoder seeks through the track. Loading a track into a deck will now also unload the Preview Player.
- View Button: HOLD button to use as SHIFT for Browse Encoder only, as well as TOGGLE browser view.
- Jogwheel (+LED Ring): Option to scroll through playlist while in browser view and not using TT-Mode can be activated (see below). Jogwheel LED turns white. Special LED animation when track is loaded into deck.
- Browse Encoder (Tap < 1 second, on release): Load primary mode [Track or Stem] (Traktor Pro 4+ version only)
- Browse Encoder (Hold > 1 sec, on release): Load secondary (previously double click) mode [Track or Stem] (Traktor Pro 4+ version only)
FX Features:
- SHIFT+FX Buttons: Cycle through modes (Single➔ Group➔ Pattern Player➔ Single), Cycle through effects and kits. This works exactly like the SHIFT overlay of the X1MK3.
Screen Features:
- Top Rows: Display of all elements is bigger and brighter. Loop blink is less jarring.
- Bigger BPM display. Also changed places with Time display (not shown on picture).
- Artist name and original track bpm display visible while holding down SHIFT.
- Phase-Meter Pop-Up: Appears on unsynced slave decks when the tempo phase is changed in any way.
- Jog Wheel haptic tension Pop-Up: Appears when the value is changed.
- Loop Size Pop-Up: Appears when Loop-In and Loop-Out markers are manually adjusted.
- Stripe: Alternate waveforms available (see above).
Customize Alternate Functions:
- SHIFT+MixerFX Button 1: Toggles CDJ-style Cue & Play button LED blinkers. CDJ-style Cue button LED blinker is in Yellow (for the CDJ colour coding).
- SHIFT+MixerFX Button 2: Toggle alternate Sync Button functions.
- SHIFT+MixerFX Buttons 3+4: Manually adjust Pop-up Duration (for all pop-ups) from 1 to 4 seconds (Dec/Inc).
- SHIFT+MixerFX Filter: Toggle Jogwheel-Browsing (when browser is set to full screen)
- SHIFT+Lower Deck (A or B) Button: Toggle Screen Output Override. This will stop all screen output coming in and increase frame rates of the Traktor GUI and the frame rates of any other connected controller with a screen like for example a pair of D2's. Now it shows the Traktor Logo.
- SHIFT+Lower Deck (C or D) Button: Toggle alternate Loop Active Display on screen.
Settings will be saved between sessions.
Links:
Load the following modified default S4MK3 mapping file (and delete the old one) to make use of the command 'Jump to next/pervious gridmarker'. It also includes a modifier skeleton for you own mapping use that recognizes SHIFT and DECK layers in the following manner:
- Modifer#1 = 0: Deck A
- Modifer#1 = 1: Deck A (shift layer)
- Modifer#1 = 4: Deck C
- Modifer#1 = 5: Deck C (shift layer)
- Modifer#2 = 0: DeckB
- Modifer#2 = 1: Deck B (shift layer)
- Modifer#2 = 4: Deck D
- Modifer#2 = 5: Deck D (shift layer)
The X1MK3 Community Performance Mod is fully compatible with this mod.
…
For all users of the Traktor Kontrol S3, here is a variant of the Performance Mod below, stalwartly adapted by @pixel .
Check it out:
S3 Performance Mod 3.1:
Zip Name: Traktor_Kontrol_S3_TP4.1.1_PerformanceMod_3.1###########################################Date: 07.01.25###########################################Mod Version: v 3.1###########################################Software: Traktor Pro 4.1.1###########################################Controller Typ: Traktor Kontrol "S3"###########################################Mod Author: pixel###########################################
"Special thanks and respect goes to the coder [Sûlherokhh] for his help and providing the S4_PerformanceMod source-code.
(If you think the mod is great, please send [Sûlherokhh] a coffee)"
also a thank you to [lord-carlos] for providing the install.bat
installation instructions
1.) Extract the .zip archive to your Desktop.
2.) Start the install.bat with "Administrator" Rights.(A backup of the current files is automatically saved in the "Resources64" Folder)
3.) Follow the instructions.
4.) When the installation is finished, restart the Traktor Pro 4.
or copy the QML folder to the following directory.Make a backup before modifying the files !!!(C:\Program Files\Native Instruments\Traktor Pro 4\Resources64)
5.) Import the file (S3.GridmarkerHopping+ModifierSkeleton.tsi) from the TSI folder.Preferences -> Controller Manager -> Add... -> Import from disk...[readme.txt: see line 211]
6.) Import the file (S3.GenericMIDI-Beatcounter.tsi) from the TSI folder.Preferences -> Controller Manager -> Add... -> Import from disk...[readme.txt: see line 252]
7.) finished!
S3Mod Features
########################################################
The feature list was too encompassingly long for a single post, so download it here:
Also this:
Note from @Karlos Santos
Moderator note:
FYI: Modifying the software is a breach of the EULA Terms & Conditions that you agreed to when you installed Traktor. You do it at your own peril.
"3.5 Licensee is not authorized to modify the software, unless it is to preserve or restore the agreed functions of the software purchased."
Don't shoot the messenger, it's my duty to inform you.
Replying to this message is pointless because I do not write the EULA.
Karlos.
Comments
-
Work in progress:
- Setting manual LoopIn-/LoopOut points.
- Adjusting LoopIn-/LoopOut points with the jog wheels.
- Preview Player toggle.
3 -
Is there a way to set the rating of a track? E.g. in preparation mode browse, play or preview and then use shift pads 1 to 8 to rate the current track. I assume not since setting the rating is not in the list of assignable actions.
1 -
I see no way to do this.
0 -
Update:
- Fixed PLAY button while not using SHIFT. Was making an extremely short VinylBreak before.
- Added PreviewPlayer toggle.
Test away... 🦋
Work in progress:
- Setting manual LoopIn-/LoopOut points.
- Adjusting LoopIn-/LoopOut points with the jog wheels.
- Display LoopIn-/LoopOut points on the stripe, green colouring of the looping part of the waveform when the loop is active.
3 -
Hello. Is it possible to add effect selection in hardware? For example as it was on the x1mk1 controller
0 -
Not sure what the x1mk1 provided, but i can try to have SHIFT+FXOn(1-4) jump through the available FX types. By the way, this is also possible by using the overmapping capabilities Traktor provides.
1 -
I believe that Mk1 had that Shift + FX Knob combo to scroll trough the list of all available effects. Then the Buttons 1-2-3 would insert a set of three effects each. I think the first preset was Delay+Reverb+Filter.
1 -
Good to know. That should be doable.
0 -
I couldn't do it with mapping.
0 -
Updated work in progress:
- Setting manual LoopIn-/LoopOut points.
- Adjusting LoopIn-/LoopOut points with the jog wheels.
- Display LoopIn-/LoopOut points on the stripe, green colouring of the looping part of the waveform when the loop is active.
- Browser scrolling with jog wheel.
- FX presets/selection
0 -
respect for your work here :)
I'm wondering if I can use your code VinylBreak for the S3?
0 -
Of course. That's what these open discussions are all about. A note though: Vinyl break length is a function of jog tension (of the S4). You can use the same property, but have to put in your own way of adjusting it with the s3. Or just set a constant in the code that you like.
You will need the following pieces of code:
import QtQuick 2.12 // or another version number
... at the top of the file, or the timers will crash Traktor
MappingPropertyDescriptor { id: vinylBreak path: deckPropertiesPath + ".vinyl_break" type: MappingPropertyDescriptor.Boolean value: false }
... to know if breaking is occurring.
// Wire { from: "%surface%.play"; to: "transport.play"; } Wire { from: "%surface%.play"; to: "VinylBreak"; }
... to assign the ButtonScriptAdapter to the PLAY button and ...
the complicated part. 'hapticTensionProp.value' is an integer value from 0 to 255 in the S4 files. You can just replace it with a number. I recommend 20 to 50.
//Vinyl Break AppProperty { id: tempobend; path: "app.traktor.decks." + deckIdx + ".tempobend.stepless" } AppProperty { id: stableTempo; path: "app.traktor.decks." + deckIdx + ".tempo.true_tempo" } AppProperty { id: isPlaying; path: "app.traktor.decks." + deckIdx + ".play" } AppProperty { id: keyLock; path: "app.traktor.decks." + deckIdx + ".track.key.lock_enabled" } AppProperty { id: isSyncEnabled; path: "app.traktor.decks." + deckIdx + ".sync.enabled" } AppProperty { id: keyAdjust; path: "app.traktor.decks." + deckIdx + ".track.key.adjust" } property int vinylBreakDuration: vinylBreak.value ? 128000/(hapticTensionProp.value + 63) : 100 property double adjustedTempobend: stableTempo.value < 1 ? stableTempo.value : 1 property bool previousKeyLockState: false property bool previousSyncState: false Timer { id: vinylBreak_countdown interval: (vinylBreakDuration/adjustedTempobend)/25 repeat: true onTriggered: { if (tempobend.value < 0.05) { vinylBreak_countdown.stop() tempobend.value = 0 vinylBreak.value = false if (previousKeyLockState) { keyLock.value = true } if (previousSyncState) { isSyncEnabled.value = true } } else tempobend.value = tempobend.value - 0.04 } } ButtonScriptAdapter { name: "VinylBreak" brightness: isPlaying.value || vinylBreak.value onPress: { if (vinylBreak_countdown.running) { vinylBreak_countdown.stop() tempobend.value = 0 isPlaying.value = true vinylBreak.value = false if (previousKeyLockState) { keyLock.value = true previousKeyLockState = false } if (previousSyncState) { isSyncEnabled.value = true previousSyncState = false } } else if (isPlaying.value) { isPlaying.value = false if (module.shift) { if (isSyncEnabled.value) { previousSyncState = true isSyncEnabled.value = false } else previousSyncState = false if (Math.abs(keyAdjust.value) <= 0.05/12 && keyLock.value) { previousKeyLockState = true keyLock.value = false } else previousKeyLockState = false vinylBreak.value = true tempobend.value = adjustedTempobend vinylBreak_countdown.restart() } } else { isPlaying.value = true vinylBreak.value = false previousSyncState = false previousKeyLockState = false } } onRelease: { if (isPlaying.value) { vinylBreak.value = false if (previousSyncState) { isSyncEnabled.value = true } if (previousKeyLockState) { previousKeyLockState = true } } } }
I had to rewrite the last parts several times. VinylBreak temporarily deactivates KeyLock and Sync, or it doesn't work correctly.
Edit: Code corrected.
2 -
Thank you for the introduction.
If I'm successful I'll post the files here. :)
1 -
The following mods are integrated for the S3. :)
Jogwheel Beatcounter LED
Jogwheel Browsing
VinylBreak
special thanks to Sûlherokhh & DuneArchitect
2 -
I noticed that the VinylBreak sometimes gets stuck after a track change
If I empty the deck and reload the track it works again.
0
Categories
- All Categories
- 19 Welcome
- 1.5K Hangout
- 61 NI News
- 778 Tech Talks
- 4K Native Access
- 16.4K Komplete
- 2K Komplete General
- 4.3K Komplete Kontrol
- 5.7K Kontakt
- 1.6K Reaktor
- 376 Battery 4
- 835 Guitar Rig & FX
- 425 Massive X & Synths
- 1.3K Other Software & Hardware
- 5.7K Maschine
- 7.2K Traktor
- 7.2K 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