Skip to content

infinitycloud-ch/amadeus-fastdaw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FASTDAW

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.

Key Features

  • 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.

Repository Layout

  • 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.

Build & Run

FASTDAW uses CMake for its build system.

Prerequisites

  • CMake (3.22 or higher)
  • C++ Compiler (supporting C++17)
  • JUCE dependencies (if on Linux, ensure ALSA/X11/Freetype dev packages are installed)

Building with CMake

# 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.).

Development Notes

  • 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.

FastDAW - Project Guidelines

Architecture Overview

  • 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

ATTENTION - Build & Launch

Chemin UNIQUE pour lancer l'app (après build)

~/fastdaw/Builds/build/FastDAW_artefacts/FastDAW.app

PIEGE FREQUENT

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 !

Build Command

cd ~/fastdaw/Builds/build && cmake --build . --target FastDAW

Scripts de lancement standardises

Utilise TOUJOURS ces scripts :

  • ~/Desktop/FastDAW.command - Lance l'app normalement
  • ~/Desktop/FastDAW-Debug.command - Lance avec logs dans Terminal

Project Structure

~/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

Key Patterns

AudioProcessorGraph Configuration

CRITICAL: Always call setPlayConfigDetails(2, 2, sampleRate, bufferSize) BEFORE adding nodes to any graph. This applies to: Mixer, FXChain, TrackEngine graphs.

Thread Safety

  • Use std::atomic<float> for cross-thread parameters (metering, volume)
  • Use explicit load()/store() with memory_order_relaxed
  • Critical sections (juce::ScopedLock) for graph rebuilds
  • midiInputIndex is std::atomic<int> for MIDI bus selection

Track System

  • 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

Loop Cells

  • 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

Master Section

  • 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

Unified Mastering Dashboard (Sprint 57-60)

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

Plugin Loading

  • 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 History

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

Hardware Configuration

  • Audio Output: Loopback Audio (for testing)
  • Audio Input: Apollo X4 UAD
  • MIDI Input: CASIO USB-MIDI

Session Persistence

  • Auto-save: ~/Library/Application Support/FastDAW/default_session.fdaw
  • Templates: ~/Library/Application Support/FastDAW/Templates/
  • Exports: ~/Music/FastDAW Exports/

Evolution Roadmap

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

About

Amadeus FastDAW — JUCE C++ DAW with 6-track mixer, piano roll, loop cells, AI mastering, and Cyberpunk UI. 60 sprints, 35K lines.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages