Ymotion
Help
Dashboard
All pages

Guides

Sound effects for motion

Which library sound suits which animation — typing under a typewriter, a whoosh on a zoom, a shutter on a transition — and how to time it.

A sound effect makes a chosen movement feel physical: type that types, a title that zooms past, a cut that snaps. This page pairs the animations Ymotion has — text presets, transitions, clicks, freeze frames — with a fitting kind of sound, and shows where its moment should land. Decide which events need that audible emphasis, then use the pairing to choose a sound.

Choosing the events

Sound has a role in the passage. A build can prepare a reveal, a hit can give the reveal weight, and a brief cue can make an interface action clear. The voice, music, original action or ambience may already do that work. Give a sound to every text animation, every transition, every zoom and anything new that arrives in frame; captions arriving phrase after phrase stay quiet.

Choose a compatible character for recurring events, then reserve contrast for the payoff. A delicate product reveal, a lively explanation and an atmospheric scene need different energy even when all use a zoom. A busy passage becomes clearer when a cue is removed or moved between phrases rather than raised over the voice.

The pairings at a glance

  • Typing text — typing
  • Zooming in or out — whoosh
  • A click or a tap — pop
  • Building suspense — riser
  • A transition between shots — a camera shutter from camera
  • A slide or a move across the frame — whoosh
  • A title landing hard — impact

Each has a section below with the animations it covers and where the sound's moment goes.

How a pairing lines up

Every sound in the shared library has a group and a moment measured when it was added: a whoosh's peak, an impact's hit, a riser's end, the first keystroke of typing, the click of a shutter. placeSfx lands that moment exactly on at, so pairing a sound with an animation comes down to one question: when does the animation's moment happen?

  • An In text preset starts at the layer's start (or its window start) and settles over seconds later. A typewriter's first letter appears at the start. A title lands before it settles: a slam on its dip, at start + 0.55 × over, and a popUp on its peak, at start + 0.6 × over; the end of over is only the settle.
  • An Out preset starts over seconds before the layer ends.
  • A transition happens on the cut: where the second layer started before the transition went on. An overlap starts that layer earlier, so read the cut first.
  • at is timeline seconds, so a preset on a layer that starts at 4 s with over 0.35 settles at 4.35, and a slam there lands at 4.19.

The library changes as packs are added, so find sounds by group and words rather than by an id from memory. With no text, the catalogue lists the groups it holds today:

ymotion_find {"catalogue":"sfx"}
ymotion_find {"catalogue":"sfx","group":"typing"}
ymotion_find {"catalogue":"sfx","text":"single camera shutter"}

Each result carries its duration and its moment, which is what you need to fit it to an animation.

When the group is empty

The library doesn't have sounds in every group yet. When the pairing calls for a group with nothing in it, tell the person you're working with which kind of sound is missing, and offer the nearest one there is — a click from ui in place of a pop, say — rather than placing a different kind without mentioning it. They may prefer to add the right sound to the library first.

Typing text

Animations: typewriter, randomTypewriter and decoderFadeIn (In), backspace and randomErase (Out), and the typewriterLoop loop.

Sound: the typing group — keystrokes on a keyboard. Its moment is the first keystroke, so at is when the first letter appears: the layer's start for an In, and over seconds before the layer's end for backspace.

Typing sounds are a second or so long and the animations run as long as you set them, so make the two agree. The neatest way is to set the preset's over to the sound's duration. For a title at 2 s and a typing sound 1.1 s long:

ymotion_edit {"label":"typed title","ops":[{"verb":"applyPreset","args":{"layerId":"<title layer id>","preset":"typewriter","params":{"over":1.1}}},{"verb":"placeSfx","args":{"sfx":"<typing sfx id>","at":2}}]}

When the typing should stop before the sound does, "place":{"duration":0.8} keeps only the first 0.8 seconds, with a short fade where it cuts. When the text types for longer than one sound lasts, place a second one where the first ends — a sound never stretches or loops on its own, and two that would overlap go on separate audio tracks by themselves.

Typing is texture rather than an event, so it usually wants to sit under a voice: "place":{"loudness":-24} puts it around −24 LUFS, under speech at about −16. Over music alone it can be louder.

backspace and randomErase take the same sound, starting over seconds before the layer ends. A typewriterLoop that keeps retyping wants a short burst on each cycle rather than one long run, so place one at the start of each period.

Zooming in and out

Animations: zoomIn and zoomDown (In), zoomOut and blowUp (Out), the zoom transition, and a transform.scale you've keyed to push in or pull out.

Sound: the whoosh group. A whoosh's moment is its peak, which belongs where the zoom is fastest:

  • zoomIn and zoomDown ease out — fastest as they begin, settling into place — so the peak goes just after the layer starts, a tenth or so into over.
  • zoomOut and blowUp ease in — slow to start, fastest as they leave — so the peak goes near the layer's end.
  • The zoom transition happens on the cut, so the peak goes on the cut.
  • A keyed zoom with easyEase is fastest halfway between its keys.

For a zoomIn on a title at 3 s with its default over of 0.5:

ymotion_edit {"label":"zoom in with a whoosh","ops":[{"verb":"applyPreset","args":{"layerId":"<title layer id>","preset":"zoomIn"}},{"verb":"placeSfx","args":{"sfx":"<whoosh sfx id>","at":3.05}}]}

