Preparing and exporting stems

File formats, naming, alignment and headroom rules for stems that spatialize cleanly.

This page is the reference for exporting stems from a digital audio workstation (DAW) so that they spatialize cleanly in Spatial9. It covers the file format, sample rate and bit depth, naming, alignment, headroom and effects rules, the export path in common DAWs, the quality checks to run before upload, and how stems map to the Spatial9 MCP server, A2A agent and REST API.

It is written for producers, mix engineers, artists and developers who deliver stems to Spatial9 or to anyone else who will rebuild the song in 3D. For help deciding whether to start from stems or from a stereo master, see Stereo vs stems.

Definitions

A stem is a group of related sounds exported as one audio file, for example all drums, all lead vocals or all keys. A multitrack keeps every recorded track separate. For immersive work, stems are usually the practical middle ground: each stem becomes a separate object that Spatial9 can place and move, while the number of files stays manageable.

A reference mix is the stereo mix of the same song, exported with the same start point as the stems. It is used to check that the stems sum correctly and, in the REST API, to keep the spatial version in sync with the original mix.

Choosing a stem set

The number of stems determines how many independent objects are available for placement. Four stems (vocals, drums, bass and other) are enough for a convincing immersive mix. Six or more give more objects to place and a more detailed 3D result.

StemContentsNotes
Lead vocalMain vocal lineUsually anchored in front
Backing vocalsHarmonies, doubles, choirsOften lifted toward the height layer
DrumsFull kit, or kick, snare and cymbals separatelySplit the kit when drums are central to the genre
BassBass guitar, synth bass, subUsually anchored
Harmony instrumentsGuitars, keys, padsIdeally one stem per instrument family
EffectsRisers, FX, ambience, ear candyCandidates for movement
FX returnsPrinted reverb and delay returnsOptional, see effects rules below

When you submit stems through the MCP server, create_from_stems accepts 2 to 16 stems. Each stem carries a name and an instrument, and the instrument values are vocals, drums, bass, guitar, piano, keys, synth, strings, brass and other. Plan your stem set so that each file maps clearly to one of these values.

Export parameters

Apply the following settings to every stem in the delivery. Use the same values for the reference mix.

ParameterSettingReason
File formatWAV or AIFF, uncompressedLossy formats bake compression artifacts into every stem
Bit depth24-bit, or 32-bit float if the receiver requests itPreserves detail and headroom
Sample rateThe session rateAvoids resampling between stems
Maximum sample rate96 kHzHighest rate Spatial9 accepts
NormalizeOffNormalizing changes each stem's level, so the stems no longer sum to the mix
DitherOff at 24-bit or 32-bit floatDither is only for reducing to 16-bit
Master bus processingBypassedBus compression, limiting and clipping react to the whole mix
Channel formatMono for point sources, stereo for wide sourcesSee the channel rules below

Spatial9 accepts WAV, MP3, FLAC and AIFF as input. MP3 is accepted but not recommended for stems, because its artifacts are present in every file and add to any separation artifacts. For best results, use 24-bit WAV at 48 kHz or higher. A sample rate of 48 kHz is the norm for video and most immersive work, and 44.1 kHz is suitable for music-only projects. Use one sample rate and one bit depth for every stem in the session, for example 48 kHz and 24-bit.

Channel rules

  • Export point sources such as lead vocal, kick and bass as mono.
  • Keep genuinely wide sources, such as stereo pads or room microphones, as stereo.

Effects rules

  • Print insert effects that are part of the sound, such as amp simulation, saturation or character EQ.
  • For reverb and delay sends, choose one approach per delivery: print the sends into each stem, or export them as separate FX return stems.
  • State in the notes file which approach you used.
  • Prefer drier stems when you are unsure. A reverb printed into a stem limits how freely that part can move in an immersive mix.

Alignment and length rules

Alignment errors are one of the most common causes of timing problems after upload. Spatial9 places stems relative to each other, so every file must share the same timeline.

RuleRequirement
Common startEvery stem starts at the same point, usually bar 1 or zero
Common endEvery stem ends at the same point, after the last reverb tail has died away
Leading silenceKeep the silence before late entries; do not trim it
Equal lengthAll stems, and the reference mix, have the same duration
TailsReverbs, delays and the final note ring out completely

Headroom rules

RuleRequirement
No clippingNo stem clips at any point
Peak levelPeaks at around -6 dBFS to -3 dBFS leave room for the next stage
Master busBypass master bus limiting and heavy compression during the export
Level changesDo not normalize or gain-match stems after export

Problems in the source cannot be fully fixed later, so a stem that clips at export carries that distortion into every spatial render. If a stem clips with the master bus bypassed, lower the level of that track or group and export again.

Naming and packaging rules

Clear names identify each instrument immediately and keep files in the same order on every system.

Example of a well-named stem delivery folder
A clear folder and naming scheme anyone can open.
ItemConventionExample
FolderProject, content and date, optionally the studioProjectName_Stems_2025-04-18_StudioName
Stem filesTwo-digit number and content01_LeadVox.wav, 02_BGVox.wav, 03_Drums.wav
Reference mixStereo mix, same start point as the stems00_StereoMix.wav
Notes filePlain textNotes.txt
Transfer archiveLossless ZIP of the folderProjectName_Stems_2025-04-18.zip

The notes file lists the following:

  • Tempo
  • Key
  • Sample rate
  • Bit depth
  • Whether reverb and delay are printed into the stems or delivered as FX returns
  • Any master bus processing that was bypassed

Preparing the session

