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 defaultmetal

Synthesizer Panel

Synthesizer Model SY-1  ·  Analog Voice
VCO
WAVE
◢
OCT
-1
0
+1
VCF
CUTOFF
RESO
ENV MOD
KBD SYNC
SYNC
LFO SYNC
SYNC
ENVELOPE
A
D
S
R
VCA
LVL
MIDI
PWR
GATE

Description

An analog monophonic synthesizer control panel in the tradition of the Roland SH-101 and Moog Minimoog Model D. Three functional sections — VCO (oscillator), VCF (filter), and ENVELOPE — are laid out left-to-right as on physical hardware. A VCA output level and LFO sync control sit at the far right. Panel color is the Roland SH-101's characteristic warm gray with amber indicators.

Reference Devices

Roland SH-101 (1982), Moog Minimoog Model D (1970/2016 reissue), Korg MS-20 (1978), Arturia Minibrute 2 (2018).

Layout

┌─ VCO ─────────────────┐ ┌─ VCF ─────────────────┐ ┌─ ENV ──────────────────────┐
│  WAVE       OCT        │ │ CUTOFF   RESO   ENV MOD │ │  A ──●─  D ──●─  S ──●─  │
│  ╔════════╗ [-1·0·+1] │ │  (○)      (○)     (○)   │ │                R ──●─     │
│  ║  ◢  ◻  ║            │ │                          │ └────────────────────────────┘
│  ║  ∿  ⊓  ║            │ │  KBD ┌═══┐  LFO         │
│  ╚════════╝            │ │ SYNC │OFF│ SYNC          │ ┌─ VCA ───┐  ● MIDI
│                        │ │      └═══┘  [──]         │ │ LVL ┃━┃ │  ● PWR
└────────────────────────┘ └───────────────────────────┘ └─────────┘  ● GATE

Assembly Rules

  1. Container: Use .panel with default material. Landscape: min-width: 580px. padding: 16px 20px. background: linear-gradient(180deg, var(--bg-raised), var(--bg-surface)). The SH-101's face is a warm off-white in the original, but for dark-mode-first pudge-ui, use the standard dark surface. A thin border-top: 3px solid var(--amber) at the very top edge evokes the Roland brand stripe.

  2. Section layout: Three side-by-side chassis-panel containers with display: flex; gap: 16px. Each section has a .cpanel-header with title in 9px mono uppercase. Sections: VCO, VCF, and ENVELOPE.

  3. VCO section (chassis-panel left):

    • Waveform selector: mode-dial component. The SH-101 has 4 waveforms: SAW (◢), SQUARE (□), SINE (∿), PULSE (⊓). Set mode-dial-label to cycle: ◢ (SAW) / □ (SQR) / ∿ (SIN) / ⊓ (PLS). Default selected: ◢ SAW. Size: 96px effective (the mode-dial default is 120px; apply transform: scale(0.8) to reduce to 96x96px). Label WAVE at 7px mono above.
    • Octave selector: segmented-control below the dial. Three segments: -1 / 0 / +1. Active: 0. Label OCT at 7px mono above. margin-top: 12px.
  4. VCF section (chassis-panel center):

    • Three radial-knob components in a horizontal row: CUTOFF (largest functional role, standard 80px), RESO (80px), ENV MOD (80px). Labels at 7px mono below: CUTOFF / RESO / ENV MOD.
    • KBD SYNC toggle: toggle-switch in the OFF position, label KBD above and SYNC below at 7px mono. Toggles keyboard tracking of the filter.
    • LFO SYNC toggle: A second toggle-switch beside the KBD SYNC, label LFO above and SYNC below.
    • Both toggles sit in a horizontal row below the knobs, gap: 16px; margin-top: 10px.
  5. ENVELOPE section (chassis-panel right):

    • Four range-fader components in a horizontal row: A (Attack), D (Decay), S (Sustain), R (Release). Each fader width: 36px (compact — set width: 36px on the .fader-h-wrap, which compresses the track). Labels at 7px mono above: A / D / S / R. Default positions: A=20% (fast attack), D=40% (medium decay), S=70% (sustained hold), R=30% (moderate release).
    • The SH-101 ADSR uses vertical faders, not horizontal sliders. Render these as vertical by rotating the range-fader: wrap each in a container with transform: rotate(-90deg); transform-origin: center. Container height becomes the original width. This produces the characteristic vertical ADSR sliders of analog synthesizers.
  6. VCA + status section: A narrow fourth chassis-panel to the right of ENVELOPE. Contains:

    • vertical-fader labeled LVL at 7px mono above. Thumb at 80% (output level nearly open). Height: 80px.
    • Three led-dots stacked vertically to the right of the fader: .blue MIDI IN, .green PWR, .amber GATE. Labels at 6px mono.
  7. ADSR vertical variant note: Because range-fader is natively horizontal, wrapping in transform: rotate(-90deg) requires careful sizing. The fader track becomes the vertical axis. Set each range-fader track to width: 80px (this becomes the vertical height after rotation). The container div must be width: 16px; height: 80px post-rotation. Position: display: flex; align-items: center; justify-content: center. If the fader track appears horizontal after applying the rotation, add explicit height: 80px; width: 16px to the wrapper div and verify that transform-origin: center is set.

  8. Section panel spacing: gap: 12px between all chassis-panel sections. Each section background: var(--bg-raised) with border: 1px solid var(--border-subtle).

