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 with the MK2 and MK1, it also has motorized aluminum jog wheels, LCD screens and a set of pads which can be used for various features.
The S4 MK3 uses a standard USB HID protocol for the Buttons, Knobs, Faders and LEDs, and extends it for the motorized Jog-Wheels. The screens use a custom USB Bulk transfer protocol. Mixxx doesn’t support rendering content for external screens yet, but that work is in progress and will be available in a future version. The easiest way to tell the MK3 apart from the older MK1 and MK2 are these screens, between the «Move» and «Loop» encoders.
Unlike its predecessor, the Kontrol S4 Mk3 cannot run solely on USB power and a separate power supply must be used.
Të reja në versionin 2.4.
Compatibility
The Kontrol S4 MK3 is a USB class compliant audio and HID device, 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 the Mixxx 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 audio interface
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 software mixing
If you don’t want to use the audio outputs of the controller, 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.
Shënim
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 the S4’s outputs.
Known bugs and limitations
Audio
On GNU/Linux, it appears that using a sound API other than ALSA causes the Master VU meter not to work. Furthermore, audio output level is half as loud as it should be. It remains unclear whether or not this was a common issue or if this was specific to the used setup. Users should use the ALSA sound API for the best performance.
Screens
Currently, Mixxx doesn’t support controller screen rendering.
Motors
Haptic feedback (know as Haptic Drive (TM)) is partially implemented. Supported features include jog wheel tension and turntable mode but these features remain in beta and may have unexpected behaviour. To avoid any possible chance that incorrect motor settings might affect the controller in the long term these features are disabled by default. You can enable them by setting UseMotors to true in Mapping options.
Mapping Description
Jog wheel modes
The jog wheel can be used to control various things, depending on the mode they are in.
Vinyl mode (default): The jog wheel platter can be used for scratching. The jog wheel crown can be used to increase or decrease the speed of playback.
Jog mode: The wheel platter and crown can be used to adjust the playback speed up or down.
Turntable mode: The wheel behaves like a 33.3 RPM turntable. Touching the platter or crown will scratch the track like a regular turntable.
Sinjalizim
Because this mode relies on Mixxx’s scratch mode, if the track has been pitched up, keylock will be ignored!
Shënim
This mode is only available if the motor features are enabled. See Motors for more details.
Loop in: The wheel behaves similarly to a Pioneer CDJ device. If the platter or crown are turned, it will adjust the start of the loop back and forth. Additionally, if the loop encoder is used, it will move the entire loop back and forth.
Loop out: Similar to the loop in mode, but with the end position of the loop. If the platter or crown are turned, it will move the end of the loop back and forth. Additionally, if the loop encoder is used it will move the entire loop in the same way as Loop in mode.
Here is how to tell what mode is enabled, depending the current state of the LED:
Mode |
Jog |
TT |
Jog wheel |
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 will restore the Vinyl mode |
Loop in |
Press SHIFT + REV while a loop is enabled |
Loop out |
Press SHIFT + FLX while a loop is enabled |
For all modes but Vinyl and Jog, re-selecting the mode will restore the previous one.
Move modes
Move modes define what effect the «move» encoder (the knob on the left) will have 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 adjusted forward or backward on the waveform.
BPM: The track’s detected BPM will be increased or decreased.
Keyboard: The melodic keys displayed on pads get adjusted up or down to display higher or lower notes.
Here is how to tell use each modes:
Mode |
|
---|---|
Beat |
This mode is enabled if no other modes are enabled |
Grid |
This mode is enabled when GRID is held down |
BPM |
This mode is enabled when SHIFT + GRID are held down |
Keyboard |
This mode is enabled when STEM is held down |
Full mapping details
Button |
Action |
Lighting |
---|---|---|
Jog wheel platter |
|
|
Jog wheel crown |
|
|
Flux |
|
|
Reverse |
|
|
Grid |
|
|
Turntable |
|
|
Jog |
|
|
Deck Select |
|
|
Shift |
Shift controls for that side of the controller, including effect unit |
|
Cue |
|
Depends on the cue mode |
Play/Pause |
|
On if track is playing |
Move |
|
|
Loop |
|
|
Master |
|
|
Sync |
|
|
Tempo fader |
Changes tempo only if the left indicator is either off or matches 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 |
Previews 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 jog wheel mode. See Jog wheel 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 jog wheel mode. See Jog wheel modes for more details. |
Mapping options
There are various option that can be used to change some behavior:
Variable value |
Description |
Default |
Range |
Description |
---|---|---|---|---|
DeckColors |
Deck colors |
LEDColors.red,LEDColors.blue,LEDColors.yellow, LEDColors.purple |
All colors as defined in _LedColors_. Must be four color, separated by a comma |
Define the primary color for each decks. Note that some buttons have only one color. |
LibrarySortableColumns |
Sortable column in the library |
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. |
LoopWheelMoveFactor |
Loop In/Out jog wheel sensitivity |
50 |
-500..500 (Recommended) |
Define the sensitivity when moving the loop start or end point using the loop jog wheel mode. Negative value will reverse the direction. |
LoopEncoderMoveFactor |
Loop encoder sensitivity |
500 |
-3000..3000 (Recommended) |
Define the sensitivity when moving the loop with the encoder when using the loop jog wheel mode. Negative value will reverse the direction. |
LoopEncoderShiftMoveFactor |
Loop encoder sensitivity (Shifted) |
2500 |
-5000..5000 (Recommended) |
Define the sensitivity when moving the loop with SHIFT + the encoder when using the loop jog wheel mode. Negative value will reverse the direction. |
TempoFaderSoftTakeoverColorLow |
Color of the tempo led when on low takeover |
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. |
TempoFaderSoftTakeoverColorHigh |
Color of the tempo led when on high takeover |
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. |
InactiveLightsAlwaysBacklit |
Keep transport and play button dimmed when off |
true |
true/false |
Having this setting on will keep LED always dimmed, even when off, although the color may not match the deck’s color. |
DeckSelectAlwaysBacklit |
Keep the unselected deck button off rather than show its deck color |
true |
true/false |
Having this setting on will keep the LED of the unselected deck dimmed instead of off. |
UseKeylockOnMaster |
Keylock on SHIFT + MASTER instead of SHIFT + SYNC |
false |
true/false |
Use SHIFT + MASTER to toggle keylock instead of SHIFT + SYNC. |
GridButtonBlinkOverBeat |
Make the grid button blink when over a detected beat |
false |
true/false |
Make the GRID button blink when the playback goes over a detected beat. |
WheelLedBlinkOnTrackEnd |
Make the jog wheel ring blink when the track playing is near the end |
true |
true/false |
The jog wheel LED ring will start blinking when a track is near the end. The end section can be defined in . |
MixerControlsMixAuxOnShift |
Use the mixer to control input when using SHIFT |
false |
true/false |
Make the GRID button blink when the playback goes over a detected beat. |
WheelSpeedSample |
Number of samples used for jog wheel speed |
3 |
1..50 |
Number of samples used to determine the jog wheel movement. A higher value will decrease input noise but increase latency, and vice-versa. |
UseBeatloopRollInsteadOfSampler |
Replace the sampler tab by a beatloop roll tab |
false |
true/false |
Replace the sample tab as well as the sample feature with an 8 beatloop roll. |
BeatLoopRolls |
Define the predefined size to use for the beatloop tab |
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. |
AddLoopHalveAndDoubleOnBeatloopRollTab |
Use the two last tab as loop half/double buttons in the beatloop tab |
true |
true/false |
Use the last two pads from the bottom row as loop halve and loop double. These can be used to interact with beatloop roll and normal loop. |
BaseRevolutionsPerMinute |
Jog wheel speed (in turntable mode, as well as LED indicator) |
33 + 1/3 |
33+1/3, 45 (Recommended) |
The turntable mode defines how fast the jog wheel turns (if on) as well as the LED, and the overall jog wheel sensitivity. It is recommended to keep either 33 + 1/3 or 45 as a value. |
UseMotors |
Whether or not to use haptic feedback features |
false |
true/false |
Determines whether or not to use haptic feedback features. This is an unstable beta feature. |
SoftwareMixerMain |
Map the mixer :hwlabel`Master` knob to the Mixxx internal mixer |
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. |
SoftwareMixerBooth |
Map the mixer :hwlabel`Booth` knob to the Mixxx internal mixer |
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. |
SoftwareMixerHeadphone |
Map the mixer headphone knobs :hwlabel`VOL` and :hwlabel`MIX` to the Mixxx internal mixer |
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. |
DefaultPadLayout |
Default Pad Layout |
default |
default,hotcue,samplerBeatloop,keyboard |
Define the default layout used for the pads. |
These settings are only useful if you are using haptic feedback features:
Variable value |
Description |
Default |
Range |
Description |
---|---|---|---|---|
TurnTableSpeedSample |
Number of samples used for jog wheel speed in turntable mode |
20 |
1..50 |
Number of samples used to determine the jog wheel movement when the turntable is on. A higher value will decrease input noise but increase latency, and vice-versa. |
TightnessFactor |
Define the tension of the jog wheel |
0.5 |
0..1.0 |
Define the jog wheel tension. 0 makes it very tight while 1 makes it very loose. |
MaxWheelForce |
Define how much force can the jog wheel use |
25000 |
10000..30000 (Recommended, can go up to 60000) |
Define how much resistance can the wheel apply when held by the DJ. |
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. You’ll have to make changes to the mapping script file itself. The file is readable as text and the instructions inside the file will explain how to make the changes.
Open Mixxx Preferences and select the Kontrol S4 MK3 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.
When you save the file, the settings should be updated immediately.
Mixxx 2.5+
Settings can be edited in the preference windows, under Preferences > Controllers > Traktor Kontrol S4 MK3 ….