FASTDAW is a JUCE-based mini-DAW designed for fast live workflows. It emphasizes real-time interaction through a loop cell performance view, a dedicated mixer, and an integrated piano roll for pattern editing.
- Loop Cells View: Trigger clips per track in real-time (Live-style session view).
- Mixer: Complete track controls including volume, mute/solo/record, and FX slots.
- Piano Roll View: Integrated pattern editor (Work in Progress, backend connected).
- Theme System: Built-in support for visual themes (e.g., Dark, Paper).
- Modular Architecture: Clear separation between the Audio Engine (backend) and UI components using JUCE.
Source/: Main C++ source code (Audio Engine, UI, Track, Mixer, Piano Roll).JUCE/: The JUCE framework and modules used by the project.build/&Builds/: Local directories for build artifacts (generated by CMake/Projucer).docs/: Project documentation and archives.docs/archive/sprints/: Historical sprint READMEs and logs.docs/archive/patches/: Feature-specific notes and patch details.docs/archive/logs/: Runtime logs and build artifacts (e.g., WAVs).docs/audit/: Audit reports, technical reviews, and plan documents.
PRD.md: Product Requirements Document and high-level project vision.
Note: Historical documentation and sprint logs have been moved to
docs/archive/to keep the repository root clean.
FASTDAW uses CMake for its build system.
- CMake (3.22 or higher)
- C++ Compiler (supporting C++17)
- JUCE dependencies (if on Linux, ensure ALSA/X11/Freetype dev packages are installed)
# 1. Create a build directory
mkdir build
cd build
# 2. Configure the project
cmake ..
# 3. Build the application
cmake --build .Alternatively, you can open the CMakeLists.txt in an IDE that supports CMake (VS Code, CLion, Visual Studio, etc.).
- Backend Status: The core Audio Engine, including the mixer and transport logic, is stable.
- Piano Roll: Integration is currently ongoing. The UI and backend share a common note type, but full editing features are still being refined.
- Documentation: Check
docs/archive/for detailed logs of previous sprints and specific feature implementations.
- JUCE-based DAW with AudioProcessorGraph architecture
- Single global graph for all tracks (Sprint 21)
- Cyberpunk 2077 inspired UI theme (yellow/cyan neon)
- Version: 0.11.0
~/fastdaw/Builds/build/FastDAW_artefacts/FastDAW.app
Il existe PLUSIEURS emplacements d'app qui peuvent causer confusion :
~/fastdaw/Builds/FastDAW_artefacts/Debug/FastDAW.app- ANCIEN, NE PAS UTILISER~/fastdaw/Builds/build/FastDAW_artefacts/FastDAW.app- CORRECT, UTILISER CELUI-CI
Si tes modifications ne semblent pas s'appliquer, tu lances probablement la mauvaise app !
cd ~/fastdaw/Builds/build && cmake --build . --target FastDAWUtilise TOUJOURS ces scripts :
~/Desktop/FastDAW.command- Lance l'app normalement~/Desktop/FastDAW-Debug.command- Lance avec logs dans Terminal
~/fastdaw/
├── Source/
│ ├── Main.cpp # Entry point
│ ├── AudioEngine/ # Backend audio
│ │ ├── AudioEngine.h/cpp # Main engine, device setup
│ │ ├── Mixer.h/cpp # Global AudioProcessorGraph
│ │ ├── TrackEngine.h/cpp # Per-track processor
│ │ ├── MasterBus.h/cpp # Master processing + metering
│ │ ├── MasterRecorder.h/cpp # Master recording to WAV
│ │ ├── FXChain.h/cpp # FX slot chain (4 slots)
│ │ ├── LoopCellManager.h/cpp # Loop cells backend (4 per track)
│ │ ├── LoopCellTypes.h # LoopCell struct, states, quantization
│ │ ├── MidiRouter.h/cpp # MIDI routing (SELECTED/ARMED/CHANNELMAP)
│ │ ├── MidiFilterProcessor.h/cpp # Per-track MIDI filtering
│ │ ├── SceneManager.h/cpp # Scene tags & launch
│ │ ├── PluginScanner.h/cpp # VST/AU plugin scanning
│ │ ├── SmartExportService.h/cpp # AI metadata generation (OpenAI)
│ │ └── Exporter.h/cpp # WAV export 48kHz/32-bit
│ └── UI/
│ ├── MainWindow.h/cpp # Main window + button rows
│ ├── Theme.h/cpp # ThemeManager, ColorTokens
│ ├── TrackPanel.h/cpp # Track view (instrument, FX, S/M/R)
│ ├── MasterSection.h/cpp # Master volume, VU, REC, MASTER/EXPORTS buttons
│ ├── PianoRollComponent.h/cpp # Piano roll + notes renderer
│ ├── LoopCellView.h/cpp # Loop cell UI (clock, countdown)
│ ├── LoopCellsPanel.h/cpp # Grid of loop cells per track
│ ├── VUMeterComponent.h/cpp # VU meter with peak hold
│ ├── TempoCircle.h/cpp # Rotating tempo indicator
│ └── UnifiedMasteringDashboard.h/cpp # Unified: Exports Library + Ozone 11 + AI
├── Builds/
│ └── build/ # CMake build directory
│ └── FastDAW_artefacts/
│ └── FastDAW.app # SEUL executable valide
└── claude.md # This file
CRITICAL: Always call setPlayConfigDetails(2, 2, sampleRate, bufferSize) BEFORE adding nodes to any graph.
This applies to: Mixer, FXChain, TrackEngine graphs.
- Use
std::atomic<float>for cross-thread parameters (metering, volume) - Use explicit
load()/store()withmemory_order_relaxed - Critical sections (
juce::ScopedLock) for graph rebuilds midiInputIndexisstd::atomic<int>for MIDI bus selection
- TrackEngine: instrument + 4 FX slots + volume/pan + metering
- 4 Loop cells per track (LoopCellManager)
- MIDI routing via MidiRouter (modes: SELECTED, ARMED, CHANNELMAP)
- MidiFilterProcessor per track for bus filtering
- States: Stopped -> Armed -> Recording -> Playing -> Waiting
- Quantization: Q16, Q32, Q64, Q128
- Lengths: 4, 8, 16, 32 bars
- Interactions: Click=trigger, Alt+Click=arm, Right-click=settings
- Scene tags (1-8) for grouped launch
- MASTERING button (yellow): Opens Unified Dashboard (Exports Library + Ozone 11 in one panel)
- REC button: Master recording to WAV (auto-save to ~/Music/FastDAW Exports/)
- Volume fader: -60 to +6 dBFS
Layout combines Export Library (left) + Mastering (right):
- Left: Scrollable list of exports from ~/Music/FastDAW Exports/
- Right: Large waveforms (150px), cover art (220px), AI metadata
- Click export in list -> auto-loads in mastering section
- LOAD OZONE 11 → Opens Ozone 11 Advanced in floating window (with working close button)
- AUTO MASTER → One-click: loads Ozone + processes + exports
- GENERATE AI → Moves file to named folder + generates metadata + cover art
- DELETE → Removes export folder entirely
- Volume slider with dB display (-60 to +6 dB)
- Window size: 1600x1050 for maximum visibility
- Instruments: Click on track banner (grey=empty, yellow=loaded)
- FX: Click on FX slot (4 per track)
- Plugin windows open at (200, 100) with close button visible
- Ozone 11 loads from
/Library/Audio/Plug-Ins/VST3/iZotope Ozone 11.vst3
| Sprint | Feature |
|---|---|
| 21 | Single global AudioProcessorGraph |
| 33-34 | Tempo slider, time signature selector |
| 44 | Dual input nodes (Audio/MIDI separation) |
| 45 | Fixed FXChain graph configuration |
| 46 | Pitch detection (Track 1 excluded) |
| 47 | HostPlayHead tempo sync for VST plugins |
| 48 | Piano Roll background image, brightness, contrast, staff lines |
| 49 | Follow MIDI mode for Piano Roll scroll |
| 50 | Smart Export (AI metadata via OpenAI) |
| 51 | Transport bar layout refactoring |
| 52 | Cyberpunk angular buttons |
| 53 | Tempo circle with beat display |
| 54 | Clock sync fix for loop cells |
| 55 | MIDI bus thread-safety fix |
| 56 | MasteringDashboard + ExportsLibrary (2 buttons) |
| 57 | Unified Mastering Dashboard (combined Export Library + Ozone) |
| 58 | DELETE button for exports, file organization (move not copy) |
| 59 | AUTO MASTER button (auto-load Ozone + process) |
| 60 | Dashboard UX overhaul: larger fonts (+2pt), bigger waveforms (150px), bigger cover art, window 1600x1050, Ozone close button fix |
- Audio Output: Loopback Audio (for testing)
- Audio Input: Apollo X4 UAD
- MIDI Input: CASIO USB-MIDI
- Auto-save:
~/Library/Application Support/FastDAW/default_session.fdaw - Templates:
~/Library/Application Support/FastDAW/Templates/ - Exports:
~/Music/FastDAW Exports/
See: ~//.claude/plans/graceful-napping-pumpkin.md
Remaining sprints:
- Sprint A: Track Audio type (vs VST instrument)
- Sprint B: Apollo X4 audio input routing
- Sprint C: SoundCloud direct upload integration