Can I map the sample deck A&B Buttons on Kontrol S2 to switch effect units?

Can I map the sample deck A&B Buttons on Kontrol S2 to switch effect units?

Hey guys,
This is my very first post on this forum, so i apologise if I’m posting in the wrong section or something like that.

Here goes. I really like Traktor effects and effect groups, so I sometimes find myself wishing for more effect units to use. I could buy an X1, but that would cost me money. Then I started looking to see if maybe I could map my S2 differently to achieve the same thing. I came across a few mappings that work in MIDI mode etc., but they’re not quite as efficient and smooth as the ‘out-of-the-box’ effect mapping on the S2. I thought for a while and I came up with something that I think sounds pretty good in theory, but I have no clue if it is possible to map, and if so, how.
Basically, I want the A & B selector buttons for the sample decks on my S2 to control which effect unit the effect buttons and knobs control. For instance: I have an effect mapped on effect unit 1 and another effect on unit 3. I want to switch from 1 to 3 by pressing the A button. Also I want to have the selection buttons for effect unit 1&2 (under the gain/filter) to not directly link to unit 1 and 2, but rather to left and right. So if on my right deck I have the ‘1’ button active, effect unit 1 is routed through that track, but if I then press that ‘A’ button to switch effect unit 1 for effect unit 3, effect unit 3 will (also) be routed through that track (By also I mean depending on the fact if I have deactivated effect unit 1 or not.). But if effect unit 1 is say, a flanger, and it’s active. If i then push that same ‘A’ button i want to be able to control effect unit 3, but not immediatly stop/deactivate effecty unit 1.

I hope I was clear and you guys can actually understand what my goal is and I hope even more that it is actually possible.

Thanks!

Yeah dude, super easy. I’m busy right now, but if someone else doesn’t get you sorted then I’ll come back after work and step you through it. :slight_smile: Peace.

What you want to do is pretty similar to how I’ve reworked FX routing in my X1 mapping so I’ll describe what you need to set up for that, and hopefully I can give you enough information to transfer it to the S2.

First, if you are competent in a digital image editor use that to edit, or you can print out a decent sized picture of your controller in grey-scale and use a marker to color buttons/pads/knobs different hues depending on how you want them to operate in the new mapping.

Draw arrows/lines to the controls and write a short description of how that control should behave in the new mapping. Try to describe it’s most basic function, and if it has multiple functions/shift-states I would suggest using multiple copies of the image that represent an individual “layer” of control/function.

If a modifier is used in a control draw a little M1-M8 on/near the control. This will help you organize the number of states that you need to track for each modifier, and will be your reference to which modifiers are used on which control.

*Tip…If you are doing complex LED output mapping with lots of modifiers/controls, it’s handy to have your “Output” and “Input” on separate maps to help organize your controls and free up some modifiers.

As you are filling in your reference sheets, go over each sequence of controller events in their individual logical order (step-by-step). Do this several times for each control to make sure you aren’t interfering with another modifier/control. After you have all the controls accurately labeled, AND you have a thorough understanding of how each control will function, carefully consider what conditions it will be affected by, and if/how it will affect other controls in the mapping.

One very important concept to understand is that if you have errors in your mapping it will almost always be because there is an error in your logical sequencing of controller events. Eventually, you will be able to do this rather quickly in your head if you have a clear understanding of how Traktor manages controls, and can visualize yourself stepping through each task in the appropriate order.

Ok, boring intro over…

I’ve mapped my X1 to control all transport, loop, browse, Fx selection, Fx routing, and Fx control for all four Fx units and all four decks, with the ability to colapse/expand Fx units 3/4 from multi to single and decks C/D from track to remix and back ((plus adding twelve extra hot-cue pages that you can map custom Fx/Instant gratification combos to)) …all in the native X1 mapping. I’m doing this with a combination of “scrolling” modifiers, hot-swapping Fx units with the shift button, and sticking/unsticking decks to the top layer with a secondary shift button. I’ll start with the Fx hot-swap, and if you (or anyone else) want to incorporate the other features… we will probably need to do that in another thread. :slight_smile:

First, decide if you want this to be a “hold” or a “toggle” function. It will be easy to change later, but you need to know exactly how it should respond to your “input”. Will this Fx shift-state turn on and off like a switch?..or do you only need it to be active briefly while you quickly adjust a control on the layer “under” this one? Go through the shift sequence several times both ways in your head to get a feel for what is the most natural function for this control. Try to imagine yourself using it in different situations, and look for any problems that might arise if you set the control to a particular behavior.

An Fx unit toggle is a little easier to understand (just on/off) so I’ll begin with that…

To efficiently toggle between Fx units, we need to have a modifier tracking two layers as they swap above/below themselves. I will use M1 in this example for clarity, but you can use whatever modifier you need.

Once you have selected a button to toggle the units with, think about exactly what functions are already assigned to that button. Do you need to move them to another layer?..should you make the toggle on a separate layer?.. or can you just delete the original controls in exchange for new ones? Carefully decide what will work best for your design, and again try to foresee any challenges that you might encounter later on because of that decision.

