Traktor Pro mix template using multiple MIDI controllers. This is a 'fork' of https://github.com/dotherightthing/traktor-live-v2/ and changes the supported MIDI controllers, and removes ClyphX Pro (see dotherightthing/traktor-live-v2#11). Includes Ableton Live starter file.
I've documented this for my own benefit, but please help yourself to any part you find useful.
This project is no longer maintained - please see version 4.
The purpose of this setup is to replace Traktor Pro’s Remix Decks and Loop Recorder with Ableton Live.
Traktor Pro’s Remix Decks mostly work fine when resampling directly from a deck.
However when keylock pitching is used, the recorded pitch often does not match the source deck.
To capture global FX like reverb and gating, Traktor Pro’s Loop Recorder must be used.
The Loop Recorder is problematic because it records loops slightly too long. Samples glitch on repeat and drift out of sync with the source material.
- Physical Sound Card:
- Macbook Pro (15-inch, 2018 / macOS v10.15.7)
- External Headphones (headphones or Minirig plugged into headphone jack)
- Virtual Sound Card:
- DJ Decks and MIDI Clock:
- Mixer and Sampler:
- Controller Mapping:
- Controller Overlay:
- Mix Recorder:
- Launch Script:
- Further Reading
This setup is for the Traktor Kontrol Z1. Mixing is only done on headphones, so the master mix goes to both Left and Right channels (for monitoring and recording with Audio Hijack) and cueing goes to the Right channel (this is not recorded). This is a variation on the split cue approach.
- Product: https://rogueamoeba.com/loopback/
- Version: 2
Loopback allows additional stereo pairs to be added to an existing sound card. These pairs can then be used for internal routing via input and output settings in Traktor Pro and Ableton Live.
Some web tutorials use Jack Audio instead. I prefer Loopback’s routing UI.
In order to be able to choose which Traktor Pro deck to sample from, both decks are routed to Ableton Live.
loopback/Devices.plist
(fromUsers/Name/Application Support/Loopback/Devices.plist
)
- Product: https://www.native-instruments.com/en/products/traktor/dj-software/traktor-pro-3/
- Version: 3.4.2
- Product: https://www.ableton.com/en/live/
- Version: 10
ableton-live/traktor-live-v3 Project/traktor-live-v3.als
Contains a 2 channel mixer and an 8 channel sampler (Deck A x3 + Deck B x3 + Resample x1 + Chop x1).
- Driver Type:
CoreAudio
- Audio Input Device:
Traktor Live v1 (8 In, 8 Out)
- Audio Output Device:
Traktor Live v1 (8 In, 8 Out)
- Channel Configuration
- Input Config:
3/4: Traktor Pro Deck A
5/6: Traktor Pro Deck B
- Output Config:
1/2: Live Out
7/8: Live Cue R
(channel8
)
- Input Config:
- Click
Ext
so that it lights up - Ableton Live will now follow the Sync source (Traktor Pro Virtual Output) - Global launch quantisation:
1 Bar
These use the midiAudioToCC VST, which is part of the PIZ MIDI plugins package by Paul Cecchetti.
In order to display a VU Meter for a visual control:
- Create an Audio track which takes input from one of the sampler tracks
- Put an instance of midiAudioToCC on this Audio track.
- MIDI map the controller's encoder to the Envelope L control
- Toggle on Monitor for this track
- Mute this track
- The signal level will display on the control when the track is not muted
The default ClyphX Pro 'controller' is primarily used to sync MIDI clock between Traktor Pro and Ableton Live (MIDI input).
Additionally, ClyphX Pro is used to send scripted MIDI messages to Traktor Pro (MIDI output). When this is done, channel 16
is used to make it clear that Traktor Pro is being targetted. See also the M4L Device on the master channel.
Note: MIDI Clock Sync Delay
was initially set using Traktor Pro's internal mixer, with Cue out used to sync Traktor Pro and Ableton Live's metronomes. Ableton Live now functions as the external mixer and syncing does not appear to be an issue anymore.
- Control Surface:
ClyphX Pro
- Input:
Traktor Pro Virtual Output
(for MIDI Clock Sync)- Track:
Off
- Sync:
On
- Remote:
Off
- Track:
- Output:
Traktor Pro Virtual Input
(for sending MIDI to Traktor)- Track:
Off
- Sync:
Off
- Remote:
Off
- Track:
- Takeover Mode: Value Scaling
- Device:
ClyphX Pro MIDI messages v1.0
- TSI:
traktor-pro/clyphx-pro-v1-0.tsi
- In-port: Traktor Virtual Input
- Out-port: None
Push the Learn
button in this Traktor device, then use the control which you wish to map to it.
Part of Traktor Pro 3: https://support.native-instruments.com/hc/en-us/articles/209590569-How-to-Use-the-Controller-Manager-in-TRAKTOR
.tsi
templates map control surfaces and supporting software to Traktor Pro's interface API.
traktor-pro/clock.tsi
- for MIDI clock sync (TBC - if not for another project)traktor-pro/clyphx-pro-v1-0.tsi
- for sending MIDI from Live to Traktortraktor-pro/korg-nanokey-studio-v1.tsi
- key adjusttraktor-pro/traktor-live-v3.tsi
- Traktor Settings (Preferences > Export)traktor-pro/traktor-kontrol-z1-default.tsi
- default mappings (unit is used in MIDI mode)
- Preferences > Import >
traktor-pro/*.tsi
- Offset:
0 Ms
(top of mixer section)
- Product: https://www.korg.com/us/products/computergear/nanokey_studio/
- Version: 1.08
- Editor: https://www.korg.com/us/support/download/software/1/133/1355/
The nanoKEY is only used to pitch loops in Traktor, via key adjust.
- The scene's data:
korg-kontrol-editor/traktor-live-v3.nanokey_st_data
- Set containing all scenes:
korg-kontrol-editor/traktor-live-v3.nanokey_st_set
Double-click to open the set files, then select Communication > Write Scene Data.
- Product: https://www.native-instruments.com/en/products/traktor/dj-controllers/traktor-kontrol-x1/
- Version: 2
- Default:
- SHIFT + left encoder moves the loop by the length of the loop
- Left/Right LOAD button loads track into Deck A/B
- SHIFT + Left/Right? LOAD button toggles SNAP
- This version:
- SHIFT + left encoder moves the loop by the length set using one of the top 8 LED buttons
- Left/Right LOAD button selects Deck A/B
- SHIFT + Left/Right LOAD button loads track into Deck A/B
- Left FX buttons trigger BPM /2 and BPM x2 on selected deck
- Right FX buttons trigger Beatjump -1/16 / +1/16 on selected deck
N/A
- Device:
Traktor Kontrol X1 v1.0
- TSI:
traktor-pro/traktor-kontrol-x1-v1-0.tsi
- In-port:
KontrolX1MK2
- Out-port:
KontrolX1MK2
--
- Product: https://www.ableton.com/en/push/
- Version: 2
- Control Surface:
Push2
- Input:
Ableton Push2 (Live Port)
- Track:
On
- Sync:
Off
- Remote:
On
- Track:
- Output:
Ableton Push2 (Live Port)
- Track:
On
- Sync:
Off
- Remote:
On
- Track:
- Control Surface:
ClyphX Pro XTA
,ClyphX Pro XTB
,ClyphX Pro XTC
- Input:
Midi Fighter Twister
,Midi Fighter Twister #1
,Midi Fighter Twister #2
(each in any slot, see #6)- Track:
Off
- Sync:
Off
- Remote:
On
- Track:
- Output:
Midi Fighter Twister
,Midi Fighter Twister #1
,Midi Fighter Twister #2
(each in any slot, see #6)- Track:
Off
- Sync:
Off
- Remote:
On
- Track:
The project uses three MFTs (Midi Fighter Twisters), but the Midi Fighter Utility only supports one. Therefore the four available banks of stock CCs are split between the MFTs:
- MFT A (Sample 1 and Sample 2): Bank 1
- MFT B (Sample 3 and Sample 4): Bank 2
- MFT C (Resample and Utilities): Bank 3
Each MFT does identify itself uniquely (Midi Fighter Twister
, Midi Fighter Twister #1
, Midi Fighter Twister #2
) but these identities are not locked to the physical hardware and can shift and change. Therefore the mappings for each MFT are shared with every MFT - i.e. the XTA/XTB/XTC folders are clones.
At the launch of the project, each MFT should be switched to Bank 1, 2 or 3. This should happen automatically via the STARTUP_ACTIONS
, or press one of the 3 buttons on each MFT's side.
When configured to send out MIDI messages, each MFT uses the following;
- Channel 1 = encoder / encoder LEDs
- Channel 2 = button / RGB indicator
- Channel 4 = system: side buttons incl bank switching
- Channel 5 = 'Shift Encoder Hold' / encoder press and turn (note: Factory Reset required - see https://forum.djtechtools.com/showthread.php?t=95122 and https://forum.djtechtools.com/showthread.php?t=96642)
Default settings are applied on $RESET$
. Live's Save as Default Configuration function does not appear to work properly with this device.
The worst part about customising generic MIDI controllers is remembering what everything does.
- Sticky labels are the defacto solution, but these become incorrect when you switch to different software.
- An iPad provides a dynamic labelled interface which liberates the user from the laptop screen, but requires monitoring of finger position on the smooth touchscreen.
- Some physical overlays can also be purchased online, but these often require labelling, and there are environmental costs in shipping them.
Custom physical overlays solve these labelling issues. They look nice, can be switched out quickly, and are great for protoyping.
- Product: https://inkscape.org/
- Version: 1.0.2
Inkscape is a cross-platform vector editor.
- Cricut Maker
- Product: https://cricut.com/en_us/machines/cricut-maker-machines/cricut-maker.html
- Version: 2017
- Cricut Design Space
- Product: https://design.cricut.com/
- Version: 7.11.156
The Cricut Maker is a consumer level cutting machine.
Cricut Design Space is the companion software for the Cricut range.
- KORG nanoKEY Studio
- Owner manual: https://www.korg.com/us/support/download/manual/0/551/2967/
- cut file:
svg-overlays/nanokey-inkscape.svg
- Traktor Kontrol X1 Mk2
- cut file:
svg-overlays/traktor-kontrol-x1.svg
(custom)
- cut file:
- Midi Fighter Twister
- cut file:
svg-overlays/MFT-v2.svg
(custom) - print file:
svg-overlays/MFT-v2-A4.svg
- cut file:
The process to generate an overlay is as follows:
Create a cut file by extracting SVG designs from hardware manuals (below), or by creating an SVG from scratch using Inkscape and a ruler.
- Create a baseplate to match the top of your controller
- Create and place shapes for the various faders, knobs, encoders and switches (with end caps removed)
- Group these shapes
- Duplicate the baseplate and the shapes group and hide the originals so you can edit them later as required
- Select the original shapes group, then select Path > Combine
- Remove the shapes from the baseplate by selecting the combined shape and the baseplate, then selecting Path > Difference
- File > Import
- Select page
- Internal import
- Uncheck 'replace fonts & embed images'
- Precision: 2.0 (default)
- Fix dimensions
- Select objects on page
COMMAND + G
to group- Transform > Scale
- Set width and height to the dimensions in the owner manual
- Scale proportionally
- Outline the physical controls
- View > Display mode > Outline
- Double-click parts to edit them directly
- Use
+
/-
to zoom in/out - Click near letters, click inside shapes
- Use
delete
to delete lines that won't be cut - Use node editing tools to ensure that cut paths are unbroken
- Edit objects
- Object > Objects...
- Maximise the panel (close other panels)
- Click 3D rectangle layer icon to select that object
- Select all g... objects and ungroup them
- Delete all g... layers (empty groups)
- Optimise one of each individual control (e.g. channel strip)
- Group each individual control
- Use guides to position copies of these in their original positions
- Export SVG
Create a separate print file by duplicating the cut file and adding additional layout to match that created by Cricut Design Space's Print Then Cut process.
This mitigates unresolved text degradation caused by Cricut Design Space at print time, otherwise text labels could be added directly to the cut file.
The dimensions below are taken from a PDF generated by Print Then Cut (System Dialog > Print > PDF).
- Create an A4 file in Inkscape (209.903mm x 296.686mm)
- Create a box and give it a black stroke of 1.5mm
- Resize the box so that it is 7mm larger than your baseplate on all sides, and position it in the same way
- Check that the stroke is still 1.5mm and the gap is still 7mm
- Group the box and baseplate
- Position the group at 11.994mm from the top and left of the canvas
- Add one or more groups of text labels to describe the various controls and modes of operation.
- Print the A4 page using Cricut Design Space with the System Dialog option, and the laser printer's Graphics Quality > Text option (I chose a Brother laser printer for sharper text)
- Load the cut file into Cricut Design Space
- Change the dimensions to match Inkscape
- Set position to 0, 0
- Hide any layers/groups which were previously hidden in Inkscape (SVG text layers are automatically removed)
- Select Flatten
- Select Make It > Continue
- For Print, select I've Already Printed
- Affix the printout to a Cricut cutting mat
- Set Base Material
- Load mat and press Go
- Optionally repeat with a sheet of plastic to create a second protective layer
- Peel the overlay off the cutting mat so the cut sections separate
Note: Cricut Maker does have a pen attachment, but I use this sparingly as 'pen' lines for text labels add complexity to the file and dramatically increase loading times.
- Remove any blocking controls (e.g. fader handles) from the controller
- Slide the overlay over the top of the controller
- Reattach any blocking controls onto the controller
- Product: https://rogueamoeba.com/audiohijack/
- Version: 3
While Ableton Live can be used to record the evolving mix and any automation, the playback head jumps to the beginning of the arrangement timeline when Traktor Pro is requested to send a Master Clock Sync message to Ableton Live.
This runs the risk of overwriting existing audio later in the mix.
One solution is to use an external recording app, however free macOS apps provide limited control over what can be recorded.
For example, Quicktime can't distinguish between the individual channels used by the Loopback device, while Audacity can only record all of them at once.
Audio Hijack offers two alternatives to this:
- record directly from an application (e.g. Ableton Live)
- record from specific virtual output channels (e.g. channels 1+2 of a Loopback device)
In addition Audio Hijack makes it clear when it is recording, by optionally displaying level meters in the macOS menu bar.
audio-hijack/traktor-live-v3.ahsession
- Product: NPM script
- NPM version: 8.1.2
- Node version: 16.13.1
package.json
scripts/install.sh
scripts/run.sh
npm run install
- install configuration filesnpm run open
- open applications and templatesnpm run refresh
- reinstall configuration files, reopen applications and templates
Press the sync button to sync playback with Traktor Pro.
Ensure that both 'A' and 'B' crossfader assigns are unchecked on both FX channels.
Toggle the On-Off switch in the Monitor column (Z1 device) of Loopback.