Gabe's Audio Workstation is an agent-native, hierarchical DAW built around transparent JSON projects, immutable audio assets, recursive compositions, and ordered first-party processing stacks.
GAW can convert a materialized audio asset into editable MIDI event data with Spotify Basic Pitch. Install the Basic Pitch CLI in the environment used to launch GAW:
uv tool install --python 3.11 --with 'setuptools<81' basic-pitch==0.4.0The setuptools pin works around Basic Pitch 0.4.0's use of the deprecated pkg_resources API.
Right-click an audio asset and choose CONVERT TO MIDI. GAW runs transcription in the background
and adds <source> (MIDI) to the Assets sidebar without changing the source audio. If the executable
is not on PATH, set GAW_BASIC_PITCH to its path before launching GAW.
Drag the resulting MIDI asset onto an event track to create a piano-roll clip. Dropping it elsewhere
creates a new event track with an empty sampler, ready for you to assign sounds. To export the
canonical notes as a Standard MIDI File, use
gaw midi-export <project> <event-data-id> <destination.mid>; the stable ID is shown in the asset
inspector.
Basic Pitch's CSV represents pitch bends per detected note, while GAW's canonical event stream uses one track-wide bend lane. GAW currently imports note pitch, timing, and velocity and omits those per-note bends rather than merging overlapping bends incorrectly.
GAW can split a materialized audio asset into the eight targets provided by
X-LANCE MSR: vocals, guitars, keyboards, bass,
synthesizers, drums, percussions, and orchestral elements. Select an audio asset and choose
STEM SPLITTER… in its inspector or context menu. The generated assets are added atomically under
SPLIT - <original file name> and retain immutable, content-addressed WAV storage.
The bundled integration currently supports Linux. It prefers an NVIDIA CUDA GPU, uses a dedicated
AMD ROCm runtime for gfx1010 cards such as the Radeon RX 5700 XT, and otherwise falls back to CPU
inference. CPU output uses the same model weights but can take roughly 40–50 minutes for all eight
stems from a 100-second clip on a Ryzen 7 3700X. On the first stem split, GAW uses uv to create a
pinned Python 3.12 runtime in its own application-data directory and reuses it across projects. Install
uv once, or set GAW_UV to its
executable; no project-specific Python environment is needed. The initial setup downloads several
gigabytes and is shown as INSTALLING X-LANCE… in the asset sidebar.
The bundled adapter and hashed dependency lock pin the upstream code, Python packages, and checkpoint
revisions. On the first split it clones
the pinned X-LANCE source and downloads only the selected checkpoints from
the official checkpoint repository. A complete
eight-stem setup uses about 4.3 GB of model weights. Set GAW_XLANCE_CACHE to relocate the cache,
GAW_XLANCE_REPO to use an existing checkout, or GAW_XLANCE to replace the bundled adapter with a
compatible executable. Long recordings use a project-local staging area under .gaw/xlance; set
GAW_XLANCE_PYTHON to use an existing Python environment, GAW_XLANCE_RUNTIME_ROOT to relocate the
managed runtime, or GAW_XLANCE_TIMEOUT_HOURS to change the default six-hour job limit.
Set GAW_XLANCE_DEVICE to cpu, cuda, or rocm to override automatic selection, and
GAW_XLANCE_CPU_THREADS to tune CPU inference concurrency.
The product source of truth is design.md.
gaw-core: canonical domain model, IDs, time, commands, and validationgaw-project: project storage, media import, recovery journal, and derived cachegaw-dsp: instruments, effects, analyzers, and render-safe processor contractsgaw-stretch: safe single-owner Signalsmith Stretch backendgaw-audio: render graph, transport, scheduling, device I/O, and background renderinggaw-app: nativeeguiapplicationgaw-cli: structured agent and developer command-line interface
cargo test --workspace
cargo run -p gaw-cli -- --helpBefore constructing an edit, inspect the machine-readable Draft 2020-12 schemas:
gaw schema transaction
gaw schema processorProcessor-bearing schemas include a top-level x-gaw-processor-catalog extension. It is the
authoritative catalog for defaults, exact numeric and unit-specific bounds, array limits, enum
choices, automation support, indexed band/step paths, and cross-field constraints to satisfy before
gaw apply.
Create and open a persistent project:
cargo run -p gaw-cli -- create ./projects/my-song --name "My Song" --bpm 120 --sample-rate 48000
cargo run -p gaw-app -- ./projects/my-songThe app recovers a pending crash journal by default. Recovery can also be inspected or replayed explicitly before startup, and startup can instead discard or reject pending recovery:
cargo run -p gaw-cli -- recover ./projects/my-song --dry-run
cargo run -p gaw-cli -- recover ./projects/my-song
cargo run -p gaw-app -- ./projects/my-song --recovery recover
cargo run -p gaw-app -- ./projects/my-song --recovery discard
cargo run -p gaw-app -- ./projects/my-song --recovery abortRun the bundled non-persistent UI fixture with:
cargo run -p gaw-app -- --demo