bravoh-daw
Parse DAW project files in pure Rust — no DAW installation required.
One library, four formats, one unified schema:
| Format | Extension | Under the hood |
|---|---|---|
| Ableton Live | .als |
gzipped XML |
| FL Studio | .flp |
binary event stream |
| Logic Pro | .logicx |
bundle + ProjectData binary |
| REAPER | .rpp |
plain-text chunk format |
Every parser returns the same ParsedIntelligence struct, so downstream code never cares which DAW a project came from.
Why
Project files are where the real story of a track lives — tempo, arrangement, plugin chains, sample choices, routing. But each DAW buries that story in a different proprietary format, and the existing tooling is scattered across single-format libraries in different languages. bravoh-daw gives you all four majors behind one function call, fast enough to run on every file-save event.
Extracted from BRAVOH Studio, where these parsers run in production on real artists' projects every day.
Quick start
CLI
Library
[]
= { = "https://github.com/ozzaii/bravoh-daw" }
// Auto-detect the format from the extension
let intel = parse?;
println!;
// Or parse as a specific format
use Daw;
let intel = parse_as?;
What gets extracted
| Field | Ableton Live | FL Studio | Logic Pro | REAPER |
|---|---|---|---|---|
| BPM | ✅ | ✅ | ✅ | ✅ |
| Time signature | — | ✅ | ✅ | ✅ |
| DAW version | ✅ | — | — | ✅ |
| Tracks (name + type) | ✅ | ✅ | ✅ | ✅ |
| Plugins (name + kind + count) | ✅ | ✅ | ✅ | ✅ |
| Samples | ✅ | — | ✅ | ✅ |
| MIDI stats (notes, pitch range) | ✅ | — | — | ✅ |
| Markers | ✅ | — | ✅ | ✅ |
| Mixer summary (track counts, sidechain) | ✅ | ✅ | ✅ | ✅ |
| Automated parameters | ✅ | — | — | ✅ |
| Duration + swing | — | — | ✅ | — |
Reliability doctrine
These formats are proprietary and partially reverse-engineered. The rule this crate lives by:
If a field can't be parsed dependably, it is omitted — never guessed.
That's why the matrix above has gaps. A missing field (None / empty vec) means "this DAW doesn't expose it reliably", not "we forgot". Logic Pro is the extreme case: its ProjectData binary is undocumented, so the parser extracts only what survives string-level analysis (plugin chains, samples, markers, routing) and refuses to report values that Logic itself computes unreliably.
Corrupt or truncated files return an error instead of panicking — every parser is fuzz-tested against garbage input in its test suite.
MSRV
Rust 1.87.
Contributing
Issues and PRs welcome — especially:
- Sample project files from different DAW versions (the more real-world fixtures, the better)
- Field coverage improvements for FL Studio and Logic Pro
- Support for more DAWs (Cubase
.cpr, Studio One.song, Bitwig.bwproject)
Run the gates before pushing — ./gates.sh (macOS/Linux) or .\gates.ps1 (Windows), which wrap:
&& &&
License
Part of BRAVOH open source, the OSS initiative from the team building BRAVOH — the AI operating system for music artists.