Soundless Beatbox

A playful on-screen drum pad sequencer that lets users create simple rhythms using only visual and haptic-style feedback (flashing pads, animated waveforms, and optional click sounds). Users can place steps on a 16-step grid, adjust tempo and swing, and swap between a few “kits” made from geometric animations; patterns can be saved, duplicated, and exported/imported as JSON via localStorage. The UI is split cleanly into components: transport controls, step grid, kit/pad palette, pattern library, and a minimal “performance” mode that hides everything except the pads and big play/stop.

To Do30
Scaffold project

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i @tailwindcss/vite && npm i shadcn@latest && npx shadcn@latest init

by system

Add Tailwind setup

Configure Tailwind content/theme and add Tailwind directives to src/index.css.

by system

Add shadcn utilities

Add src/lib/utils.ts with cn() helper and ensure shadcn paths/aliases compile.

by system

Create app layout

Build the base split UI shell in src/App.tsx with regions for controls, grid, kits, and library.

by system

Define core types

Create src/types/sequencer.ts with Pattern, Step, Kit, and TransportState types.

by system

Add default kits

Create src/data/kits.ts exporting a few geometric-animation kit definitions.

by system

Create pattern helpers

Create src/lib/pattern.ts with createEmptyPattern(), clonePattern(), and sanitizePattern().

by system

Create storage helpers

Create src/lib/storage.ts for localStorage save/load/export/import JSON utilities.

by system

Add audio click utility

Create src/lib/click.ts that generates an optional click sound using WebAudio (no assets).

by system

Create sequencer clock

Create src/lib/clock.ts implementing a 16-step scheduler with tempo and swing.

by system

Add sequencer context

Create src/state/SequencerContext.tsx to hold pattern, kit, transport, and settings state.

by system

Wire app provider

Wrap the app in SequencerProvider in src/main.tsx.

by system

Transport controls UI

Create src/components/TransportControls.tsx with play/stop and current step indicator.

by system

Tempo swing controls

Create src/components/TempoSwingControls.tsx with sliders/inputs for BPM and swing.

by system

Sound toggle control

Create src/components/SoundToggle.tsx for enabling/disabling click sounds.

by system

Performance mode toggle

Create src/components/PerformanceModeToggle.tsx to enter/exit minimal performance mode.

by system

Step grid UI

Create src/components/StepGrid.tsx rendering a 16-step by pad-row grid with Tailwind styling.

by system

Step cell component

Create src/components/StepCell.tsx handling click/tap to toggle a single step.

by system

Grid playback highlight

Update src/components/StepGrid.tsx to visually highlight the active step during playback.

by system

Pad animation view

Create src/components/PadVisual.tsx that renders kit-specific geometric animations on trigger.

by system

Kit palette UI

Create src/components/KitPalette.tsx to list available kits and select the active kit.

by system

Pad palette preview

Create src/components/PadPalette.tsx showing pads in the current kit with preview triggers.

by system

Playback triggers visuals

Connect clock ticks to trigger PadVisual flashes/animations when steps are active.

by system

Pattern library panel

Create src/components/PatternLibrary.tsx listing saved patterns with select/delete actions.

by system

Save current pattern

Create src/components/PatternSaveButton.tsx to save/update the current pattern to localStorage.

by system

Duplicate pattern action

Create src/components/PatternDuplicateButton.tsx to clone the current pattern into the library.

by system

Export import JSON

Create src/components/PatternImportExportDialog.tsx for JSON export/import via textarea.

by system

Keyboard shortcuts

Create src/lib/shortcuts.ts and wire in App to handle space play/stop and arrows step nav.

by system

Performance mode page

Create src/components/PerformanceModeView.tsx showing only big pads and play/stop.

by system

Polish and responsive

Refine Tailwind styles across existing components for mobile/desktop responsiveness in place.

by system

In Progress0
In Review0
Done0