Traktor D2/S8 Mods - Native Instruments

11
Traktor D2/S8 Mods INTRODUCTION These modifications ("mods") to the Traktor Kontrol D2/S8 screens have been developed alongside Traktor Scratch Pro v2.11.3 build 17 with 2 hardware configurations: - Traktor Kontrol D2 plus Traktor Kontrol Z1 - Traktor Kontrol S8 I have made significant changes to the Native Instruments supplied QML files so no assumptions can be made the mods will work on even a minor new Traktor release. However, when there is a new release I am likely to review it promptly. This work was inspired by the fantastic work started by members Sydes, then what I saw as a huge leap by ErikMinekus, plus further refinements by others. I've been running a customised 'ErikMinekus Prime' implementation for ages. My vision to DJ using Traktor Pro v2.11.x without looking or even touching my laptop is getting there, though though some initial investigations into keyboard-less track browsing, maybe I've bitten off more than I can chew... The work I've done utilising the MIDI controls and implementing a second SHIFT key I'm quite proud of, and not seen in other mods - if nothing else I hope looking at the code I've implemented helps others get to grips with how the Qt (QML) platform works. Whilst its great that we have the means to make changes NI could have published some key documentation to assist. We don't have all the source code so I've had to guess a few things, which included digging into the app object code. I may write some further notes on what I've eluded :) DISCLAIMER Anyone choosing to review, use, or is inspired by my efforts - thank you. I'm providing this work 'as is' with 'no warrantee', so if they don't work for you or you want them changing, or you are unable to work out (based on dozens of other posts) how to install them, any support I provide will be on the basis of if/when I have the time. Comments like 'and where is the download file?' when I posted screenshots of work in progress didn't really motivate me to rush to complete and post anything. Show some manners and I may help, if you don't and we ever meet in person I can also help... Kontrol S5 support - the mod as it stands will not work on an S5 but a subset of the mod could - for example the changes to the screen layouts. Given loan of a S5 I could probably produce a version, but that would be to the detriment of developing the D2 & S8 version. Multiple Kontrol D2 support - I hope not, but there may be issues using a pair of D2's - I don't have access to a second one to test with. Some of the recent additions such as startup

Transcript of Traktor D2/S8 Mods - Native Instruments

Traktor D2/S8 Mods INTRODUCTION These modifications ("mods") to the Traktor Kontrol D2/S8 screens have been developed alongside Traktor Scratch Pro v2.11.3 build 17 with 2 hardware configurations: - Traktor Kontrol D2 plus Traktor Kontrol Z1 - Traktor Kontrol S8 I have made significant changes to the Native Instruments supplied QML files so no assumptions can be made the mods will work on even a minor new Traktor release. However, when there is a new release I am likely to review it promptly. This work was inspired by the fantastic work started by members Sydes, then what I saw as a huge leap by ErikMinekus, plus further refinements by others. I've been running a customised 'ErikMinekus Prime' implementation for ages. My vision to DJ using Traktor Pro v2.11.x without looking or even touching my laptop is getting there, though though some initial investigations into keyboard-less track browsing, maybe I've bitten off more than I can chew... The work I've done utilising the MIDI controls and implementing a second SHIFT key I'm quite proud of, and not seen in other mods - if nothing else I hope looking at the code I've implemented helps others get to grips with how the Qt (QML) platform works. Whilst its great that we have the means to make changes NI could have published some key documentation to assist. We don't have all the source code so I've had to guess a few things, which included digging into the app object code. I may write some further notes on what I've eluded :) DISCLAIMER Anyone choosing to review, use, or is inspired by my efforts - thank you. I'm providing this work 'as is' with 'no warrantee', so if they don't work for you or you want them changing, or you are unable to work out (based on dozens of other posts) how to install them, any support I provide will be on the basis of if/when I have the time. Comments like 'and where is the download file?' when I posted screenshots of work in progress didn't really motivate me to rush to complete and post anything. Show some manners and I may help, if you don't and we ever meet in person I can also help... Kontrol S5 support - the mod as it stands will not work on an S5 but a subset of the mod could - for example the changes to the screen layouts. Given loan of a S5 I could probably produce a version, but that would be to the detriment of developing the D2 & S8 version. Multiple Kontrol D2 support - I hope not, but there may be issues using a pair of D2's - I don't have access to a second one to test with. Some of the recent additions such as startup

