From e41bb6b588e33416d9181e263ff9b2d4ae2958f5 Mon Sep 17 00:00:00 2001 From: AG Date: Sat, 20 Dec 2025 16:55:49 +0200 Subject: [PATCH] Requirements list created --- requirements.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 requirements.md diff --git a/requirements.md b/requirements.md new file mode 100644 index 0000000..7f22602 --- /dev/null +++ b/requirements.md @@ -0,0 +1,72 @@ +# 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.