Export (app/export/)
Audio export functionality — stems, master bounce, and sheet music.
Files
| File | Purpose |
|---|---|
ExportManager.cpp | All export methods: exportStems(), exportMaster(), exportSheetMusic(). These are SongbirdEditor member functions defined in a separate file for organization. |
Export Operations
Stems (exportStems)
Renders each track individually as a WAV file. Uses Tracktion’s offline render with track solo/mute automation:
- Creates a background
RenderJobthread - Iterates tracks, solos one at a time with return FX optionally included
- Renders to
exports/<projectName>_stems/with progress updates to the WebView
Master (exportMaster)
Bounces the full mix to a single stereo WAV:
- Creates a
MasterRenderJobthread - Renders all tracks through the master bus
- Outputs to
exports/<projectName>_master.wav
Sheet Music (exportSheetMusic)
Converts the current .bird file parse result to sheet music JSON and sends it to the React UI for rendering via the SheetMusicView panel.
Design Principles
- Background threads — All audio renders run on dedicated
juce::Threadinstances to avoid blocking the message thread. Progress is pushed to React viacallAsync+emitEventIfBrowserIsVisible. - Tracktion render API — Uses
tracktion::Rendererfor bit-perfect offline bouncing at the project’s sample rate. - Track state preservation — Solo/mute state is saved and restored after stem export to avoid side effects.