https://github.com/bitwig/dawproject Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} bitwig / dawproject Public * Notifications * Fork 7 * Star 341 Open exchange format for DAWs License MIT license 341 stars 7 forks Activity Star Notifications * Code * Issues 8 * Pull requests 1 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights bitwig/dawproject This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 5 branches 1 tag Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/b] Use Git or checkout with SVN using the web URL. [gh repo clone bitwig] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @kurasu kurasu Merge pull request #56 from bitwig/next ... 1651bf0 Sep 26, 2023 Merge pull request #56 from bitwig/next Updates for the 1.0 milestone 1651bf0 Git stats * 134 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows gradle/wrapper src test-data .gitignore .space.kts LICENSE MetaData.xsd Project.xsd README.md Reference.html build.gradle gradlew gradlew.bat pom.xml settings.gradle style.css View code [ ] DAWproject Motivation Status Goals Non-goals Format Specification Language Support Building the Library, Documentation and Tests Example project DAW Support README.md DAWproject Open exchange format for user data between Digital Audio Workstations (DAWs) Motivation The DAWproject format provides a (vendor-agnostic) way of transferring user data between different music applications (DAWs). Currently, there is no file-format which is purpose-built for this task. Standard MIDI files can represent note data, but it is often a lower-level representation (no ramps) of data than what the DAW uses internally, which forces consolidation on export. AAF only covers audio and doesn't have any concept of musical-time, which limits it to post-audio workflows . Most plug-ins do allow you to save presets to a shared location, but this has to be done for each instance. What most users end up doing is just exporting audio as stems. The aim of this project is to export all translatable project data (audio/note/automation/plug-in) along with the structure surrounding it into a single DAWproject file. The table below aims to explain the scope format from a music-production perspective and how it compares to other methods of data transfer. DAWproject Standard MIDI Advanced Authoring Files Format (AAF) Intended Music Production MIDI Video Post-Production Use Sequencing Time Format Beats and seconds can (seconds/ be combined Beats Seconds beats) Audio Events/Clips Audio Fades Events/Clips Audio Crossfades - Fades Amplitude Crossfades Pan Amplitude Time Warping Pan Transpose Notes Notes Notes - Note Expressions Tempo Time Signature MIDI Messages Tempo Volume Time Volume Automation Pan Signature Pan Mute MIDI Messages Video Related Sends SysEx Parameters Plug-in Parameters Messages Built-in Device Parameters Stores full plug-in Plug-ins state - - and automation of parameters Generic EQ Built-in Generic Compressor - - Devices Generic Gate Generic Limiter Clip Clips - - Launcher Scenes Status The format is version 1.0 and is stable. Goals * Package all user data of a project/song into a single file. + Audio timeline data + Note timeline data + Note expression data + Automation timeline data + Audio data (embedded or referenced) + Plug-in states (always embedded) * The format should be able to preserve as much user created data as feasible. * The format should be able to express the track and timeline structures of the exporting DAW as is, leaving it up to the importer to use this data and flatten it as needed. * Simple to implement * Built upon established open standards * Language agnostic, no special dependencies * Open & free Non-goals * Being the native file-format for a DAW * Optimal performance (like a binary format could provide) * Storing low-level MIDI events directly (but rather relying on higher level abstractions) * Storing non-session data (view settings, preferences) Format Specification * File Extension: .dawproject * Container: ZIP * Format: XML (project.xml, metadata.xml) * Text encoding: UTF-8 * The exporting DAW is free to choose the directory structure it wants for media and plug-in files. * DAWproject XML Reference * Project XML Schema * MetaData XML Schema Language Support DAWproject is based on plain XML/ZIP and can be used with any programming language that can parse those. The DOM of DAWproject is defined by a set of Java classes which have XML-related annotations and HTML-induced Javadoc comments. Those are used (via reflection) to generate XML Documentation and Schemas. Potentially, the same approach could be used to generate code for other languages (contributions welcome). Building the Library, Documentation and Tests Requires Java Runtime version 16 or later. To build (using Gradle): ./gradlew build Example project The exporting application is free to structure tracks and timelines in a way that fits its internal model. The choice is left to the importing application to either use the level of structure provided (if applicable) or to flatten/convert it to match its model. As an example, here's the project.xml of a simple file saved in Bitwig Studio 5.0 with one instrument track and one audio track. As the audio clips in Bitwig Studio are themselves a timeline of audio events, you will notice that there are two levels of elements, id25 representing the clip timeline on the arrangement, and id26 representing the audio events inside the clip. DAW Support DAWproject 1.0 is currently supported by the following DAWs * Bitwig Studio 5.0.9 * PreSonus Studio One 6.5 About Open exchange format for DAWs Resources Readme License MIT license Activity Stars 341 stars Watchers 18 watching Forks 7 forks Report repository Releases 1 tags Packages 0 No packages published Contributors 6 * * * * * * Languages * HTML 81.0% * Java 18.6% * Other 0.4% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.