To remove current functions and map directly to the native layer through Traktor’s Controller Manager click on the “gear” shaped icon in the upper right-hand corner of the Traktor Pro 2 software. Click on the Controller Manager listing near the bottom left side of the Traktor Settings window that just popped up, and click into the bar above the “Add” and “Edit” buttons near the top of the Controller Manager. You should now see a drop-down listing of all the .tsi files currently imported into Traktor. To keep things simple, I would suggest deleting any .tsi files other than the one you need to work on before moving on.

*Tip… When doing symmetrical mapping (left and right side of the controller mirror each other) it might be beneficial to separate the two sides into their own mapping, and you can also cut the amount of work in half because you can simply duplicate one side and use the automatic deck reassignment tool in Traktor to create the other half, which will double the available modifiers, while also allowing each side of the controller to share modifiers between them. (Sharing modifiers with other .tsi files will be covered later on)

Ok, so now you need to figure out which controlls to remove from this mapping to make room for your Fx toggle.

Scroll to the bottom of the control listing and add a new “In” control for Play/Pause. Click the “Learn” button in the Controller Manager and “learn” the control to the button you need to edit. Click “Learn” again to fix the control to that button. Add a comment to this control that says “*****”. You should now have a new control mapped to this button that is highlighted in yellow.

Without clicking on another control, use the scroll bar on the right side of the window to slowly scroll up the list. All other controls mapped to this same button will also be highlighted in yellow, and you can easily edit/delete as necessary for your design. Remember to be extra careful when deleting because Traktor’s Controller Manager doesn’t have an undo button, and also remember that if you loose your place just look for the Play/Pause control with the comment “*****” and click on it.

After editing/deleting all necessary controls also delete the “*****” Play/Pause control.

try to think of M1 as existing completely inside of this button. Later on M1 might reach out and do other cool stuff in other places, but to make sure you understand how modifiers work (on a basic level) let’s just focus on this one button for now.

Making the Fx unit toggle involves using modifiers, and I feel like the best way to understand them is like a string of eight switches contained within each individual modifier. You don’t have to use all eight switches in each modifier, but it’s a good idea to visualize this in a way that goes beyond the typical on/off behavior of one individual switch so that you aren’t stuck thinking in two dimensions.

Another useful way of visualizing modifiers is to compare them to ships sailing the ocean before the radio was invented. Let’s pretend you are sailing at night on a ship called M1 (modifier one) and you see the lights from a far away ship called B1 (button one).

If you want to communicate something to the other ship, you can blink a light on and off to create a binary signal like a telegraph. However, if you and the other ship had lights in Red, Yellow, Green, and Orange, you could send a more complex signal to the other ship because red could mean an entire sentence in binary, while every other color could translate to another whole sentence… Basically you just need to understand that you can do a lot more with modifiers than just sending on/off signals.

Ok, I’m going to take a break for a while… I’ll come back and add to this in a little bit, but that should be a decent start on your mapping.

Now that you are familiar with modifiers… let’s do something cool with them :slight_smile:

Right now we should have M1 mapped to the “Sample A” button and toggling between 1 and 0,

Layer switching should be a concept that you are familiar with in your everyday life. Turning the page of a book, swiping across the screen of a mobile device to change apps, and clicking on a hyperlink are all good examples of common scenarios that are similar to what we will be doing here, only we will be doing it with modifiers and hardware.

The first issue that we run into is that without the control manager window open, we have no way of knowing which layer we are on. Remember the tip about using another .tsi file to help manage our LED output? That is exactly the kind of thing that will help you here, but be aware that these are only suggestions, and you should use whatever works best in your own scenario.

Near the top of the control manager window are the buttons “Add” and “Edit”, click “Add” to create a separate .tsi file to put our new output on.

The obvious question is how to make one layer easily distinguishable from the next. In my X1 mapping I use several instances of the beat-phase output with various settings to display the change from one state to another, and it seems to work well for what we need, so that is what we will set up now.

The beat phase-output looks complex at first, but you will quickly understand that, like all midi signals, it follows certain rules and limitations. Understanding the way Traktor handles these messages is vital to providing a good output mapping, and will also help in the long run with other projects.

Imagine that you are watching a tennis match, the ball goes over the net, and back many times. Think of the track’s “down-beat” as the net, and the ball is our midi output. Try to imagine what this would look like if instead of another player, there was a portal that was warping the ball (beat-phase output) back and slinging it out on the opposite side of the court so that the player could knock it over the net (down-beat) and back into the portal again. Now take away the last player so you are actually visualizing a tennis ball (beat-phase output) coming out of a portal on one side of the court, going over the net (down-beat of track) and disappearing into the portal on the other side of the court, and again, re-emerging from the first portal. This last visual is exactly how Traktor’s “beat-phase” output is operating. As the track plays, the midi-output “ball” is constantly traveling forwards, and as the track gets closer to one of Traktor’s down-beat “gridlines” the midi output “ball” is getting closer to the “net”.