preferences were surprisingly difficult to implement. I would suggest the d2DeckSequenceABCD preference should probably be set to 'false'. Open to help resolving issues found once I know what they are. Combined Kontrol S8+D2 support - I carried out a quick test and it seemed to work. Mac/Windows support - I primarily use a bog standard 2013 13" MacBook Air with 4GB RAM and my iTunes library is on a 256GB XD card! Considering the amount of obscure apps I run it has proven unbelievably reliable for Traktor. There's no reason why Windows should be an issue, but I'll do some basic tests on a Windows laptop in next day or so and report back. Testing - during development basic Track Deck use has been tested extensively, including my first serious DJ performance (a wedding) and many post-clubbing chillouts. Last night, whilst taking some screen grabs I tried lo load a Stem track and for the first time ever it crashed properly, but unable to replicate. As an IT professional I know the amount of effort that should be put into testing before release - that's not going to happen here, so as said before, this is provided 'as is'. INSTALLATION Documented elsewhere, but if the process to do this is too technical for you, sorry. Having said that, I'd help if If someone is willing to pay me and has either remote dial-in facilities/or is willing to travel to South London in the UK ... Zero sympathy to anyone who does not take a backup of their current QML folder and runs into difficulties... But don't be scared of trying to learn because, in the same way that if you deleted the Traktor application, re-installing Traktor should get you back to a working system... NEW SCREEN LAYOUTS I'm refraining from ranting about the whole situation Traktor users are in. Ok, a little rant. There is zero excuse for NI not to have done something with the D2/S5/S8 UI - a skilled QML developer would deliver something that exceeds what the community has achieved (with no documentation) in days/weeks. Does anyone know where all the unsold D2 & S5's are buried? Perhaps 'Atari ET cartridge' style! https://en.wikipedia.org/wiki/Atari_video_game_burial. The new layouts take up a lot of space at the expense of the waveform. Not the biggest loss in my opinion, as the waveforms on the D2 & S8 whilst pretty are not as detailed as Traktor itself. Split view is almost looking 50-50 though the mini waveform on the focused deck is actually usable. Next release I may scale the 3 line header to bring things back in line. I've been through all the use cases in addition to Track Decks - Remix Decks, Step Sequencer, Stem Decks - to try and make things work/look consistent. A good way to learn what the software can/can't do. The enormity of Step Sequencer was a surprise.

SYNC COLOR CODING The following colors are used to indicate sync state:

Orange - deck is Master Green - sync active and deck is synced with Master Deck/Clock Red - sync active but deck out of phase with Master Deck/Clock Grey - sync not active on deck

The colors are implemented as follows:

- Right side of deck header - remaining time, elapsed time, beat count, current BPM, track BPM, tempo %

- Deck status display - SYNC button (text also changes to indicate a non-synced state)

- Deck status display - Deck beat meter + time remaining

- Deck status display - Master beat meter + time remaining - displayed above the deck

beat meter. Note is not displayed when Master is the Master Clock rather than another deck

- Deck status display - Phase meter - displayed above the upper beat meter

- BPM adjustment popup (restyled from factory version)

DECK HEADER APPROACH The deck header allows for 3 rather than 2 lines of information and combines the track name+artist to allow much more data to be displayed.

The track's Key is color coded and the mod includes provision to display Keys in Musical, Musical (all sharps), Open Key & Camelot notations. If the Key has been adjusted using either Traktor or the Key it will be displayed in italics. If Key Lock has been disabled the key color is dimmed to 40%.

The remainder of the layout is similar to the Traktor deck header, but the values are hard coded at present - remaining time, elapsed time, beat count, current BPM, track BPM, tempo % - rather than reading those defined in Traktor's preferences. These values are also color coded to indicate the deck's sync status (see SYNC COLOR CODING). TRACK DECK STATUS DISPLAY Below the deck header a number of status indicators provide access to key information, including mixer settings which aren't always easy to see depending on environment. Where the master deck beat meter is visible it becomes easy to make a 1 beat adjustment to perfectly synchronise 2 tracks. The lack of phase meter in the factory screens again shows the lack of thought given by NI. PHASE METER GAIN HIGH MID LOW FILTER MASTER SOURCE AUTO A B LOOP SIZE MASTER BEAT METER TIME REMAINING GAIN HIGH MID LOW FILTER SYNC STATUS S Q C D FLUX DECK BEAT METER TIME REMAINING GAIN HIGH MID LOW FILTER

