File audio
Playing the sound that lives inside your media is opt-in, and off by default. This page explains what it does once you turn it on — and what it deliberately does not do.
Turning it on
There are two ways in, both labelled Enable file audio:
- Settings → Clip audio → File playback → Enable file audio
- With a clip that has audio selected: Inspector → Audio → Enable file audio
This is an application preference, so it applies everywhere, not per set. Immediate — no Apply button.
Which clips produce sound
A voice exists only when a clip's source is a movie file that has an audio track, or an audio-only file.
- Still images never produce sound.
- Generator and shader clips never produce sound — they have no file.
- A video with a soundtrack produces sound. (Its tile still shows a video frame, not a waveform.)
Levels
These file-audio controls stack; visual routing controls also affect voice gain:
| Control | Where | Default |
|---|---|---|
| Clip volume (0…1) and Mute clip audio | Inspector → Audio | 1.0, unmuted |
| Master mute | Settings → Clip audio | unmuted |
| Master volume (0…1) | Settings → Clip audio | 1.0 |
Muting keeps your volume setting rather than zeroing it.
What playback follows
File audio tracks the transport closely:
- Speed — set by composition speed × clip speed × direction, and BPM timebase contributes too.
- Pause — both per-clip pause and global pause stop it.
- Seek and retrigger — old queued audio is discarded; the voice identity changes so nothing bleeds through from the previous position.
- Loop, Bounce, Once — each boundary type is honoured, including Bounce folding and Once stopping.
- Trim — in/out points are applied to audio too, with interpolation at the trim edges.
- Layer mute and solo — mute or being excluded by solo silences a layer's audio entirely.
- Groups — ancestor group opacity, bypass and solo also affect descendant file-audio gain.
- Transitions — the outgoing voice is retained and projected forward until its fade completes.
- Crossfader buses — bus weights multiply the voices' gain.
- Blackout — scales audio to silence along with video.
Varispeed changes pitch
This is the single most important limitation. File audio is resampled by playback rate: the read head simply moves faster or slower. Changing speed therefore changes pitch as well as tempo — there is no time-stretch or pitch-preserving resampling anywhere in the app.
Playback is also linear-interpolated rather than band-limited.
Channel handling
Output is fixed stereo at 48 kHz float.
- Standalone audio files: only the first two channel are used; mono is duplicated to the right channel. Up to 32 channels may be read. There is no sample-rate conversion stage — the output clock is walked in output-seconds and neighbouring decoded frames are interpolated.
- Movie soundtracks: stereo decoding is explicitly requested (48 kHz, 2-channel, float32).
- The bundled FFmpeg fallback only accepts sources that already present themselves as 48 kHz and 2 channels.
Capacity
32 simultaneous clip voices, and notably transition hand-off voices count toward that cap. A moderate-looking mix can therefore hit capacity during crossfades; when it does, admission is refused with "Audio transition capacity reached. Holding the current look until its fade finishes." — the existing look keeps playing until its fade completes rather than the new one failing.
Status and errors
Per-voice states are published live, including Audio unavailable for N clip(s),
Preparing file audio…, Buffering file audio…, File audio ready · paused,
Playing · N audio clip(s) · varispeed and File audio off.
Per-voice errors surface both in Settings → Clip audio and per clip in the Inspector — for example "Could not decode file audio: …", "Audio transport contains an invalid value." or "Could not start native audio output: …". Underruns and discards are counted per voice.
No guarantee against starvation is claimed. Buffering and decoder failures are reported, not prevented.
Recording is silent
Recorded video never contains audio. The recorder creates exactly one AVAssetWriterInput, for
video, and has no connection to the audio engine. Two places in the UI say so, including
"Recordings remain silent." See Recording.
Not verified
- Whether the 48 kHz output is matched to your hardware device rate. The engine connects directly to the mixer node; any implicit conversion Core Audio performs was not inspected.
- How AVFoundation folds surround sources down to the requested stereo, beyond the request itself.
- Actual audible behaviour through real speakers. No listening test was run for these pages.