A short whoosh suits a short zoom; compare the sound's duration with over, and trim a long one with "place":{"duration":0.5}.

Clicks and taps

Animations: a cursor clicking, a button pressed, a tap on a phone in the frame, a toggle switching — and the light arrivals that read as a click: popUp, popOn, scaleIn, bounce and bounceIn, spring, wordPop, and popDown and popOutWords on the way out.

Sound: the pop group. A pop's moment is its hit, which belongs on the frame the click happens — where the button changes, or where a popping title lands: its peak, not its settle at the end of over. popUp and popOn peak at start + 0.6 × over, spring swells first at 0.35 × over, and bounce and bounceIn first touch down at 0.55 and 0.4 × over; ymotion_read {"what":"keys","layerId":"<layer id>"} gives any preset's key times, counted from the layer's start. For a popUp on a label at 5 s with its default over of 0.45, the peak is at 5.27:

ymotion_edit {"ops":[{"verb":"applyPreset","args":{"layerId":"<label layer id>","preset":"popUp"}},{"verb":"placeSfx","args":{"sfx":"<pop sfx id>","at":5.27}}]}

Word-by-word presets like wordPop set off many small arrivals. A pop on every word quickly gets busy, so one on the first word, or one on the last, usually reads better.

Building suspense

Sound: the riser group. A riser builds tension up to its moment and stops there, so at is the moment the suspense breaks: the reveal, the title, the cut, the drop. Placed there, it builds through the seconds before and stops exactly as the moment arrives. An impact on the same at gives the arrival its weight:

ymotion_edit {"label":"build and hit","ops":[{"verb":"placeSfx","args":{"sfx":"<riser sfx id>","at":8}},{"verb":"placeSfx","args":{"sfx":"<impact sfx id>","at":8}}]}

A riser needs room before its moment: at 0 s most of it would play before the film starts, and that placement is refused. Choose one whose duration matches the build you want — a quick noise riser for a beat of tension, a long cymbal swell for a slow reveal.

Transitions

Animations: every transition — whip, slide, stack, wipe, iris, dissolve, blurDissolve, flash, blackout and filmBurn — except zoom, which zooms and takes a whoosh (above).

Sound: a camera shutter from the camera group. A shutter's moment is its click, so at is the cut: the split's t, or the start of the layer after it as ymotion_read {"what":"tracks"} lists it before the transition goes on. An overlap transition starts that layer earlier, where the overlap begins, while the sound still cuts where the picture cut was; so read the cut first. Match the shutter to the pace: a single snap for a quick whip or flash, a softer click under a dissolve, a short burst for a stack of shots arriving one after another. For a cut at 6.2 s:

ymotion_edit {"ops":[{"verb":"applyTransition","args":{"layerId":"<layer after the cut>","transition":"whip"}},{"verb":"placeSfx","args":{"sfx":"<camera shutter sfx id>","at":6.2}}]}

A straight cut with no transition needs no sound. Under a voice, keep the shutter low and short rather than leaving the transition silent.

Slides and moves across the frame

Animations: slideUp, slideRight, slideIn, slideOut, spinIn, spinOut, skewIn, trackIn, twirlOff, and a layer you've keyed to cross the frame.

Sound: the whoosh group, its peak where the move is fastest. The slide-ins ease out, so the peak goes just after the move begins; on a move that eases in and out, in the middle.

Titles that land hard

Animations: slam, and a keyed scale or position that ends on an abrupt stop.

Sound: the impact group, its hit on the frame the title lands. A slam lands on its dip, start + 0.55 × over, and only settles at the end of over; a keyed stop lands on its last key. For a slam on a title at 4 s with its default over of 0.35, the dip is at 4.19:

ymotion_edit {"ops":[{"verb":"applyPreset","args":{"layerId":"<title layer id>","preset":"slam"}},{"verb":"placeSfx","args":{"sfx":"<impact sfx id>","at":4.19}}]}

Glitches, decoders, freeze frames and timers

  • Glitches and flickers — glitchIn, glitchOut, flickerIn, flickerOut, and the glitch, cipher and shiver loops — take the glitch group, or tech for something cleaner.
  • A decoder rolling letters, decoderFadeIn or decoderOut, suits a typing burst.
  • A freeze frame or a photo dropping in takes a single shutter from camera, its click on the frozen frame; several photos arriving quickly take a burst.
  • A countdown or a timer on screen takes ticking from the foley group, its first tick on the first number.
  • A message, badge or checkmark appearing takes a tone from the notification group, on the frame it appears.

Good to know

  • One cue for a chosen gesture. A title arriving is one event even when its letters arrive one by one, so it takes one sound, not one a letter.
  • A few kinds per film. Whooshes for zooms and moves, shutters for transitions and pops for clicks reads as a style; a different sound on every element reads as noise.
  • Speech comes first. A placement with no level asked for is raised towards −14 LUFS momentary, which suits a hit between sentences. Textures like typing sit better under a voice, around −24 to −20 with "place":{"loudness":-22}.
  • Look at the mix. ymotion_render {"what":"waveform"} draws every layer's sound on one decibel scale, so you can see whether a shutter lands on its cut and whether a riser swamps the voice.
  • Keep the listening limit clear. The waveform and measured levels show structure, timing and possible masking. They do not say whether a sound's character suits the scene or whether the finished mix feels pleasant; the person checks that in the playable preview.

See also