MASTER SOURCE - color orange indicting the Master Sync Source - CLOCK (master clock), DECK A, DECK B, DECK C or DECK D SYNC STATUS - SYNC (green), PHASE (red), NO SYNC (grey) AUTO - Master Auto Clock mode - color orange indicates enabled S - Snap mode - color cyan indicates enabled; particularly useful when using a D2 Q - Quantize mode - color Cyan indicates enabled; particularly useful when using a D2 A B C D - track load indicators - color light blue (decks A & B) or white (decks C & D) indicate track loaded. If SHIFT key is depressed the indicators change to 1 2 3 4 to indicate using color orange which (2 or) 4 FX units are assigned to the deck LOOP - color green indicates loop mode is enabled; displays number of beats selected for looping FLUX - color orange indicates flux mode enabled PHASE METER - only displayed when deck is out of phase with Master

MASTER BEAT METER + TIME REMAINING - only displayed when Master is a track deck and not Master Clock DECK BEAT METER + TIME REMAINING- always displayed GAIN - slider showing value from mixer HIGH - slider showing value from mixer MID - slider showing value from mixer LOW - slider showing value from mixer FILTER - slider showing value from mixer; if Filter is switched off on the S8 mixer or in Traktor, this slider is not displayed. MIDI CONTROLS I originally started this project trying to implement MIDI functions as documented to replicate some basic functions making them always available - back or forward 1 beat being a prime example. But even that was tough going and what I ended up with didn't really add much value, as everything was restricted by limitations of the existing MIDI command set (I totally get why this area would be touched by the NI developers cautiously) and worse still getting buttons to light I was never able to get working as needed... Also, on the S8 I found the default design where the left MIDI controls (1-4) being separate to the right (5-8) not ideal for me, so even when I was experimenting with a pure MIDI approach I changed that - obviously 4 works is appropriate for deck based functionality... Once I made progress with custom development to utilise the MIDI controls, a second SHIFT button seemed like a good idea. I've implemented the BACK button for this - its actually available for use quite a lot in the system... Note:

- MIDI functions require the MIDI footer to be displayed - otherwise inbuilt functionality cannot function. For me this is not an issue, but others may find it more so

- there is a preference to disable my MIDI control changes in case people want to use the MIDI controls as intended.

- I'd like to update the MIDI footer display to reflect the functionality - done properly this is likely to be quick time consuming so not currently I priority, especially as not too difficult to remember what I've implemented.

Button 1 - back x beats (uses 2nd Beatjump preference; -1 is my preferred value) Button 2 - forward x beats (uses 3rd Beatjump preference; +1 is my preferred value) Button 3 - same function as clicking MASTER in Traktor (LED dim = off; LED bright = on) Button 4 - same function as clicking AUTO in Traktor (LED dim = off; LED bright = on)

SHIFT + Button 1 - back y beats (uses 1st Beatjump preference; -32 is my preferred value) SHIFT + Button 2 - forward y beats (uses 4th Beatjump preference; +32 is my preferred value) SHIFT + Button 3 - D2 only - toggle Snap on/off (LED dim = off; LED bright = on) SHIFT + Button 4 - D2 only - toggle Quantize on/off (LED dim = off; LED bright = on) BACK + Button 1 - Unload Deck A BACK + Button 2 - Unload Deck B BACK + Button 3 - Unload Deck C BACK + Button 4 - Unload Deck D LED states: OFF - nothing loaded in deck; DIM - content loaded in deck; BRIGHT - content playing (standard message displayed if unload attempted whilst playing) Knob 1 - Deck or Master Tempo adjust by +/- 0.1 BPM for Deck A Knob 2 - Deck or Master Tempo adjust by +/- 0.1 BPM for Deck B Knob 3 - Deck or Master Tempo adjust by +/- 0.1 BPM for Deck C Knob 4 - Deck or Master Tempo adjust by +/- 0.1 BPM for Deck D Clarification - if deck not synced to another source it will adjust tempo for the deck, otherwise tempo for Master Deck/Clock is adjusted SHIFT + Knob 1 - Deck or Master Tempo adjust by +/- 1 BPM for Deck A SHIFT + Knob 2 - Deck or Master Tempo adjust by +/- 1 BPM for Deck B SHIFT + Knob 3 - Deck or Master Tempo adjust by +/- 1 BPM for Deck C SHIFT + Knob 4 - Deck or Master Tempo adjust by +/- 1 BPM for Deck D Clarification - if deck not synced to another source it will adjust tempo for the deck, otherwise tempo for Master Deck/Clock is adjusted SHIFT + (Touch top of) Slider 1 - reset tempo for Deck A SHIFT + (Touch top of) Slider 2 - reset tempo for Deck B SHIFT + (Touch top of) Slider 3 - reset tempo for Deck C SHIFT + (Touch top of) Slider 4 - reset tempo for Deck D Clarification - if we are synced to either master clock or another deck then SYNC is switched off first rather than changing the master for potentially other decks. Could make this a preference… KEY POPUP This has been restyled to incorporate the key color, the previous (stored) Key and support for Musical, Musical (all sharps), Open Key & Camelot notations Note that my implementation of the Camelot notation is purely a conversion from Traktor's stored key rather than directly utilising data stored within the 'Key Text' field that may be written to by third party applications such as Mixed In Key. I do use Mixed In Key, and have Traktor configured to write to the 'Key Text' field and when analysing tracks always use the 'Check Special/Uncheck Key' approach, which means Traktor should be using the MIK key values correctly.

