[PATCH] ALSA: usb-audio: add mixer quirks for Pioneer DJM-900NXS2

Fabian Lesniak fabian at lesniak-it.de
Mon Feb 1 22:22:47 CET 2021


This commit adds mixer quirks for the Pioneer DJM-900NXS2 mixer. This
device has 6 capture channels, 5 of them allow setting the signal
source. This adds controls for these, similar to the DJM-250Mk2.
However, playpack channels are not controllable via software like on the
250Mk2, as they can only be set manually on the mixing console.
Read-only controls showing the currently selected playback channels are
omitted.

This patch is built on top of the DJM750 mixer quirk support and
requires it to be applied first.

Signed-off-by: Fabian Lesniak <fabian at lesniak-it.de>
---
 sound/usb/mixer_quirks.c | 73 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 72 insertions(+), 1 deletion(-)

diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
index 10e472feb757..6688a38321a4 100644
--- a/sound/usb/mixer_quirks.c
+++ b/sound/usb/mixer_quirks.c
@@ -2777,9 +2777,76 @@ static const struct snd_pioneer_djm_option_group snd_pioneer_djm750_option_group
 	snd_pioneer_djm_option_group_item("CH4 Input", djm750_capture_ch4, 0),
 };
 
+
+/* DJM-900NXS2 */
+static const struct snd_pioneer_djm_option snd_pioneer_djm_options_djm900nxs2_capture_ch1[] = {
+	{ .name =  "CH1 Control Tone LINE",    .wValue = 0x0100, .wIndex = 0x8002 },
+	{ .name =  "CH1 Control Tone DITITAL", .wValue = 0x0102, .wIndex = 0x8002 },
+	{ .name =  "CH1 Control Tone PHONO",   .wValue = 0x0103, .wIndex = 0x8002 },
+	{ .name =  "Post CH1 Fader",           .wValue = 0x0106, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader A",            .wValue = 0x0107, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader B",            .wValue = 0x0108, .wIndex = 0x8002 },
+	{ .name =  "MIC",                      .wValue = 0x0109, .wIndex = 0x8002 },
+	{ .name =  "REC OUT",                  .wValue = 0x010a, .wIndex = 0x8002 },
+};
+
+static const struct snd_pioneer_djm_option snd_pioneer_djm_options_djm900nxs2_capture_ch2[] = {
+	{ .name =  "CH2 Control Tone LINE",    .wValue = 0x0200, .wIndex = 0x8002 },
+	{ .name =  "CH2 Control Tone DITITAL", .wValue = 0x0202, .wIndex = 0x8002 },
+	{ .name =  "CH2 Control Tone PHONO",   .wValue = 0x0203, .wIndex = 0x8002 },
+	{ .name =  "Post CH2 Fader",           .wValue = 0x0206, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader A",            .wValue = 0x0207, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader B",            .wValue = 0x0208, .wIndex = 0x8002 },
+	{ .name =  "MIC",                      .wValue = 0x0209, .wIndex = 0x8002 },
+	{ .name =  "REC OUT",                  .wValue = 0x020a, .wIndex = 0x8002 },
+};
+
+static const struct snd_pioneer_djm_option snd_pioneer_djm_options_djm900nxs2_capture_ch3[] = {
+	{ .name =  "CH3 Control Tone LINE",    .wValue = 0x0300, .wIndex = 0x8002 },
+	{ .name =  "CH3 Control Tone DITITAL", .wValue = 0x0302, .wIndex = 0x8002 },
+	{ .name =  "CH3 Control Tone PHONO",   .wValue = 0x0303, .wIndex = 0x8002 },
+	{ .name =  "Post CH3 Fader",           .wValue = 0x0306, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader A",            .wValue = 0x0307, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader B",            .wValue = 0x0308, .wIndex = 0x8002 },
+	{ .name =  "MIC",                      .wValue = 0x0309, .wIndex = 0x8002 },
+	{ .name =  "REC OUT",                  .wValue = 0x030a, .wIndex = 0x8002 },
+};
+
+static const struct snd_pioneer_djm_option snd_pioneer_djm_options_djm900nxs2_capture_ch4[] = {
+	{ .name =  "CH4 Control Tone LINE",    .wValue = 0x0400, .wIndex = 0x8002 },
+	{ .name =  "CH4 Control Tone DITITAL", .wValue = 0x0402, .wIndex = 0x8002 },
+	{ .name =  "CH4 Control Tone PHONO",   .wValue = 0x0403, .wIndex = 0x8002 },
+	{ .name =  "Post CH4 Fader",           .wValue = 0x0406, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader A",            .wValue = 0x0407, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader B",            .wValue = 0x0408, .wIndex = 0x8002 },
+	{ .name =  "MIC",                      .wValue = 0x0409, .wIndex = 0x8002 },
+	{ .name =  "REC OUT",                  .wValue = 0x040a, .wIndex = 0x8002 },
+};
+
+static const struct snd_pioneer_djm_option snd_pioneer_djm_options_djm900nxs2_capture_ch5[] = {
+	{ .name =  "Cross Fader A",            .wValue = 0x0507, .wIndex = 0x8002 },
+	{ .name =  "Cross Fader B",            .wValue = 0x0508, .wIndex = 0x8002 },
+	{ .name =  "MIC",                      .wValue = 0x0509, .wIndex = 0x8002 },
+	{ .name =  "REC OUT",                  .wValue = 0x050a, .wIndex = 0x8002 },
+	{ .name =  "Post Fader A",             .wValue = 0x050b, .wIndex = 0x8002 },
+	{ .name =  "Post Fader B",             .wValue = 0x050c, .wIndex = 0x8002 },
+	{ .name =  "Post Fader C",             .wValue = 0x050d, .wIndex = 0x8002 },
+	{ .name =  "Post Fader D",             .wValue = 0x050e, .wIndex = 0x8002 },
+};
+
+static const struct snd_pioneer_djm_option_group snd_pioneer_djm900nxs2_option_groups[] = {
+	snd_pioneer_djm_option_group_item("Capture Level", capture_level, 0),
+	snd_pioneer_djm_option_group_item("CH1 Input", djm900nxs2_capture_ch1, 2),
+	snd_pioneer_djm_option_group_item("CH2 Input", djm900nxs2_capture_ch2, 2),
+	snd_pioneer_djm_option_group_item("CH3 Input", djm900nxs2_capture_ch3, 2),
+	snd_pioneer_djm_option_group_item("CH4 Input", djm900nxs2_capture_ch4, 2),
+	snd_pioneer_djm_option_group_item("CH5 Input", djm900nxs2_capture_ch5, 3),
+};
+
 static const struct snd_pioneer_djm_device snd_pioneer_djm_devices[] = {
 	{ .name = "DJM-250Mk2", .controls = snd_pioneer_djm250mk2_option_groups, .ncontrols = 7},
-	{ .name = "DJM-750", .controls = snd_pioneer_djm750_option_groups, .ncontrols = 5}
+	{ .name = "DJM-750", .controls = snd_pioneer_djm750_option_groups, .ncontrols = 5},
+	{ .name = "DJM-900NXS2", .controls = snd_pioneer_djm900nxs2_option_groups, .ncontrols = 6}
 };
 
 // layout of the kcontrol->private_value:
@@ -3020,6 +3087,10 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)
 	case USB_ID(0x08e4, 0x017f): /* Pioneer DJ DJM-750 */
 		err = snd_pioneer_djm_controls_create(mixer, 0x01);
 		break;
+	case USB_ID(0x2b73, 0x000a): /* Pioneer DJ DJM-900NXS2 */
+		err = snd_pioneer_djm_controls_create(mixer, 0x02);
+		break;
+
 	}
 
 	return err;
-- 
2.30.0



More information about the Alsa-devel mailing list