Lab

dawproject

An arrangement to and from DAWproject, the open exchange format other DAWs read and write: tracks, returns and the main track with their mix and sends, audio clips with fades, loop and warp, MIDI clips, volume and pan automation, locators, tempo and time signatures, and the equalizer, compressor, gate and limiter; a report says what was left out. With the zip archives it is packed in.

pnpm dlx shadcn@latest add @audio-ui/dawproject
import { writeDawproject, exportDawproject, readDawproject, importDawproject } from "@/lib/dawproject";
Fileslib/dawproject.ts, lib/zip.ts
Depends onarrangement, use-arrangement, compressor-device, equalizer-device, gate-device, limiter-device
npm@audio-ui/core, @audio-ui/engine, fflate
Used byNothing
ExportKindWhat it is
DawprojectRecordinginterfaceA recording an export packs: its file's name in the archive's audio/ folder, its length in seconds, its channels and rate.
ImportedRecordinginterfaceA recording an import brings: the id its clips name it by, a name, and its file's bytes.
writeDawprojectfunctionThe project's project.xml and metadata.xml, and what they leave out.
exportDawprojectfunctionA whole .dawproject file: the documents and the audio of every recording a clip plays, read with bytesOf.
readDawprojectfunctionA project.xml read into an arrangement: its tracks, return tracks and main track, its clips and automation, its locators, tempo and time signatures; the recordings its audio clips play, by the path of their file in the archive; and what it left out.
importDawprojectfunctionA whole .dawproject file read: the arrangement, the bytes of each recording, and what was left out or is missing.

Usage

The open DAWproject exchange format (a zip of XML and audio): an arrangement out to a .dawproject file other DAWs open, and one of theirs in, with a report of what was left out.

import { exportDawproject, importDawproject } from "@/lib/dawproject";

const { file, report } = await exportDawproject(doc, recordings, (id) => bytesOfRecording(id));
const opened = await importDawproject(droppedFile); // { doc, recordings, report }

It carries the tracks, mix, sends, clips, notes, volume and pan automation, locators, tempo and time signatures, and the equalizer, compressor, gate and limiter with their settings. zip (installed with it, on fflate) reads and writes the archive.

Built by Ouest Labs, the source code is available on GitHub.
RSS