BPM POPUP This has been restyled to incorporate the sync color coding outlined above and also show the previous BPM value for the reset function

BROWSER Whilst making changes to support all 4 key notations, I couldn't resist fiddling with the number of rows displayed - my mods require good eyesight but most laptops do as well. I decided to try and make the number of rows configurable and it appears to work with any number between 6 and 12 at present. I'll probably do some further improvements as part of a future release. Some quicks wins to be had such as a home/end shortcut maybe?

FX MODS In addition to a display of which FX units are assigned to a deck when SHIFT is held, a change has been made on the D2 when the d2ModABCDButtons preference has been set to true. I did not find the current FX unit assignment process of 'assigning Deck(s) to a FX unit' illogical so as the preference to change how the A B C D buttons are used affects the supplied FX unit process I've switched the approach round to 'assigning FX unit(s) to a Deck'. SHIFT A will assign FX unit 1 to the current deck, SHIFT 2 will assign FX unit 2 to the deck etc.

KONTOL D2 SPECIFIC MODS Standard behaviour on a D2 is pressing the DECK button toggles between A and C (or D and B). Also pressing DECK followed by A B C D at the top right of the controller will switch to a specific deck. By default the mod includes a change so that SHIFT followed by deck will switch direct to the opposite deck. So if I'm on A SHIFT+DECK will take me to B (and back again); if I'm on C SHIFT+DECK will take me to D (and back again). So now have a means of navigating between decks without going to the deck letters at the top. Further refinement of the above is logically to change DECK so it takes me from A to B (and back) and SHIFT+DECK takes me from A to C (and back). This is enabled via the d2DeckSequenceABCD preference and I have enabled it in the supplied QML archive. So if you don't like it you'll need to edit the preferences module (see below). But surely I should be able to press A B C or D to switch to a deck without pressing the DECK button at the same time? Not doing this must seem odd to outsiders. By changing the way FX units are assigned the d2ModABCDButtons preference allows direct deck selection via ABCD (and DECK+ still) and changes the way FX units are assigned. I have enabled it in the supplied QML archive. So if you don't like it you'll need to edit the preferences module (see below). PREFERENCES Implemented as a Qt module (qml/Defines/ModPrefs.qml) you will need to edit the file to make any changes to the preferences. Not ideal but having preferences makes the mod more attractive if people have some control over what features to use and how to use them without changing lots of QML files. Less technical users may end up using the wrong editor or accidentally changing something other than the words "true" & "false" or a numeric value. I've added detailed comments to the preferences to try and make things easier. Backup the following file before changing anything - qml/Defines/ModPrefs.qml Do use a text editor suitable for editing pure text files. I use Sublime Text (http://www.sublimetext.com/) which is available for both macOS and Windows. If that looks a bit too technical, on macOS TextWrangler is often suggested and on Windows no reason why the built in Notepad app can't be used. Below is a copy of the preferences module as included with the first release. Comments all start with '//' Most preferences use a 'true' or 'false' value to indicate how the preference should function; a couple use whole numbers. The most important preference to set is the correct one for Key Notation - this is at the top of the file so easy to find if you want to use a notation other than Open Key.

