Skip to content

S4 Mk3 screens setup#786

Merged
ronso0 merged 1 commit intomixxxdj:mainfrom
acolombier:feat/s4-mk3-screens-setup
Jan 20, 2026
Merged

S4 Mk3 screens setup#786
ronso0 merged 1 commit intomixxxdj:mainfrom
acolombier:feat/s4-mk3-screens-setup

Conversation

@acolombier
Copy link
Copy Markdown
Member

@acolombier acolombier changed the base branch from main to 2.6 January 11, 2026 16:09
@acolombier acolombier changed the base branch from 2.6 to main January 11, 2026 16:10
@acolombier
Copy link
Copy Markdown
Member Author

@mixxxdj/developers the related mapping was merged - could we please review this?

Copy link
Copy Markdown
Member

@ronso0 ronso0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!
Trust you that it matches the current mapping (I kinda lost track of the upstream changes..)

Just some wording fixups, as far as I can tell as non-native speaker.

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 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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Compared to the MK2 and MK1, it also have motorised shiny aluminum jogwheels, screens and a set of pads which can be use for
Compared to the MK2 and MK1, it also has shiny, motorised aluminum jogwheels, screens and a set of pads which can be used for

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.
The S4 MK3 uses the standard :term:`HID` protocol for the Buttons, Knobs, Faders and LEDs, and extends it for the motorized Jog-Wheels.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The S4 MK3 uses the standard :term:`HID` protocol for the Buttons, Knobs, Faders and LEDs, and extends it for the motorized Jog-Wheels.
The S4 MK3 uses the standard :term:`HID` protocol for the buttons, knobs, faders and LEDs, and extends it for the motorized jogwheels.

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.
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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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
Haptic feedback (know as Haptic Drive (TM)) is partially implemented. Supported features include jogwheel tensions and turntable mode, but these features remain in beta and

The easiest way to tell the MK3 apart from the older MK1 and MK2 are these screens, between the "Move" and "Loop" encoders.
The S4 MK3 uses the standard :term:`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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The easiest way to tell the MK3 apart from the other MK1 and 2 are these screens, displace between the "Move" and "Loop" encoder.
The easiest way to tell the MK3 apart from the MK1 and Mk2 models are these screens, placed in between the "Move" and "Loop" encoders.

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 solely on :term:`USB` power and a separate power supply must be used.
Unlike its predecessor, the Kontrol S4 Mk3 cannot run from :term:`USB` power and the separate power supply must be used.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Unlike its predecessor, the Kontrol S4 Mk3 cannot run from :term:`USB` power and the separate power supply must be used.
Unlike its predecessors, the Kontrol S4 Mk3 cannot run from :term:`USB` power and the separate power supply must be used.

The controller screens are supported, but they require a little bit of tinkering. Due to the legacy controller engine, the screen are driven by a separate mapping, which will have to be set
independently of the controller mapping.

.. note:: The screens rendering is done using QML and the communication is achieved via BULK USB endpoint. Both of these feature are not available out of the box on Windows and Mac for now.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
.. note:: The screens rendering is done using QML and the communication is achieved via BULK USB endpoint. Both of these feature are not available out of the box on Windows and Mac for now.
.. note:: The screens rendering is done using QML and the communication is achieved via BULK USB endpoint. Both of these features are not available out of the box on Windows and Mac for now.


.. note:: The screens rendering is done using QML and the communication is achieved via BULK USB endpoint. Both of these feature are not available out of the box on Windows and Mac for now.

By default, the screens are standalone, meaning they do not interact with the device states. This means that local state such as deck selection or shifting will not trigger any screen interaction,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
By default, the screens are standalone, meaning they do not interact with the device states. This means that local state such as deck selection or shifting will not trigger any screen interaction,
By default, the screens are standalone. This means that local state changes such as deck selection or shifting will not trigger any screen interaction,

By default, the screens are standalone, meaning they do not interact with the device states. This means that local state such as deck selection or shifting will not trigger any screen interaction,
and thus you should expect only Deck A and B to be displayed on these screen by default, although this can be changed in the controller settings.

.. note:: it exists an API that was temporary parked that allows mappings to communicate. If you want, you may `download <https://github.com/acolombier/mixxx/actions/runs/13751974244?pr=10>` or build a version of Mixxx with `this feature <https://github.com/acolombier/mixxx/pull/10>` and it should automatically work on the controller.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
.. note:: it exists an API that was temporary parked that allows mappings to communicate. If you want, you may `download <https://github.com/acolombier/mixxx/actions/runs/13751974244?pr=10>` or build a version of Mixxx with `this feature <https://github.com/acolombier/mixxx/pull/10>` and it should automatically work on the controller.
.. note:: It exists an API that was temporarily parked that allows mappings to communicate. If you want, you may `download pre-built binaries <https://github.com/acolombier/mixxx/actions/runs/13751974244?pr=10>` or build a version of Mixxx with `this feature <https://github.com/acolombier/mixxx/pull/10>` and it should automatically work on the controller.

~~~~~~~~~~~~~~

The jog wheel can be used to control various things, depending on the mode they are in.
Jogwheel can be used to control various things, depending of the mode they are in.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Jogwheel can be used to control various things, depending of the mode they are in.
The jogwheel can be used to control various things, depending on the mode they are in.

"on" is correct here

4. **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.
5. **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.
4. **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.
5. **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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
5. **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.
5. **Loop out**: Like the **Loop in** mode, but for the exit position of the loop. If the platter or crown are turned, it will move the end of the loop back or forth. Additionally, the "Loop" encoder can used in the same way as in **Loop in** mode.

@acolombier acolombier force-pushed the feat/s4-mk3-screens-setup branch from c50cf77 to 211cc74 Compare January 19, 2026 00:57
@acolombier
Copy link
Copy Markdown
Member Author

Thanks for the review! Accepted the suggestions and squashed the fixups.

@ronso0
Copy link
Copy Markdown
Member

ronso0 commented Jan 20, 2026

Cool, so now all that's left is removing that trailing whitespace pre-commit complains about
https://github.com/mixxxdj/manual/actions/runs/21121777639/job/60735788876?pr=786#step:4:191

@acolombier acolombier force-pushed the feat/s4-mk3-screens-setup branch from 211cc74 to d20c122 Compare January 20, 2026 00:41
@acolombier
Copy link
Copy Markdown
Member Author

Oh yes, apologies for missing this. Should be good now!

@ronso0
Copy link
Copy Markdown
Member

ronso0 commented Jan 20, 2026

Thanks, let's go

@ronso0 ronso0 merged commit 1ad3ed8 into mixxxdj:main Jan 20, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants