Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/gueritta/primemixxx/llms.txt

Use this file to discover all available pages before exploring further.

The Denon Prime Go exposes all physical controls — platters, faders, pads, buttons, and encoders — as an internal USB MIDI device. The authoritative source for the hardware’s MIDI layout is the Engine OS QML file at /usr/Engine/AssignmentFiles/PresetAssignmentFiles/JP11/JP11_Controller_Assignments.qml on the device. The MIXXX mapping files Denon-Prime-Go.midi.xml and Denon-Prime-Go-scripts.js must match these channel, note, and CC assignments exactly.
Engine OS QML files use 0-indexed MIDI channels (0 = channel 1). MIXXX uses the standard 1-indexed status byte convention (0x90 = channel 1, Note On). When comparing the QML source against MIXXX XML entries, add 1 to the QML channel index to get the MIXXX channel number.
Never delete .midi.xml files during cleanup. If the file referenced by [ControllerPreset] in mixxx.cfg is missing, MIXXX skips controller initialization entirely and the skin renders only a toolbar — decks, waveforms, and the library are all hidden.

Channel Layout

MIDI ChannelQML IndexPurpose
10Mixer Channel 1 (PFL, EQ, fader, sweep FX)
21Mixer Channel 2 (PFL, EQ, fader, sweep FX)
32Left Deck (transport, pads, jog, tempo)
43Right Deck (transport, pads, jog, tempo)
54DJ FX (select, time, wet/dry, activate)
1615Global (back, forward, browse, view, shift, load)

Left Deck — MIDI Channel 3

Note On status byte: 0x92 — Note Off: 0x82

Notes

ControlNote (dec)Note (hex)Notes
Load10x01
Sync80x08Hold = KeySync
Cue90x09Shift = Set Cue Point
Play100x0A
Pad Mode CUES110x0BAlt = STEMS
Pad Mode LOOPS120x0CAlt = AUTO
Pad Mode ROLL130x0DShift = SAMPLER
Action Pads 1–815–220x0F0x168 velocity-sensitive pads
Pitch Bend −290x1D
Pitch Bend +300x1E
Jog Touch330x21
Vinyl350x23Hold = GridCueEdit, Shift = SlipMode
AutoLoop Push390x27Shift = IncreaseBeatJumpSize

CCs

ControlCC (hex)Notes
Tempo Slider Upper0x1FInverted
Tempo Slider Lower0x4B
AutoLoop Turn0x20Shift = BeatJump
Jog Wheel MSB0x37Upper 7 bits of 14-bit position
Jog Wheel LSB0x4DLower 7 bits of 14-bit position

Right Deck — MIDI Channel 4

Note On status byte: 0x93 — Note Off: 0x83 Same note and CC layout as the Left Deck, with one exception:
ControlNote (dec)Note (hex)
Load20x02
All other notes and CCs are identical to the Left Deck table above.

Mixer Channel 1 — MIDI Channel 1

Note On status byte: 0x90 — Note Off: 0x80
ControlTypeValue (hex)
PFL (Cue Monitor)Note0x0D
Sweep FX Select 1Note0x0E
Sweep FX Select 2Note0x0F
Trim (Gain)CC0x03
Treble (High EQ)CC0x04
Mid EQCC0x06
Bass (Low EQ)CC0x08
Sweep FX KnobCC0x0B
Channel FaderCC0x0E
VU Meter (output)CC0x20

Mixer Channel 2 — MIDI Channel 2

Note On status byte: 0x91 — Note Off: 0x81 Same layout as Mixer Channel 1. VU Meter output uses CC 0x21 instead of 0x20.

DJ FX — MIDI Channel 5

Note On status byte: 0x94
ControlTypeValue (hex)
FX ActivateNote0x06
FX Select PushNote0x07
FX Time PushNote0x08
FX Select TouchNote0x09
FX Assign 1Note0x0B
FX Assign 2Note0x0C
FX Wet/DryCC0x04
FX Select TurnCC0x21
FX Time TurnCC0x22

Global — MIDI Channel 16

Note On status byte: 0x9F — Note Off: 0x8F
ControlTypeValue (hex)Notes
BackNote0x03
ForwardNote0x04Shift = Quantize
Browse Encoder PushNote0x06
ViewNote0x07Hold = ControlCenter, Shift = SwitchLayout
ShiftNote0x08
Eject/SourceNote0x14Shift = Source select
Browse Encoder TurnCC0x05Shift = 15-step scroll
Cue MixCC0x0C
Cue GainCC0x0D
CrossfaderCC0x0E

