Skip to content

Launchkey controller

Ryan Gavin edited this page Sep 11, 2026 · 13 revisions

Launchkey controller prototype

Click the Launchkey status in the footer, or open the bug button → Controllers while in Play. The footer status works even with no loaded tracks or audio playing; it distinguishes a linked port awaiting input from received controller messages.

  1. For keyboard screen labels and matching deck colors, tick Screen labels and deck colors before finding ports. This requests SysEx permission; ordinary controls and LEDs work without it.
  2. Click Find MIDI ports. A single matching pair is selected for you. Otherwise choose the Launchkey DAW Out input and DAW In output.
  3. Click Connect Launchkey. This enables the keyboard's native DAW mode and sets encoders to Plugin, pads to DAW and faders to Volume. It does not start playback.

The connected keyboard identifies itself to macOS as Launchkey MK4 61. This prototype uses the documented native MK4 protocol; it is not MCU or HUI. Other generations are not verified. Avoid having another DAW control the same DAW pair simultaneously.

Control Mapping
Faders 1–4 Deck A–D gain
Faders 5–9 Unused
Fader buttons 1–4 / 9 Focus deck A–D / Master
Knobs 1–3 Focused deck/master FX A, Filter, FX B
Knobs 4–6 Focused deck/master Low, Mid, High
Knob 7 Selected deck Trim; unused in Master focus
Knob 8 Master Trim, regardless of focus
Mod wheel Selected deck scrub: up moves forward, down moves backward
Top pads 1–4 Focused deck quick loop, half, double, loop on/off
Top pads 5–8 Unused
Bottom pads 1–5, left to right Focused deck Play/Pause (green), hold Cue (orange), Sync, beat back, beat forward
Bottom pads 6–8 Unused
Play / Stop Global playback controls

Focus chooses the deck for knobs 1–7 and the pads; knob 8 always controls Master Trim. Selection works on empty decks, so you can preconfigure their EQ, filter and Trim before loading. It does not load a song or start audio, and loading preserves selection. All four deck-select buttons stay lit. The selected deck or Master button is green; with SysEx enabled their colors match the app, otherwise distinct hardware palette colors are used. The bottom row follows the selected deck’s on-screen transport order. Pads are inactive in Master focus. Play and Cue stay green and orange while paused, brightening while active. Loop/jump pads require a loaded deck and keep the normal beat-grid and loop rules. The panel's Deck A–D and Master buttons offer the same focus selection.

Hold the selected deck’s Cue pad for temporary audition. Press Play while still holding Cue to keep playback running when you release Cue. Audition starts immediately even with another deck running. With Sync on, pressing Play aligns to the running beat reference; with Sync off, it keeps the audition’s timing unchanged. Releasing Cue, disconnecting or changing focus clears the held gesture safely. These are transport Cue controls, not headphone monitoring switches.

Once configured, Auto-connect remembered Launchkey restores the selected pair and Screen labels preference when the app opens in Play, when you return to Play, and after unplugging/replugging. It never starts playback. Only the remembered device is used; ambiguous or unavailable ports stay visible instead of choosing another device.

Closing the debug panel leaves the controller connected. Switching to Prep releases it until Play resumes. Disconnect releases the pair and turns automatic connection off until you check Auto-connect again or explicitly connect. Unchecking Auto-connect prevents future reconnections without interrupting an existing connection. If the browser needs a permission gesture, use Find MIDI ports once; the app does not keep prompting. If you change to a Custom mode on the keyboard, those controls stop controlling mix[flow]. For the standard knob mapping, hold Shift and choose Plugin mode again.

The Controller debug log shows discovery, permission, detected ports, connection results and incoming/outgoing MIDI messages. Use it to check whether a physical control is sending anything. Clear messages clears this bounded log. If SysEx permission fails, retry discovery with Screen labels unchecked. To enable labels later, disconnect, tick Screen labels, find ports again and reconnect.

The panel has been visually checked in Electron, and the user has confirmed hardware control responds. Native knob and pad packets were captured. Continuous fader/knob input applies its first value immediately, then updates at most 60 times per second using the latest value, without building a queue. Relative turns are summed. Button and pad press/releases remain immediate. Knob positions are not echoed back into the moving encoder; the keyboard’s acceleration is preserved. Hardware display/LED feedback is changed-only and capped at 20 updates per second. Fader updates are isolated from the library and hidden Prep view so they no longer rerender every song row. The user confirmed smooth fader and UI response in the subsequent hardware trial. Knobs 1–3 now mirror the app’s FX A, Filter, FX B order; the screen labels and returned knob positions follow the same order. The debug log refreshes in small batches and ignores unused clock/aftertouch traffic. Rate counters show incoming messages, control applications, mixer updates and outgoing traffic to help diagnose stalls. Status distinguishes ports opened from actual received input. Other controls, LEDs, screen labels and the refined knob feel still need physical confirmation.

Filter, Low/Mid/High EQ and both Trim knobs have a small neutral detent: slow turns near neutral snap to exactly zero, and a deliberate turn escapes it. This only affects MIDI input. FX A/B sends remain continuous. Master Trim is bounded to −24…+12 dB.

The mod wheel uses the matching standard MIDI Out input in addition to the DAW pair. The controller panel shows whether that input is available and the channel it receives. Its first CC1 value establishes a baseline without jumping. Subsequent travel moves the selected deck forward or back, four beats per full sweep, preserving whether it was playing or paused and stopping at the file boundaries. Selection changes and reconnection reset that baseline. Missing wheel input does not disconnect DAW controls.

Physical fader 9 is unassigned; button 9 still selects Master. There is no new master level control. If earlier use of that fader lowered the internal master level, this update does not unexpectedly raise it during playback. A fresh engine defaults that internal level to unity; arrange recovery while stopped or muted. Knob 8 is Master Trim, not a silence-to-unity volume fader.

The updated neutral detents, mod-wheel feel and deck LED colors still need physical confirmation. Automated checks verify their routing, ranges, lifecycle and generated messages. Browser tests verify immediate Cue and Sync-dependent Play latching; they do not measure speaker latency.

Incoming controls now accept all 16 MIDI channels on the chosen Launchkey inputs. The captured physical selectors sent B0 25, B0 26, B0 27 and B0 2D: nonzero values select A, B, C and Master; zero values are releases. The old channel-16 filter rejected these presses. Faders, knobs, pads and transport also accept every channel; their existing control numbers and mappings remain in effect.

Controllers shows the last raw hardware button packet and whether it was recognized. Touch reporting is disabled during connection because touch and knob positions share control numbers across channels. Outgoing LED and screen messages retain the hardware's required channels. Unselected deck buttons retain their dim deck colors; selection is green for both decks and Master.

With Screen labels and deck colors enabled, the Launchkey screen shows the selected deck letter and track title. An unloaded deck says Empty deck; button 9 shows Master. Pressing a selector briefly brings that selection to the front, even if it was already selected. Normal knob parameter displays still appear while adjusting controls, then the screen returns to the selected deck/title. Long titles are shortened to fit the device display.

Manual Debug selection has been physically confirmed to change the hardware screen labels and selector LEDs. The user also confirmed that physical selector buttons now work after the input fix. Automated checks cover the captured packets and every MIDI channel; this does not replace the physical trial.

Pad layout and fader labels

Assigned pads stay lit even when the selected deck is empty. Top-row loop pads use that deck's color; quick-loop and loop-toggle brighten when its loop is enabled. Play stays green and Cue orange. Unassigned pads and Master-focus pads remain off. Pressing a track-dependent pad on an empty deck does nothing.

With screen labels enabled, moving faders1–4 shows Deck A Level through Deck D Level. Faders5–9 show Unused. The numeric display is the hardware MIDI value. Existing knob labels remain available, and temporary displays return to the selected deck/title.

Novation documents touch messages and describes the display touch gesture as Shift + rotate; that does not confirm capacitive touch sensors. Touch reporting remains disabled while input channels are ignored. Labels appear on movement.

Physical selector operation is now confirmed by the user. The new always-visible pad layout, deck-colored loop pads and fader labels still need a hardware trial.

Deck and Master Trim now match EQ at −24 to +12 dB. Both reset to 0 dB. Knobs7 and8 span the full range and snap to zero around two-thirds travel.

Clone this wiki locally