Component Configuration

Component Section Config
mode-dial VCO 4 modes: SAW SQR SIN PLS, default SAW, scale 0.8
segmented-control VCO 3 segments: -1 / 0 / +1, active: 0, label: OCT
radial-knob (×3) VCF CUTOFF / RESO / ENV MOD, 80px, labels at 7px mono
toggle-switch (×2) VCF KBD SYNC (OFF) + LFO SYNC (OFF), side-by-side
range-fader (×4) ENVELOPE A D S R, rotated vertical, width 80px (height post-rotate)
vertical-fader VCA LVL, 80px height, thumb at 80%
led-dots (×3) VCA .blue MIDI, .green PWR, .amber GATE

Constraints

  1. MUST render in landscape and be wider than it is tall — a portrait synthesizer panel is physically impossible; the ADSR section alone requires horizontal space.
  2. ADSR sliders MUST be rendered vertically (rotated range-fader) — horizontal ADSR is not how any hardware synthesizer is built and immediately reads as wrong to musicians.
  3. MUST render sections in order: VCO → VCF → ENVELOPE → VCA — this is the signal flow (oscillator → filter → amp) which is universal across all analog synthesizers. Reversing it is a non-starter.
  4. VCF cutoff knob MUST be visually prominent — on real hardware it is the largest or most central control; demoting it reads as a misunderstanding of synthesis.
  5. MUST NOT combine ADSR into a single stepper or selector — the four independent ADSR controls are the mechanical identity of envelope shaping; collapsing them defeats the hardware metaphor.
  6. Waveform selector (mode-dial) MUST show waveform symbols, not names — SAW / SQR / SIN / PLS as symbols (◢ □ ∿ ⊓) match the engravings on physical hardware panels.

Interactivity

  1. Mode dial (WAVE): Click to cycle through the 4 waveforms: SAW (◢) → SQR (□) → SIN (∿) → PLS (⊓). The center symbol updates and the notch rotates to indicate the current selection (0°, 90°, 180°, 270°).
  2. OCT segmented control: Click any segment (-1 / 0 / +1) to activate it.
  3. VCF radial knobs (CUTOFF, RESO, ENV MOD): Drag vertically to rotate — indicator dot angle updates in real-time. Range: −135° to +135°.
  4. KBD SYNC / LFO SYNC toggles: Click to toggle on/off. When ON, the toggle thumb slides and turns amber.
  5. ADSR faders: Drag vertically to move — updates fill height and thumb position for each of A, D, S, R.
  6. VCA LVL fader: Drag vertically to set output level.
  7. Gate LED: Pulses amber when VCA is above 50% — use a CSS animation conditioned on the fader position.

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