DJ Controller Deck
Description
A single deck section from a two-channel DJ controller in the style of Pioneer DDJ-series hardware. Landscape orientation showing the jog wheel platter, pitch fader, channel fader, four EQ/gain radial knobs, VU meter, cue/play buttons, and crossfader. Two of these decks placed side-by-side with a shared crossfader produce a complete mixer layout.
Reference Devices
Pioneer DDJ-SX2, Pioneer DDJ-400, Numark Mixtrack Pro 3, Native Instruments Traktor Kontrol S2 MK3.
Layout
┌────────────────────────────────────────────────────┐
│ ████ │
│ (GAIN) (HI) (MID) (LO) ●SYNC ████ │
│ ●CUE ████ │ ← radial-knobs + led-dots + vu-meter
│ ●LOAD ██ │
├────────────────────────────────────────────────── │
│ │
│ ╔═══════════════════╗ ┃━┃ │
│ ║ ║ ┃━┃ PITCH │
│ ║ JOG WHEEL ║ ┃━┃ │
│ ║ PLATTER ║ ┃━┃ │
│ ║ ║ ┃━┃ │
│ ╚═══════════════════╝ ┃━┃ │
│ ┃━┃ │
│ [CUE] [SYNC] [▶ PLAY] CH ┃━┃ │
├────────────────────────────────────────────────────┤
│ ──────────────●────────────── │
│ DECK A XFADER DECK B │
└────────────────────────────────────────────────────┘
Assembly Rules
Container: Use
.chassis-panelwith.variant-metal. Landscape:min-width: 420px.padding: 14px 16px.background: linear-gradient(180deg, #1e1c1a, #161412). The Pioneer DDJ chassis is nearly black with subtle warm-dark brushed metal.Top knob row: Horizontal flex row,
align-items: flex-end; gap: 12px. Fourradial-knobcomponents at 56x56px (compact —transform: scale(0.56)applied to the default 100px knob, or set via CSS custom property). Knobs from left to right: GAIN, HI, MID, LO. Labels in 7px mono below each:GAIN/HI/MID/LO.letter-spacing: 1px; color: var(--text-muted). This EQ section sits in the left two-thirds of the row.Status LEDs: Three
led-dotsstacked vertically, right side of the top row. Spacinggap: 4px. Colors and labels:.greenLOAD (track is loaded),.amberCUE (cue point set),.amberSYNC (BPM-synced to other deck). Labels at 6px mono, right-aligned.VU meter:
vu-metercomponent to the right of LED cluster. 2 bars, height80px. Bars animate to show current track level — show bars at 60% and 50% to simulate typical track headroom with one channel peaking.Platter section: Horizontal flex row,
align-items: center; gap: 16px. Contains:- Left (wide):
rotary-encodercomponent, centered. This serves as the jog wheel platter. The rotary encoder at 100x100px is slightly undersized vs. a real jog wheel — render it at 150x150px by applyingwidth: 150px; height: 150pxand scaling the internal gradients proportionally via a wrappertransform: scale(1.5). Surround with a thinborder: 2px solid var(--border-mid); border-radius: 50%outer ring labeledJOG WHEELat 7px mono centered below. - Right (narrow):
vertical-faderat default 140px height, labeledPITCHat 7px mono above. Thumb at center (0% pitch shift). This is the BPM pitch fader — narrower than a channel fader.
- Left (wide):
Transport row: Horizontal flex below the platter section,
justify-content: flex-start; gap: 10px; padding-top: 12px. Threepush-buttoncomponents: CUE (default styling), SYNC (default styling), PLAY (.variant-glossyon the button body, larger at 48x36px, label▶ PLAY). PLAY button usescolor: var(--green-on)for the text/icon to distinguish it.Channel fader: A second
vertical-fadercomponent positioned at the far right of the platter row, labeledCHat 7px mono above. Thumb at 80% (channel is open, mixing in). Height: 100px (shorter than the pitch fader).Crossfader row: Full-width
crossfadercomponent at the bottom, spanning the full panel width. Labels:DECK A(left) andDECK B(right). Thumb centered at 50% — equal mix.margin-top: 12px; border-top: 1px solid var(--border-subtle); padding-top: 12px.Knob scale: To achieve 56x56px radial knobs without modifying the component source, wrap each knob in
<div style="transform: scale(0.56); transform-origin: center center; width: 56px; height: 56px; display: flex; align-items: center; justify-content: center;">.
Component Configuration
| Component | Position | Config |
|---|---|---|
| radial-knob (×4) | Top row | 56px effective size via scale, labels: GAIN HI MID LO |
| led-dots (×3) | Top row right | .green LOAD, .amber CUE, .amber SYNC |
| vu-meter | Top row far-right | 2 bars at 80px height, bars at 60% and 50% |
| rotary-encoder | Platter section | 150px via wrapper scale, outer ring border, label JOG WHEEL |
| vertical-fader (pitch) | Platter section right | 140px, thumb center, label PITCH |
| vertical-fader (channel) | Platter section far-right | 100px, thumb at 80%, label CH |
| push-button (×3) | Transport row | CUE / SYNC / PLAY — PLAY uses green text + larger size |
| crossfader | Bottom strip | Full width, thumb centered, labels DECK A / DECK B |
Constraints
- MUST render in landscape — the jog wheel and pitch fader require horizontal space to read correctly.
- Platter (rotary-encoder) MUST be visually larger than the knobs — the jog wheel is the dominant physical element of any DJ deck.
- Pitch fader and channel fader MUST be distinct in height — pitch fader is taller (140px) for fine BPM adjustment; channel fader is shorter (100px) for volume sweeps.
- MUST NOT place PLAY adjacent to CUE without SYNC between them — CUE→SYNC→PLAY is the Pioneer DDJ physical button order and prevents accidental playback triggering.
- Crossfader MUST span the full panel width — it is a shared element that conceptually bridges two decks; a short crossfader breaks the mixer metaphor.
- EQ knobs MUST appear in order GAIN → HI → MID → LO from left to right — reversing frequency order is a common mis-spec that DJs immediately notice.
Interactivity
- Radial knobs (GAIN, HI, MID, LO): Click and drag vertically to rotate — dragging up rotates clockwise, down counterclockwise. Indicator dot angle updates in real-time via
transform: rotate(Xdeg)on the wrapper div. - Jog wheel platter: Click and drag to rotate — rotates the conic-gradient disc visually. Drag left/right spins the wheel, updating a CSS
transform: rotateon the platter div. - PITCH fader: Click and drag vertically to move thumb — updates fill height. Center position = 0% pitch shift.
- Channel fader (CH): Drag vertically, updates fill height and thumb position.
- Crossfader: Drag horizontally — moves thumb left/right across the track.
- VU meter: CSS animation pulses the bar heights periodically to simulate live levels.
- Transport buttons: Click feedback — CUE highlights green briefly, SYNC highlights blue, PLAY toggles playing state (green glow).
Components Used
Hand it to your agent
This is a multi-component assembly spec — pass it to your coding agent along with the foundation specs to build the complete interface in any framework.
— —