Complete these steps before you open the export dialog.

  1. Name every track by its content, for example "Lead Vox" or "Kick" rather than "Audio 14".
  2. Commit or freeze virtual instruments and any plugin the receiver will not own, so the sound is printed into audio.
  3. Confirm that automation is enabled and plays back as intended.
  4. Set one start point and one end point for the whole export, with the end after the last tail.
  5. Bypass master bus compression, limiting and clipping.
  6. Confirm that the session uses one sample rate and one bit depth.

Export procedures in common DAWs

Menu names change between versions. Treat the following as a map and confirm the exact option in the manual for your version.

DAWExport pathKey setting
Ableton Live 12File > Export Audio/VideoRendered Track: All Individual Tracks, Normalize off
Logic Pro 11File > Export > All Tracks as Audio FilesWAV, 24-bit, include the tail
Pro ToolsSelect tracks, right-click a name, Bounce (Track Bounce)Include sends if returns should be printed
Cubase 13File > Export > Audio MixdownSelect several channels for separate files
FL StudioFile > Export > WAV fileEnable Split mixer tracks
Studio One 7Song > Export StemsChoose tracks or channels
REAPER 7File > RenderSource: Stems (selected tracks)
Bitwig Studio 5File > Export AudioChoose the tracks to export as separate files
Reason 13File > Bounce Mixer ChannelsBounce each channel
GarageBandShare > Export Song to DiskSolo each group; no one-click stem export

General export procedure

  1. Select the tracks, groups or buses that form your stem set.
  2. Set the export range from the common start point to the common end point.
  3. Choose WAV or AIFF, 24-bit (or 32-bit float on request), at the session sample rate.
  4. Turn off normalize and dither.
  5. Choose mono or stereo per stem according to the channel rules.
  6. Enable tail inclusion, if the DAW offers it.
  7. Export the stems into the delivery folder.
  8. Export the stereo reference mix with the same range.

Quality checks before upload

Run these six checks on every delivery before upload.

Six-point stem export quality checklist
Run these six checks before sending stems anywhere.
  1. Alignment. Import every stem into an empty session at zero and confirm that all files start and end together.
  2. Sum test. Play all stems together at unity gain and compare them with the stereo reference. They should sound the same, apart from master bus processing you bypassed.
  3. Headroom. Confirm that no stem clips and that peaks sit around -6 dBFS to -3 dBFS.
  4. Phase and polarity. Listen for a thin or hollow sound when stems play together, especially with several drum microphones.
  5. Tails. Confirm that reverbs, delays and the final note ring out completely.
  6. Names. Confirm that every file name states what it contains.

Delivering stems to Spatial9

The same stem files work with every Spatial9 interface. Only the upload mechanism differs.

InterfaceHow stems are sentRelevant limits
Web appUpload all stems togetherSee Spatializer for Music
MCP servercreate_upload_link, PUT the file to direct_upload_url, then create_from_stems with each upload_id, name and instrument2 to 16 stems; upload links valid 2 hours, files up to 2 GB
A2A agentupload_link skill for local filesUpload links valid 2 hours, files up to 2 GB
REST APIPOST /musics with an instruments map, then tus uploads to /musics/{id}/stemsChunks must stay under the server Tus-Max-Size

All renders share the same limits: 3 concurrent renders and 20 renders per day. See Limits, quotas and errors.

File names in the REST API

In the REST API, POST /musics declares the stems before upload. The instruments object maps instrument UUIDs from /instruments to arrays of stem file names, and the optional stereo field names the reference mix.

{"name":"Sample Music","stereo":"Sample Music.wav","instruments":{"1e9d541b-7286-4023-be7b-5f943644842c":["BASS.wav"],"0409683b-3bbd-419c-8db4-579f7cc6b22c":["DRUMS.wav"],"57a7464e-fe2e-41b5-aa78-215ea8fc8785":["LEAD VOCALS.wav"]}}

Every file name listed in instruments must be uploaded, and only those names are accepted. If you name a stereo file, you must also upload it. The file name in the tus Upload-Metadata header must match the declared name exactly; an upload whose name is missing or not part of the music returns 400. The UUIDs above are examples only. See REST API reference.

Limitations

  • Stems do not perfectly recreate the mix. Master bus processing and sidechain compression triggered by a part in another stem behave differently once the parts are separate.
  • Printed effects are permanent and restrict how far a part can move.
  • Sharing stems does not grant permission to release them. Agree the terms in writing before delivery.
  • Store rules govern how a mix is made. Apple Music, for example, does not accept a Dolby Atmos mix made from a stereo release or from stems extracted from one. Check each store before choosing a workflow; see Publishing and delivery.

Troubleshooting

SymptomLikely causeRemedy
Stems drift or flam against each otherDifferent start points or trimmed leading silenceRe-export every stem from the same start point
Stems sum louder or quieter than the mixNormalize was on, or faders changed between exportsRe-export with normalize off and unchanged faders
Sum sounds less punchy than the mixMaster bus compression or limiting was bypassedExpected; the effect cannot be rebuilt from separate parts
Pumping differs from the mixSidechain trigger sits in another stemExpected; record it in the notes file
A stem distorts after spatializationStem clipped at exportLower the track level and re-export with peaks around -6 dBFS to -3 dBFS
Reverb or final notes cut offExport ended before the tailsExtend the end point and enable tail inclusion
Reverb sounds doubledSends printed into stems and also delivered as FX returnsUse one approach and record it in the notes file
Missing synth or plugin soundVirtual instrument not committed or frozenFreeze or commit the track and re-export
REST upload returns 400File name not declared in instruments or stereoMatch the Upload-Metadata name to the declared name
REST upload returns 413Chunk larger than the server Tus-Max-SizeUse smaller chunks

Next steps

Go deeper on the blog