Native Instruments Traktor Kontrol S4 MK3
The Kontrol S4 MK3 is a 4 deck all-in-one controller with a sturdy build quality and integrated sound card. Compared to the MK2 and MK1, it also have motorised shiny aluminum jogwheels, screens and a set of pads which can be use for various features.
The S4 MK3 uses the standard HID protocol for the Buttons, Knobs, Faders and LEDs, and extends it for the motorized Jog-Wheels. The screens use a USB Bulk transfer. Mixxx doesn’t support rendering content for external screens yet. The easiest way to tell the MK3 apart from the other MK1 and 2 are these screens, displace between the „Move“ and „Loop“ encoder.
Unlike its predecessor, the Kontrol S4 Mk3 cannot run from USB power and the separate power supply must be used.
Novo v verziji 2.4.
Compatibility
The Kontrol S4 MK3 is a USB class compliant audio and HID, so it is compatible with Mixxx without any proprietary drivers on GNU/Linux, MacOS and Windows.
With the S4 plugged in, a HID device is listed as an available controller in Mixxx’s Preferences. The controller uses HID for each components on the device, except the screens, so the mapping can only be loaded when you select the HID device on the left side of Mixxx’s Preferences.
Controller
Setup audio output
Using the S4 mixer
In order to use the audio output of the controller, select the device Traktor Kontrol S4 MK3. Channels 1 - 2 should be set as Main and Channels 3 - 4 should be set as Headphones
Using the software mixer
If you don’t want to use certain outputs of the device, you can enable the mapping of the mixer knob to the Mixxx internal mixer. Head over to the Mapping options to enable these optional mappings.
Opomba
The mixer knobs are physically linked to the S4 embedded mixer. This means that there is no way to prevent these buttons to adjust gains of the output, and will lead to unexpected volume mixing if the Mixxx mixer is used while also using S4 outputs.
Known bugs and limitation
Audio
During the development phase, it appears that using other Sound API than ALSA would lead the Master VU meter not to work. Furthermore, audio output power would be half as loud as it should be, which can be a problem if you are also using other software, since you audio setting will suddenly become twice as loud. It remains unclear whether or not this was a common issue or if this was specific to the used setup.
Screens
Currently, Mixxx doesn’t support controller screen rendering. However, because the screens are technically a different device, it is safe to interact with them outside of Mixxx while the device is being used by Mixxx. This can be particularly handy if you want to display some images or text, or even dynamic information.
Motors
Haptic feedback (know as Haptic Drive (TM)) are partially implemented. Supported features include jogwheel tensions and turntable mode but these features remains in beta and may sometime have unexpected behaviours. Since there is no guarantee on the long term effect to the controller of how Mixxx implements these features, they are disabled by default. You can enable them by setting UseMotors to true in Mapping options.
Mapping Description
Jogwheel modes
Jogwheel can be used to control various things, depending of the mode they are in.
Vinyl mode (default): The jogwheel platter can be used for scratch. The jogwheel crown can be used to jog up or down the playback.
Jog mode: The wheel platter and crown can be used to jog up or down the playback.
Turntable mode: The wheel behaves as a 33.3 RPM turntable. If the platter or crown are slowed down or speeded up, then it will scratch down or up the track.
Opozorilo
Because this mode relies on Mixxx’s scratch mode, if the track has been pitched up, the keylock will be ignored!
Opomba
This mode is only available if the motor features are enabled. See Motors for more details.
Loop in: The wheel behaves similarly to CDJ. If the platter or crown are turned, it will move back or forth the start of the loop. Additionally, if the loop encoder is used, it will move the all loop back or forth.
Loop out: Like for the loop in mode, but with the exit position of the loop. If the platter or crown are turned, it will move back or forth the end of the loop. Additionally, if the loop encoder is used in the same way than Loop in mode.
Here is how to tell what mode is on, depending the current state of the LED:
Mode |
Jog |
TT |
Jogwheel |
Others |
---|---|---|---|---|
Vinyl mode |
On |
Off |
Circling while the track is playing/scratching |
– |
Jog mode |
Off |
Off |
Circling while the track is playing/scratching |
– |
Turntable mode |
Off |
On |
Circling while the track is playing/scratching |
– |
Loop in |
– |
– |
The whole circle is blinking |
The REV button is blinking |
Loop out |
– |
– |
The whole circle is blinking |
The FLX button is blinking |
Here is how to select each mode:
Mode |
|
---|---|
Vinyl mode |
Press the Jog button (while the Jog button is off) |
Jog mode |
Press the Jog button while in vinyl mode (while the Jog button is on) |
Turntable mode |
Press the TT button. Pressing again while restore the Vinyl mode |
Loop in |
Press SHIFT + REV while a loop is enable |
Loop out |
Press SHIFT + FLX while a loop is enable |
For all modes but Vinyl and Jog, re-selecting the mode will restore the previous one.
Move modes
Moves modes define how the „move“ encoder (the one on the left) reacts when used. Here are all the various modes:
Beat (default): The track will jump backward or forward by the number of beats selected. Press before turning to select the number of beats.
Grid: The track’s detected beats will be move forward or backward on the waveform.
BPM: The track’s detected BPM will be increased or decreased.
Keyboard: The keyboard’s keys displayed on pads get moved up or down to display higher or lower keynotes.
Here is how to tell use each modes:
Mode |
|
---|---|
Beat |
This mode is enable if no other mode are enabled |
Grid |
This mode is enabled while GRID is held down |
BPM |
This mode is enabled while SHIFT + GRID are held down |
Keyboard |
This mode is enabled while STEM is held down |
All mapping detail
Button |
Action |
Lighting |
---|---|---|
Jogwheel platter |
|
|
Jogwheel crown |
|
|
Flux |
|
|
Reverse |
|
|
Grid |
|
|
Turntable |
|
|
Jog |
|
|
Deck Select |
|
|
Shift |
Shift controls for the all controller side, including effect unit |
|
Cue |
|
Depends of the cue mode |
Play/Pause |
|
On if track is playing |
Move |
|
|
Loop |
|
|
Master |
|
|
Sync |
|
|
Tempo fader |
While change the tempo only of the left indicator is either off or of the color of the deck.
|
Deck color: default track speed Green: out of sync (down) Green: out of sync (up) |
Hotcues |
|
|
Rec |
Currently unused |
|
Sampler |
|
|
Mute |
Currently unused |
|
Stems |
|
|
Pads |
|
|
FX 1st knob |
|
|
FX 2nd knob |
|
|
FX 3rd knob |
|
|
FX 4th knob |
|
|
FX 1st button |
|
|
FX 2nd button |
|
|
FX 3rd button |
|
|
FX 4th button |
|
|
Library knob |
|
|
Preview button |
Preview the currently selected track while pressed |
|
Star button |
Change the selected track color on short press (next color, or previous if shifted) |
|
Playlist button |
Open or close a context menu for the currently selected track |
On if there is a context-menu open, off otherwise |
Mixer FX button |
Toggle third effect (short press) or trigger third effect (long press) or assign the quick effect of FX select buttons are pressed |
|
FX Select button |
Apply effect to all deck on release, if no mixer FX button have been pressed |
|
Ext |
Apply the current gain as default. This will reset the gain knob. |
|
Master |
If enabled in the Mapping options, change the main gain |
|
Booth |
If enabled in the Mapping options, change the booth gain |
|
Cue |
If enabled in the Mapping options, adjust the headphone mix |
|
Headphone volume |
If using Mixxx internal mixer, change the headphone gain |
Looping
Control |
Description |
---|---|
Right Encoder (turn) |
Double/halve loop size. |
Right Encoder (press) |
Activate/exit loop of set size from current position |
SHIFT + REV (while no loops are enabled) |
Set the loop in point. This will reset the loop out point as well. |
SHIFT + REV (while a loop is enabled) |
Toggle the loop in jogwheel mode. See Jogwheel modes for more details. |
SHIFT + FLX (while no loops are enabled) |
Set the loop out point. |
SHIFT + FLX (while a loop is enabled) |
Toggle the loop out jogwheel mode. See Jogwheel modes for more details. |
Mapping options
There are various option that can be used to change some behavior:
Setting |
Variable value |
Default |
Range |
Description |
---|---|---|---|---|
Deck colors |
DeckColors |
LEDColors.red,LEDColors.blue,LEDColors.yellow, LEDColors.purple |
All colors as defined in _LedColors_. Must be four color, separated by a comma |
Define the leading colors for each decks. Note that some buttons have only one color |
Sortable column in the library |
LibrarySortableColumns |
LibraryColumns.Artist, LibraryColumns.Title, LibraryColumns.BPM, LibraryColumns.Key, LibraryColumns.DatetimeAdded |
All values defined in the Mixxx control documentation separated by a comma |
Define the list of columns on which it possible to sort the library using the library encoder and the view button |
Loop In/Out jogwheel sensitivity |
LoopWheelMoveFactor |
50 |
-500..500 (Recommended) |
Define the sensitivity when moving the loop start or end point using the loop jogwheel mode. Negative value will reverse the order |
Loop encoder sensitivity |
LoopEncoderMoveFactor |
500 |
-3000..3000 (Recommended) |
Define the sensitivity when moving the loop with the encoder when using the loop jogwheel mode. Negative value will reverse the order |
Loop encoder sensitivity (Shifted) |
LoopEncoderShiftMoveFactor |
2500 |
-5000..5000 (Recommended) |
Define the sensitivity when moving the loop with SHIFT + the encoder when using the loop jogwheel mode. Negative value will reverse the order |
Color of the tempo led when on low takeover |
TempoFaderSoftTakeoverColorLow |
LEDColors.white |
All colors as defined on line 19 |
Define the color of tempo LED when the tempo fader is out of sync, and the actual value is less than on the controller |
Color of the tempo led when on high takeover |
TempoFaderSoftTakeoverColorHigh |
LEDColors.green |
All colors as defined on line 19 |
Define the color of tempo LED when the tempo fader is out of sync, and the actual value is more than on the controller |
Keep transport and play button dimmed when off |
InactiveLightsAlwaysBacklit |
true |
true/false |
Having this setting on will keep LED always dimmed, even when off, although they may not have a matching color with the deck’s color |
Keep the unselected deck button off rather than show its deck color |
DeckSelectAlwaysBacklit |
true |
true/false |
Having this setting on will keep the LED of the unselected deck dimmed instead of off. |
Keylock on SHIFT + MASTER instead of SHIFT + SYNC |
UseKeylockOnMaster |
false |
true/false |
Use SHIFT + MASTER to toggle the keylock instead of SHIFT + SYNC |
Make the grid button blink when over a detected beat |
GridButtonBlinkOverBeat |
false |
true/false |
Make the GRID button blinking when the playback goes over a detected beat |
Make the jogwheel ring blink when the track playing is near the end |
WheelLedBlinkOnTrackEnd |
true |
true/false |
The jogwheel LED ring will start blinking when a track is near the end. The end section can be defined in |
Use the mixer to control input when using SHIFT |
MixerControlsMixAuxOnShift |
false |
true/false |
Make the GRID button blinking when the playback goes over a detected beat |
Number of samples used for jogwheel speed |
WheelSpeedSample |
3 |
1..50 |
Number of samples used to determine the jogwheel movement. A higher value will increase precision but latency too, and vice-versa |
Replace the sampler tab by a beatloop roll tab |
UseBeatloopRollInsteadOfSampler |
false |
true/false |
Replace the sample tab as well of the sample feature with 8 beatloop roll |
Define the predefined size to use for the beatloop tab |
BeatLoopRolls |
1/16,1/8,1/4,1/2,1,2,4,8 |
eight number in range 1/32..512 |
Define the size of loops of each pad, from left to right, starting from the top row. |
Use the two last tab as loop half/double buttons in the beatloop tab |
AddLoopHalveAndDoubleOnBeatloopRollTab |
true |
true/false |
Use the last two pad from the bottom row as loop half and loop double. These can be used to interact with beatloop roll and normal loop. |
Jogwheel speed (in turntable mode, as well as LED indicator) |
BaseRevolutionsPerMinute |
33 + 1/3 |
33+1/3, 45 (Recommended) |
The turntable mode defines how fast the jogwheel turns (if on) as well as the LED, and the overall jogwheel sensitivity. It is recommended to keep either 33 + 1/3 or 45 as a value |
Whether or not to use haptic feedback features |
UseMotors |
false |
true/false |
Whether or not to use haptic feedback features. This is a beta feature, some of them may be unstable. |
Map the mixer :hwlabel`Master` knob to the Mixxx internal mixer |
SoftwareMixerMain |
false |
true/false |
When enabled, the Master knob will drive the Main gain of the Mixxx internal mixer as well as the hardware built-in mixer in the device. |
Map the mixer :hwlabel`Booth` knob to the Mixxx internal mixer |
SoftwareMixerBooth |
false |
true/false |
When enabled, the Booth knob will drive the Booth gain of the Mixxx internal mixer as well as the hardware built-in mixer in the device. |
Map the mixer headphone knobs :hwlabel`VOL` and :hwlabel`MIX` to the Mixxx internal mixer |
SoftwareMixerHeadphone |
false |
true/false |
When enabled, the headphone knobs will drive the headphone controls of the Mixxx internal mixer as well as the hardware built-in mixer in the device. |
Default Pad Layout |
DefaultPadLayout |
default |
default,hotcue,samplerBeatloop,keyboard |
Define the default layout used for the pads. |
This settings are only useful if you are using haptic feedback features
Setting |
Variable value |
Default |
Range |
Description |
---|---|---|---|---|
Number of samples used for jogwheel speed in turntable mode |
TurnTableSpeedSample |
20 |
1..50 |
Number of samples used to determine the jogwheel movement when the turntable is on. A higher value will increase precision but latency too, and vice-versa |
Define the tension of the jogwheel |
TightnessFactor |
0.5 |
0..1.0 |
Define the jogwheel tension. 0 makes it very tight while 1 makes it very loose |
Define how much force can the jogwheel use |
MaxWheelForce |
25000 |
10000..30000 (Recommended, can go up to 60000) |
Define how much resistance can the wheel use when its rotation is held |
Changing settings
Mixxx 2.4
Making these changes is still a little awkward, this will be much easier to do starting in Mixxx 2.5. For now you’ll have to make a small change to the mapping script file. Don’t worry, the actual edit only involves replacing a single word in a text file.
Open Mixxx Preferences and select the Kontrol S4 in the side list.
Select
Traktor-Kontrol-S4-MK3-hid-scripts.js
.Click Open Selected File.
Either the file should open in an editor, or you should see a file browser window with that file selected. If you see a file browser, right click the file and select an option to edit it.
Starting from the block entitled USER CONFIGURABLE SETTINGS, there should be configurable options.
Mixxx 2.5+
Settings can be edited in the preference windows, under Preferences > Controllers > Traktor Kontrol S4 MK3 ….