Timing and motion
Element sounds
A sound tied to an element's entrance, so it travels with the element instead of living on a separate track.
A sound tied to an element's entrance. A text pops in, it goes whoosh.
Every element has a Sound tab, identical for all eight kinds and always in the same position — after Animation, before Timing — so switching between kinds never moves a tab under your pointer.
It hangs on the element, not on a track
Duplicate the element, copy it into another project, drag it to a different moment: the sound goes with it. A separate audio lane would need manual re-syncing after every one of those.
When it fires
Two controls, coarse and fine.
Position — start, middle or end of the entrance, as a fraction of that element's
own reveal window. Slow the animation down and an end sound moves with it. An
instant reveal has a zero-length window, so all three collapse onto the same moment.
Offset seconds — a nudge on top of that, in either direction.
Coarse choice plus fine adjustment, rather than two controls competing to mean the same thing.
Preview and export agree
The editor fires the sound live as the playhead crosses it; the export sums the same cue list offline. Both read one function for when — the same expression that decides when the element itself appears — so there is no second timeline to drift.
Scrubbing does not fire sounds. A jump larger than a playback step is a seek, not playback, and dragging the scrubber must not dump every sound in the video at once.
Preview is also muted while the microphone is open, so a live take does not record your own speakers.
Sounds do not duck the music
Music ducking exists to keep speech intelligible. Pulling the music down under a dozen caption whooshes would pump audibly, so element sounds are their own kind of cue and push no duck window at all.
The library, and your own files
Twelve bundled sounds ship with the app, all CC0-licensed and recorded in the licence file that travels with them. You can also upload your own.
The bundled library is a paid feature; an upload never is
An unpaid account can assign a bundled sound, but it stays silent in both the preview and the export until the subscription is active — the gate is enforced where the audio is planned, not merely in the panel. Degradation is silence, never data loss: the sound stays on the element and starts playing after an upgrade with no re-edit.
Sounds and music you upload yourself always play. They live in your browser and never reach our servers.
Preview and export are gated identically on purpose. Letting an unpaid editor hear the library and then shipping a silent file would be a preview-versus-export gap nobody could debug.
Why no AI-generated sounds
The bundled material is sourced, not generated. Purely machine-generated audio has unsettled copyright status in several jurisdictions, and pointing a paid API at asset production would make that vendor's terms a standing condition of shipping the product.