Mic Controls (Global channel)

ControlNote (hex)
Mic 10x24
Mic 20x25

Jog Wheel Details

Each deck exposes the jog wheel across three messages on its deck MIDI channel:
SignalTypeValue (hex)Purpose
Jog TouchNote0x21Triggers engine.scratchEnable()
Jog Wheel MSBCC0x37Upper 7 bits of 14-bit position
Jog Wheel LSBCC0x4DLower 7 bits of 14-bit position
The wheel position is a 14-bit value assembled from MSB + LSB. Touch requires both an active touch note (isPress()) and vinylMode === true. The default value of _vinylMode is true. The Vinyl button (Note 0x23) edge-detects transitions from 0 → 127 to toggle vinyl mode on/off.

LED Protocols

SysEx RGB (LedType.RGB)

Used for pad buttons (Action Pads 0x0F0x16) and pad mode buttons (HotCue/Loop/Roll mode keys).
F0 00 02 0B 7F 0C 03 00 05 <ch> <idx> <r> <g> <b> F7
  • <ch> and <idx> are the MIDI channel and note index in hex
  • <r>, <g>, <b> are 7-bit (0–127) gamma-corrected color values
  • Gamma: 3.5 (same value used for both pad and non-pad controls)
  • Color calculation: Math.floor(Math.pow(c, gamma) * 127) where c is a normalized 0–1 float
const sendSysexRGB = function(channel, control, red, green, blue) {
    const msg = [0xf0, 0x00, 0x02, 0x0b, 0x7f, 0x0C, 0x03, 0x00, 0x05,
                 channel, control, red, green, blue, 0xf7];
    midi.sendSysexMsg(msg, msg.length);
};

Simple Note On/Off (LedType.Simple)

Used for transport buttons (Play, Cue, Load), navigation (Back, Forward, Browse, View, Shift), PFL, AutoLoop, and Vinyl.
Note On:  9<ch> <idx> <vel>    (vel > 0 → LED on, color = velocity)
Note Off: 8<ch> <idx> 00       (vel = 0 → LED fully off)
The velocity byte doubles as a color selector from the device’s 7-bit hardware palette.

Known Working Simple LED Color Values

ValueColor / EffectUsed For
0x00Fully offCue off, Play off, PFL off
0x01Very dim glowLoad (empty slot)
0x02Subtle dimBack, Forward (always lit)
0x09Dim yellowShift off
0x0CGreenPlay on, Load (track loaded)
0x1AAmber / orangeCue on
0x20Bright greenSync on
0x40RedVinyl on
18Deck colorsPFL on (colDeck = [1, 5], colDeckDark = [4, 6])

Device Init SysEx Messages

These messages are sent on controller connection to initialize the hardware:
F0 00 02 0B 7F 0C 60 00 04 04 01 01 04 F7   (device initialization)
F0 00 02 0B 7F 0C 04 00 00 F7               (query absolute controls)
F0 00 02 0B 7F 0C 42 00 00 F7               (request power-on button state)
F0 7E 00 06 01 F7                           (MIDI device inquiry)

All Known SysEx Messages

NameMessage
RGB LED colorF0 00 02 0B 7F 0C 03 00 05 <ch> <idx> <r> <g> <b> F7
Device initializationF0 00 02 0B 7F 0C 60 00 04 04 01 01 04 F7
Query absolute controlsF0 00 02 0B 7F 0C 04 00 00 F7
Request power-on stateF0 00 02 0B 7F 0C 42 00 00 F7
MIDI device inquiryF0 7E 00 06 01 F7
Active Sense messages (every 300ms) are forwarded to the f_midi virtual device for Serato loopback compatibility.

Known Issues

IssueStatusNotes
PFL left always on✅ Fixedoutput() sends 0x00 (Note Off) instead of dim green
Vinyl rapid toggle✅ FixedEdge detection: _lastVinylState, only 0→127 triggers
Cue LED✅ FixedSimple Note On (0x1A) works
Play LED✅ FixedSimple Note On (0x0C) works
scratch2_enable Channel0 error✅ FixedRemoved outKey from vinyl button
Pad / hotcue LEDs❌ BrokenOnly update on pad mode switch, not on track load
Jog touch error❌ OpenvinylMode may be false; needs debug
Load / Back / Fwd LEDs❌ OpenStill use SysEx or no output — need Simple

Build docs developers (and LLMs) love