// // KEY NOTATION PREFERENCES // // Set ONE of the following to true to match the Traktor preference // 'Analyse Options > Musical Key > Displayed in Traktor' and keys will be // displayed using the Traktor preference and in the correct color. // Note - the other two should be set to false... // Set to true if 'Displayed in Traktor' selection is 'Musical' otherwise set to false // readonly property bool displayKeyAsMusical: false // Set to true if 'Displayed in Traktor' selection is 'Musical (all sharps)' otherwise set to false // readonly property bool displayKeyAsMusicalAllSharps: false // Set to true if 'Displayed in Traktor' selection is 'Open Key' otherwise set to false // readonly property bool displayKeyAsOpenKey: true // If you want the Traktor key displayed in Camelot set the following to true // Note - the 'displayKeyXXX' setting (see above) must be correctly set as well // readonly property bool convertDisplayKeyToCamelot: false // // BROWSER PREFERENCES // // Define the number of rows displayed in the Browser // 6 - starting to clash on key & ratings... // 12 - hitting limit? // readonly property int numBrowserRows: 9 // // STARTUP ACTIONS // // During startup, turn on SYNC on all 4 decks // readonly property bool enableSyncAtStart: true // During startup, turn on Key lock on all 4 decks // readonly property bool enableKeyLockAtStart: true // During startup, reset Key value on all 4 decks // readonly property bool resetKeyAtStart: true // During startup, turn on Filter on all 4 decks // readonly property bool enableFilterAtStart: true // During startup, turn on Headphone Cue on all 4 decks // readonly property bool enableMixerCueAtStart: false // During startup, turn on Snap // readonly property bool enableSnapAtStart: true // During startup, turn on Quantize // readonly property bool enableQuantizeAtStart: true // During startup, turn on Master Tempo Auto mode // readonly property bool enableAutoAtStart: false // During startup, reset all FX assignnments on all 4 decks // readonly property bool resetFXAtStart: true // During startup, update Master Clock BPM? // readonly property bool updateClockBPM: false // In relation to updateClockBPM setting - set BPM for Master Clock // - must be a whole number between 40 & 300 (same as the Traktor itself) // = a decimal will cause Traktor to crash when loading // readonly property int initialClockBPM: 128 // // KONTROL D2 SPECIFIC PREFERENCES // // CHANGE DECK SEQUENCE // If set to true, when using the DECK button, rather than the factory default toggle sequence of A->C then C->A (or B->D then D->B) // the sequence will change to A->B then B->A (or C->D then D->C). // This may make less sense if using Track+Remix decks as intended by NI, but if your use case is basically mixing 2 tracks // on a laptop that struggles to display 4 decks, this simple way of toggling between decks is really useful. // readonly property bool d2DeckSequenceABCD: true // CHANGE DECK LETTER FUNCTION // 1) Enable changes so deck can be selected direct by pressing just A B C D (in addition to the standard DECK // followed by A B C D method). // 2) The deck pair selected (AC/BD or AB/CD) will also be illuminated. In the case of AB/CD mode the selected deck is // illuminated brighter than the non-selected one // 3) Point 1 requires a change to the FX unit assignment process, which did not feel logical to me. Rather than // assigning Deck(s) to a FX unit (the rules of which I find confusing I've taken the approach of assigning FX units to decks. // So, A B C D refers to FX unit 1 2 3 4. Shift A will assign FX unit 1 to the current deck, Shift B will assign FX unit 2 // also to the current deck etc. Just holding shift will illuminate which FX units are assigned to the current deck. // readonly property bool d2ModABCDButtons: true // // REUSE MIDI CONTROLS //

// 1) Set to true to re-assign of MIDI buttons, knobs and fader to access functions in the mod // 2) Setting to true will automatically switch on MIDI in the preferences when Traktor loads, but not store the setting // readonly property bool reuseMIDIControls: true // // ERIKMINEKUS MODS // // // Preferences to enable/disable ErikMinekus mods I've included // // Set to true to enable the Erik Minekus mod to allow BPM to be quickly adjusted when SYNC is held // readonly property bool enableTempBPMOverlay: false // Set to true to enable the Erik Minekus mod to allow Waveform to be zoomed in/out using the deck BROWSE encoder // readonly property bool enableBrowseToZoom: true // Set to true to enable the Erik Minekus mod to switch the function of the deck BROWSE encoders // so when being used to adjust the BPM, changes are made in units of 1, and with SHIFT depressed, // units of 0.01 - the factory default is the other way around. // The same change would be applied to the mixer TEMPO encoder on a Kontrol S8 // readonly property bool switchBPMFineCourse: true

RELEASE 1.0 Initital release, v1.01 will include further code tidy made against fresh set of factory code.