Squeezing multiple states into one modifier
On first sight the modifier architecture in Traktor has two limitations:
- There are only eight modifier slots available.
- The Modifier Conditions section in Controller Manager allows making a command dependent of the state of two modifiers only.
Depending on how complex your mapping is, it can easily happen that you run out of available modifiers. Furthermore, there can be situations where you need to make a command dependent of more than two modifiers. For example, you may wish to use two of the standard modifier values (M1 to M8) and additionally one of the extended modifiers (like "Is in Loop").
The good news is that you can overcome these limitations by using modifiers in a tricky way. This article shows how to squeeze more than one modifier value into one modifier slot. This instruction works only for modifier buttons that function as toggle buttons.
To keep things simple I will use a very small controller with the following layout:
The midi commands for the buttons are written under each button.
The controller has two buttons to switch the active deck for the left side and the right side of the controller. The first button switches the deck focus between deck A and C and the second one between deck B and D. Then I have two Play/Pause buttons. Both Play/Pause button check the focus of the deck switch button and will affect deck A or C and deck B and D respectively.
In the standard way of mapping you would use two modifiers: one modifier for Deck Switch A/C and another one for Deck Switch B/D. In order to save modifiers I will track the status of both deck switch buttons in one modifier.
Defining the States and the State Transistions
I start by establishing how many states the two deck switch buttons can have in combination. As each deck switch button has two states, I will need to program one modifier that can track the following 4 states/modes:
- Left is deck A – Right is deck B
- Left is deck A – Right is deck D
- Left is deck C – Right is deck B
- Left is deck C – Right is deck D
I need to establish all possible combinations of these two buttons and give them a corresponding number between 0 and 7.
|0||Left is deck A – Right is deck B |
|1||Left is deck A – Right is deck D |
|2||Left is deck C – Right is deck B |
|3||Left is deck C – Right is deck D |
Then I map the modifier commands. I will have to program all possible transitions for each button.
The transitions are:
- If in mode 0:
I get to mode 1 if right deck switch is pressed and to mode 2 if left is pressed
- If in mode 1:
I get to mode 0 if right deck switch is pressed and to mode 3 if left is pressed
- If in mode 2:
I get to mode 3 if right deck switch is pressed and to mode 0 if left is pressed
- If in mode 3:
I get to mode 2 if right deck switch is pressed and to mode 1 if left is pressed.
This means I have to program 8 modifier commands for this 1 modifier to work (had I used two different modifiers to do it I would have made 4 commands so this will double our number of modifier commands).
I normally write down all transitions that need to be mapped in a list like this:
And then cross them out as each command is made so I don’t forget any.
Mapping the Modifier Commands
The first command will then look like this:
Second like this:
Third like this etc.
I continue this system until all 8 entries are mapped.
Mapping the Play/Pause Buttons
I then continue with the play buttons:
Each button needs to be mapped to the Play/Pause mapping command and the execution needs to be dependent on the 4 states I defined earlier.
For the left play button it’s like this:
0: Play on deck A
1: Play on deck A
2: Play on deck C
3: Play on deck C
For the right play button it’s like this:
0: Play on deck B
1: Play on deck D
2: Play on deck B
3: Play on deck D
Here an example with the first command:
Once you are done the Assignment Table should look as shown in the following figure:
As you can see, the downside of this technique is that it will heavily increase the number of commands needed for a mapping. However, the big advantage is that you can greatly expand your Traktor mappings.
Author: Jeppe Skafte Johansen aka DJJJ
Jeppes Facebook page
Jeppes YouTube channel
Published: August 23, 2011