Stems are groups of tracks, each printed through the same buses, sends and processing you hear in the mix, and all starting at the same point so they line up again.
Logic Pro gives you two ways to get them by hand. File > Export > All Tracks as Audio Files is quick, but it gives you individual tracks. One bounce per stem with File > Bounce > Project or Section gives you real stems, one pass at a time. Here's how I do each, and the checklist I run so the stems actually add up to the mix.
Tracks or stems?
All Tracks as Audio Files exports every audio, software instrument and Drummer track as its own file. That's a multitrack, not stems. Aux and bus channels aren't exported, so the drum bus compressor, the shared reverb and the parallel crush don't come with it.
Fine if someone is going to remix from scratch. Not fine if the client asked for drums, bass, music and vocals that sound like your mix.
Method 1: export all tracks
Choose File > Export > All Tracks as Audio Files.
Pick WAV and the bit depth the client asked for. 24-bit is the usual.
Set Normalize to Off. Normalised files don't sit at your mix levels.
Decide on Bypass Effect Plug-ins. On gives a remixer dry tracks. Off keeps each track's own inserts.
Tick Include Volume/Pan Automation if the files should play back the way they do in your mix. Otherwise the automation is only copied, not printed.
For multi-output instruments like a Drum Machine Designer kit, choose One File per Channel Strip if the kick, snare and overheads need to arrive as separate files.
Set the filename pattern so the files sort sensibly, then Save.
Method 2: one bounce per stem
This is the real stem workflow, and the one that eats the evening.
Group each stem into a Summing Stack. Select the tracks, choose Track > Create Track Stack and pick Summing Stack. Each stem is now one channel you can solo.
Set the bounce range once. Start where the song starts and end a bar or two past the last region, so reverb and delay tails ring out. Use the same start and end for every stem. A strings stem that starts at bar 9 because that's where the strings come in won't line up with the rest.
Solo the first stack.
Choose File > Bounce > Project or Section. Normalize Off. Offline is faster. Choose Realtime if you have outboard hardware on inserts, because only internal sources can bounce offline.
Name the file after the stem and bounce.
Unsolo, solo the next stack, and repeat. One mistake and you start that pass again.
The checklist: where stems go wrong
The mix bus. A limiter or glue compressor on the Stereo Out reacts to the whole mix. Feed it one stem and it behaves differently. Most deliveries want it bypassed for the stem passes. Whatever you choose, bounce the reference mix with the same setting.
Shared reverbs and delays. Decide whether stems are wet or dry before you start. Wet stems need their sends printing. Dry stems need the returns muted, and usually a separate wet pass so the next mixer can rebuild the space.
Sidechains. Check every compressor with a side chain. If its key comes from a track that's silent during the pass, the ducking you mixed with won't be in the stem.
The residue. The click, guide tracks, the reference mix you dropped in two weeks ago. Hidden tracks still play. Mute them.
Doubles. A track that sits in two stems, or an aux that's in one stack and also fed from another, prints twice.
Same start, same end, same format. Every file. That's what lets them drop into another session at bar 1 and line up.
Check that they add up
The only real proof is a null test. Bounce the full mix with the same settings. Put the mix and all the stems into an empty project, all starting at the same position. Flip the polarity of the mix (the Gain plug-in has a phase invert switch) and play.
If the stems add up, you hear close to silence. Anything you hear is something that went missing, printed twice, or got processed differently. If your mix bus is working hard, expect a little residue: the stems weren't driven through it together.
The automatic way
This is the job I got tired of after close to 20 years in Logic, so I built bounceBuddy. It reads your Logic project, works out the stems from your stacks, buses, sends and sidechains, keeps every sidechain keyed during each pass, bounces every stem from the same start, and runs the null test for you. No templates, no setup, no tidy.
If you'd rather keep doing it by hand, the checklist above is the one I used. If not, try it on the messy session.