Traktor allows us to display any section of the “ball’s” trajectory as it travels by restricting the value ranges in the control manager window. The controller ranges run from “-0.5” (portal one) to .“0.0” (the net) and “0.5” (portal two), and the midi range is “0” to “127” and you can narrow the difference by changing the numbers at the bottom of the control manager window where you will see four bars with the abbreviations “min”, “max”, “controller range”, and “midi range”.

If your “min” controller value is -0.5 and your “max” value is 0.0 (with the invert/blend boxes un-checked) then Traktor should be sending LED output that lights up as the beat(ball) travels out of the first portal and to the gridline(net), and if you invert the values (min 0.0, max 0.5) you get LED output that lights up only from the gridline(net) to the second portal. The midi range controls how bright the LED is. It’s “off” state is “0” where it will not light up (unless the invert box is checked), and the maximum brightness is “127” (if inverted this becomes the “off” state). We are going to use the Native HID blend option to get a nice fade between the "min and “max” controller ranges.

Open up the control manager window and…

Add out>deck common>beat phase> mod con M1 = 1> min C.range = “-.05”> max C. Range = “+0,5”

leave the midi range at 0-127 and check both the invert and blend boxes to have a button that fades from off to on with the beat. Make the assignment “Deck A”, and duplicate this out control four times and “learn” them to the the “Fx ON”, "Sample A, and the “Fx 1” and “Fx 2” buttons. Now duplicate all four again and assign them to “Deck B” so you will always see lights as long as a track is playing on one of the A/B decks.

If done correctly you should now be able to toggle these blinking lights on and of with the sample A button.
If you don’t see any lights blinking make sure that you have a track playing on one of the A/B decks.

Now that we can actually see the difference between layers on our controller…

use the “***** play/pause” method explained earlier to find the Fx controls mapped to all appropriate buttons/knobs and change their modcon to M1=0 so that they only happen on the M1=0 layer. Duplicate all the Fx controls, change the Fx unit assignment to the one “below” (in this case it would be Fx Unit 3) and use the modcon M1=1 to set these controls to only happen on the second layer.

Now you have a button that toggles your Fx units from 1 to 3, but the blinking LEDs we used to observe the layer change are preventing us from seeing if the unit is on or if it is assigned to a deck. To fix this we just need to set up a modifier to track the state of the blinking buttons, and apply a different blinking sequence to show when the button is “on” or “off”

I’ll come back later and step you through the last bit about tracking modifiers… Enjoy! :slight_smile:

If you have any questions please email me at midi.kid.phi@gmail.com

Btw This is interchangeable with the X1, and most other controllers.

And I’ve developed a routing system that uses modifiers to sequence beat- synced events in Traktor (and any connected midi device including Ableton/Machine) so the ship analogy will start to make more sense when we start building the “Haktor Bifrost”… I have a lot of stuff to share with the community.

Nice man, I cheer to that with this video:

I have a skeleton for my Spectra sequenced FX control! Would be cool if you could introduce the concept so anybody who gets interest can build on their own set of FX loops or one-shots. I’ll do a vid tomorrow to let you see how it looks :wink:

To do the Output for the Fx switching:

Without opening Traktor what you need to understand is how to use modifiers to track button states, and layer switch the midi output on your controller accordingly. To do this you will need to create another generic midi .tsi file and name it “Fx output”. In this .tsi you will only have input commands that directly affect the output of the four Fx buttons.

*note that you may need two of these output files to accommodate all four Fx units in Traktor

First we need to track modifiers through multiple .tsi files. This is actually easier than it sounds.
Add in> Modifier> [use the same modifier M(x) and toggle setting as the one used to layer swith the Fx Units]

and then learn it to the same button as the layer switch button used previously. We are now tracking the layer with both .tsi files at the same time.

Next we will need to use an individual modifier to track the button’s “on/off” state. Set up a toggling modifier on each of the Fx buttons and set the ModCon to M(x) = 1. This is telling Traktor to only change the “on/off” state when on the second Fx layer. [ these modifiers will be referred to as M(y)s ]
Add out> Beat phase monitor> modcon M(x) = 1> modcon M(y) = 1> Controller range 0.0/0.0> midi range 1/127> Blend> Invert
Duplicate and learn to all four Fx buttons

*note that the “Fx reset button” needs to be a “hold” function, not a toggle.

Now you should have all four buttons fading from “On” to “Off” with the beat of the playing track when you switch Fx layers and turn on the button. Duplicate each of these four times, and change the deck assignment so that each button will receive output from all four decks (use the number of decks you are currently using if it’s less than four). This will make sure that you will always have beat phase output for each button. Make sure you add comments to each control that describe what it is doing in the .tsi file.

I think that should do it, but like I said, I don’t actually have Traktor open so there might be an error… please comment if you are having trouble and I will help you out when I get back to my apartment.