S4MK3 & S3: Performance MOD (qml coding)

Options
Sûlherokhh
Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
edited May 19 in Mapping Traktor

(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.

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, the files contained in the archive replace the original files.


S4MK3 Performance Mod V13:

Deck 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

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)'.
  • 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).

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).

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.

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.

Link:

The X1MK3-BrowserMod (found HERE) is fully compatible with this mod.

If you enjoy this mod as much as i do, please consider supporting me. 🦋🎧


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 V9 -

"I have updated my files (Traktor Kontrol S3)" 😃

Deck features:

  • Jogwheel Beatcounter LED
  • Jogwheel Browsing (VIEW-JOGWHEEL) (Big Jumps (VIEW)-(SHIFT+JOGWHEEL))
  • VinylBreak (SHIFT+PLAY)
  • Jogwheel LED PhaseMeter (SHIFT+DECK+MOVE_TOUCH+LOOP_TOUCH)
  • DeckUnload (only at deck stop) (SHIFT+GRID+LOOP_TOUCH)
  • scratchBlink (play button)
  • 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. - GREEN (Tempo & Phase in sync, both with tiny error margins for beat juggling), - LIME (Tempo in sync but out of phase), RED (not in sync & out of phase)
  • (SHIFT+Sync) Tap: Deck TempoMaster toggle (ON/OFF).
  • (SHIFT+Sync) Hold (>0.2sec): Master Clock AUTO toggle.
  • (SHIFT) Sync LED Feedback: BRIGHT GREEN (deck is TempoMaster), - LIME (Master Clock AUTO is not active, deck is not TempoMaster), RED (Master Clock AUTO is active, deck is not TempoMaster)   
  • Hold DECK (A, B, C or D) + Loop Encoder (Turn): Adjust GUI zoom factor. (Push Encoder) to reset to -0.75
  • Hold DECK (A, B, C or D) + Move Encoder (Turn): Cycle through all 17 deck colours! (Push Encoder) to reset.

Track/Stem deck features:

  • Loop-In: (SHIFT+GRID)
  • Loop-Out: (SHIFT+JOG)
  • Jogwheel Turn: (while in active Loop) hold (SHIFT+GRID) or (SHIFT+JOG) (or both) to adjust Loop-In or Loop-Out (or both) with the Jog Wheel. Jogwheel LEDs turns green.)
  • Move Encoder Turn: (while in active Loop) hold (SHIFT+GRID) or (SHIFT+JOG) (or both) to adjust Loop-In or Loop-Out (or both) by exactly 1 beat.

Mixer channel features:

  • DeckTypeSwitch (Deck: A,B,C SHIFT+EXT) Cycles through 1-3 deck types, as long as the corresponding deck is not playing (Track Deck ➔ Remix Deck ➔ Stem Deck ➔ Track Deck). (Deck: D SHIFT+EXT) Cycles through all deck types, as long as the corresponding deck is not playing (Track Deck ➔ Remix Deck ➔ Stem Deck ➔ Live Deck ➔ Track Deck).
  • Switch MIC D - LINE (EXT) (automatically switches Deck D type to Live Input)

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.
  • SHIFT+View: Toggle original Jogwheel behaviour (i.e. Jogwheel does not scroll playlist, has Cyan colour, turns when track is playing and allows pitchbending and scratching). Setting will be saved between sessions.

Other changes:

  • MixerFX 4 colour changed from YELLOW to LIME (better visibility and difference to Filter's LIGHTORANGE).
  • Standard deck colors (A, B): Cyan, (C, D): LightOrange

"Big thanks goes to Sûlherokhh,

(If you think the mod is great, please send him a coffee)"

Please create a backup of the original files


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.

«13456723

Comments

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    edited February 24
    Options

    Work in progress:

    • Setting manual LoopIn-/LoopOut points.
    • Adjusting LoopIn-/LoopOut points with the jog wheels.
    • Preview Player toggle.
  • Harald Walker
    Harald Walker Member Posts: 27 Member
    Options

    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.

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    Options
  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    edited February 24
    Options

    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.


  • Paciffic
    Paciffic Member Posts: 6 Member
    Options

    Hello. Is it possible to add effect selection in hardware? For example as it was on the x1mk1 controller

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    Options

    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.

  • Stevan
    Stevan Traktor Mapping Mod Posts: 1,816 mod
    Options

    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.

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    Options
  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    Options

    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


  • pixel
    pixel Member Posts: 148 Advisor
    Options

    respect for your work here :)

    I'm wondering if I can use your code VinylBreak for the S3?

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,072 mod
    edited February 27
    Options

    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.

  • pixel
    pixel Member Posts: 148 Advisor
    Options

    Thank you for the introduction.

    If I'm successful I'll post the files here. :)

  • pixel
    pixel Member Posts: 148 Advisor
    edited February 28
    Options

    The following mods are integrated for the S3. :)


    Jogwheel Beatcounter LED

    Jogwheel Browsing

    VinylBreak


    special thanks to Sûlherokhh & DuneArchitect


  • pixel
    pixel Member Posts: 148 Advisor
    Options

    I noticed that the VinylBreak sometimes gets stuck after a track change

    If I empty the deck and reload the track it works again.

Back To Top