Files
ag-beats/requirements.md
2025-12-20 16:55:49 +02:00

3.5 KiB

AG Beats - Requirements Specification

AG Beats is a web-based, collaborative drum machine and bass sequencer that allowing multiple users to compose music together in real-time.

1. Functional Requirements

1.1 Step Sequencer

  • Instruments: Support for 5 drum tracks (Kick, Snare, Hi-Hat, Open Hat, Ride).
  • Step Configuration:
    • Adjustable sequence length from 4 to 64 steps (increments of 4).
    • Default length: 16 steps.
  • Grid Interaction:
    • Toggle notes on/off for each instrument per step.
    • Support for "drag-to-toggle" to quickly fill or clear steps in a row.
  • Bass Line:
    • 2-octave bass sequencer (C2 to B3).
    • Selectable notes per step (supports polyphony).
    • Visual distinction between natural and sharp notes.

1.2 Audio Engine

  • Synthesis: Real-time sound generation using the Web Audio API.
    • Integrated synthesizers for Kick, Snare, and Hi-Hats.
    • Sine-wave based bass synthesizer.
  • Sample Support: Capability to load and play audio samples for instruments.
  • Playback Controls:
    • Global Play/Stop functionality.
    • Tempo (BPM) control range: 40 to 240 BPM (Default: 76 BPM).
    • Real-time step highlighting during playback.
  • Mixer:
    • Individual "Mute" toggle for each drum track.
    • Master volume control for the Drum section.
    • Master volume control for the Bass section.
  • Interactive Preview: Trigger individual drum sounds or bass notes by clicking their respective labels (outside of playback).

1.3 Real-time Collaboration

  • Presence:
    • Real-time visibility of other connected users' cursors with unique colors.
    • Synchronization of connected user list.
  • State Synchronization:
    • Instant broadcasting of all grid changes (drums and bass).
    • Synchronization of playback state (start/stop), tempo, steps, mutes, and volumes.
    • Shared "Clear" and "Import" actions across the session.
  • Stability: Support for "Synchronizing" state when a new user joins an existing session.

1.4 Session & Data Management

  • Named Sessions: Support for multiple concurrent sessions identified by a sessionId URL parameter.
  • Session Sharing: One-click functionality to copy the current session URL to the clipboard.
  • Persistence: Session state is maintained in-memory on the server for the duration of the session.
  • Import/Export:
    • Export current pattern as a .json file.
    • Import patterns from previously exported .json files.

2. Technical Stack

  • Frontend: React 19, TypeScript, Tailwind CSS (via CDN).
  • Backend: Node.js with Express and WebSocket (ws).
  • Communication: WebSockets for real-time state synchronization and cursor presence.
  • Audio: Web Audio API for low-latency synthesis and playback.

3. User Interface & Experience

  • Responsive Design: Mobile-friendly layout with horizontal scrolling for large sequences.
  • Modern Aesthetics: Sleek, slate-based color palette with vibrant accents (Orange for drums, Purple for bass).
  • Interactive Feedback:
    • Hover effects on sequencer cells.
    • Confirmation modals for destructive actions (e.g., Clear Pattern).
    • Scroll-wheel support for tempo adjustment.
    • Sticky labels for easy navigation in large grids.

4. Constraints & Limits

  • Tempo Range: 40 - 240 BPM.
  • Sequence Steps: 4 - 64 steps (must be multiple of 4).
  • Instruments: Fixed set of 5 drum instruments.
  • Storage: State is currently ephemeral (in-memory) and lost if the server restarts or the last user leaves the session.