Stems → a DAW session
doseedo_session_from_stemsBuild a native DAW PROJECT from stems: each stem on its own audio track from bar 1, optional MIDI tracks (the written parts) beside them, on your tempo (bpm or tempo_map) — Logic Pro (.logicx) or Ableton Live (.als), zipped. The deliverable after doseedo_render_score (pass from_job: its job_id and the stems, MIDI and tempo come from that job) or after any renders / separations you made (stems: [{name, audio_url}] — result links work as-is). After doseedo_mix add mix_job: each track at that mix's level and pan, the mix as a muted reference track. Async: job_id → doseedo_wait_task (~30–90 s) → file (pre-signed zip, curl -o session.zip , 24 h). Cancel: the plane has no stop for a running session build — it runs to completion (credits spent), the job ends as canceled and its output is discarded. Only a job still queued at the plane is refunded by the plane's own failure refund.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | Project tempo (default 120). | |
| name | No | Project name. | |
| stems | No | [{name, audio_url | audio_key, gain_db?, pan?, mute?, position_beats?}] — the audio tracks, in order. | |
| target | No | Which DAW (default logic). | |
| mix_job | No | MCP: a doseedo_mix job_id — every track takes that mix's level and pan, and the mix itself rides along as a muted reference track "Mix (doseedo)". | |
| from_job | No | MCP: a doseedo_render_score job_id — its stems, parts' MIDI and tempo are used (no other input needed). | |
| mixgraph | No | A mix document (doseedo_mix → mixgraph): each stem named in it takes its strip's gain_db and pan. The EQ, compression, reverb and rides are not written into the project. | |
| tempo_map | No | Tempo changes [{beat, bpm}] for the project. | |
| midi_tracks | No | Optional MIDI tracks: [{name, notes:[{pitch, start_beats, duration_beats, velocity?}]}]. | |
| time_signature | No | Meter (default 4/4). | |
| idempotency_key | No | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |