PUDGE/UI v0.2.1 2025-07
  • + 5 new hardware compositions: Walkman Deck (Sony WM-D6C), Game Boy (Nintendo DMG-01), DJ Controller Deck (Pioneer DDJ), Synthesizer Panel (Roland SH-101 / Moog Minimoog)
  • + Changelog page at /changelog with full version history
  • + Animated NEW badge on recently added specs and compositions
  • + LCD-style version update banner with per-version dismiss
composition brushed-metalrubber

DJ Controller Deck

GAIN
HI
MID
LO
LOAD
CUE
SYNC
JOG WHEEL
PITCH
CH
DECK A DECK B

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

  1. Container: Use .chassis-panel with .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.

  2. Top knob row: Horizontal flex row, align-items: flex-end; gap: 12px. Four radial-knob components 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.

  3. Status LEDs: Three led-dots stacked vertically, right side of the top row. Spacing gap: 4px. Colors and labels: .green LOAD (track is loaded), .amber CUE (cue point set), .amber SYNC (BPM-synced to other deck). Labels at 6px mono, right-aligned.

  4. VU meter: vu-meter component to the right of LED cluster. 2 bars, height 80px. Bars animate to show current track level — show bars at 60% and 50% to simulate typical track headroom with one channel peaking.

  5. Platter section: Horizontal flex row, align-items: center; gap: 16px. Contains:

    • Left (wide): rotary-encoder component, 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 applying width: 150px; height: 150px and scaling the internal gradients proportionally via a wrapper transform: scale(1.5). Surround with a thin border: 2px solid var(--border-mid); border-radius: 50% outer ring labeled JOG WHEEL at 7px mono centered below.
    • Right (narrow): vertical-fader at default 140px height, labeled PITCH at 7px mono above. Thumb at center (0% pitch shift). This is the BPM pitch fader — narrower than a channel fader.
  6. Transport row: Horizontal flex below the platter section, justify-content: flex-start; gap: 10px; padding-top: 12px. Three push-button components: CUE (default styling), SYNC (default styling), PLAY (.variant-glossy on the button body, larger at 48x36px, label ▶ PLAY). PLAY button uses color: var(--green-on) for the text/icon to distinguish it.

  7. Channel fader: A second vertical-fader component positioned at the far right of the platter row, labeled CH at 7px mono above. Thumb at 80% (channel is open, mixing in). Height: 100px (shorter than the pitch fader).

  8. Crossfader row: Full-width crossfader component at the bottom, spanning the full panel width. Labels: DECK A (left) and DECK B (right). Thumb centered at 50% — equal mix. margin-top: 12px; border-top: 1px solid var(--border-subtle); padding-top: 12px.

  9. 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

  1. MUST render in landscape — the jog wheel and pitch fader require horizontal space to read correctly.
  2. Platter (rotary-encoder) MUST be visually larger than the knobs — the jog wheel is the dominant physical element of any DJ deck.
  3. 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.
  4. 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.
  5. Crossfader MUST span the full panel width — it is a shared element that conceptually bridges two decks; a short crossfader breaks the mixer metaphor.
  6. 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

  1. 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.
  2. Jog wheel platter: Click and drag to rotate — rotates the conic-gradient disc visually. Drag left/right spins the wheel, updating a CSS transform: rotate on the platter div.
  3. PITCH fader: Click and drag vertically to move thumb — updates fill height. Center position = 0% pitch shift.
  4. Channel fader (CH): Drag vertically, updates fill height and thumb position.
  5. Crossfader: Drag horizontally — moves thumb left/right across the track.
  6. VU meter: CSS animation pulses the bar heights periodically to simulate live levels.
  7. 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.

—
—

Compositions show how components assemble. Give the full spec to your agent.

Pudge