Skip to content

Make a Commercial Motion Test React to Sound Without Calling Every Peak a Beat

Advertising

Make a Commercial Motion Test React to Sound Without Calling Every Peak a Beat

Convert Audio To Keyframes makes one narrow offer: it listens to your composition's audio and writes down how loud it was, moment by moment, as keyframes you can point another property at. Three controls come out of it — left, right, and both channels together — and all three are measurements of amplitude. Adobe documents the conversion and its channel controls on its After Effects help page for assorted animation tools.

That's the entire tool. It's a level meter with a memory, and it has no opinion about your commercial.

Which is why the most common failure isn't technical. It's treating a high number as an important moment. Scratch tracks usually make this trap easy to fall into: the loudest thing in the file is a sustained pad, a music bed, or room tone running under everything, and the moment the shot actually turns on is a soft click, a breath, or a hand setting something down. The pad out-measures the click every single time. Wire the two together without deciding what the movement is for and the animation leans into the wrong beat and holds it.

A sound-driven control measures a signal. You still decide what that measurement means for the picture. What follows builds a short study where you can point at any movement in it and say whether it came from the measurement or from you.

Decide the relationship before you connect anything

Start with a sentence, not a click. Two blanks:

The ______ responds to the ______.

This ring's size responds to how loud the pad is overall. The product's landing responds to the snap. Fill both blanks and write down which is which. If you can't fill them for a given property, that property doesn't need an audio connection — and it will be better without one.

Then isolate what gets measured. The conversion reads the audio of the composition across the work area — all of it, mixed. If your comp holds a music bed, a voiceover, and a sound effect, the number that comes back is an average of a conversation, not a reading of any one voice.

The clean way to control that is to control what's in the composition. Build a temporary comp containing only the track you intend to drive the image, set the work area to the interval you actually care about, and run Animation > Keyframe Assistant > Convert Audio To Keyframes there. Bring the resulting Audio Amplitude layer into the real comp. You've now separated what I measured from where I'm using it.

Two settings deserve inspection before you go further.

The channel. Left, Right, and Both Channels are three different numbers, not three views of one. If the event you care about sits on one side of the stereo field — a click panned left, a snap off-center — Both Channels dilutes it while a single channel keeps it intact. Look at all three against the moment you're after and take the one that actually peaks when that moment happens.

The work area. The analysis covers the work area and nothing else. If your intended interval is four seconds long, don't analyze the whole minute; you'll be reading a transcript of material you'll never use. Set the work area to the interval, then check where the generated keyframes begin, because that's where your transcript starts.

Now open the Audio Amplitude layer and read it. Note the values the keyframes carry in the quiet stretches and at your loudest intended moment. Those two numbers are the most useful thing the tool produced, and they're the easiest to skip past.

Make the measured range usable on screen

Here's the first failure that catches people: pick-whipping the amplitude slider onto a property.

Build the study on paper for a moment. No audio or animation was produced for this article, so treat the numbers below as invented placeholders — the point is the gaps between them, not the values.

A twelve-second study proposing how a product enters frame. Two elements: a ring behind the product that should breathe, and the product can itself, which should land on a snap near the end. The scratch track carries a sustained pad with its loudest stretch around four to six seconds, and one quiet snap at 9.50 seconds.

Say your Audio Amplitude layer reads about −42 through the silent stretches, −26 through the pad, −24 at the pad's peak, and −34 at the snap. Those are levels. None of them is a size.

Connect the combined channel straight to the ring's Scale and the ring renders at 42% of its size in the quiet, shrinks to 24% at the pad's peak, and stays mirrored the whole way through. It isn't merely too strong or too weak — it's inverted, mirrored, and meaningless. That is what "the measurement isn't the meaning" looks like when you skip a step.

The step is a mapping, and it needs four numbers. Two of them come from the measurement; two come from your eyes, because the measurement has no idea what will fit in the frame.

  • A floor, lo. An amplitude, not an output. Where the measurement starts to mean movement. Set it above your quiet-stretch reading so room tone clamps to rest.
  • A ceiling, hi. Also an amplitude, not an output. Where the measurement stops meaning more. Set it at your loudest intended moment so the load-bearing part of the track can actually reach the top of the range.
  • A rest value. Where movement sits when nothing is happening — the ring's own 100%.
  • A top value. Where movement stops. This is a composition decision. 108% of the ring's size might be all the frame can hold; 140% might push it past the edges.

In the sample, that means a window of −30 to −25, sitting inside the readings rather than spanning them. The quiet stretches read −42, the pad's peak reads −24, the snap reads −34. Put the floor at −30 and the snap is already beneath it, clamped to rest; put the ceiling at −25 and the pad's peak clears it and holds at full movement. Both placements are yours, made by looking at the composition as well as the waveform.

Take the readings you gathered in the first section and set the window inside them, then paste this on the ring's Scale (check the exact effect name your own Audio Amplitude layer shows before you paste):

amp  = thisComp.layer("Audio Amplitude").effect("Both Channels")("Slider");
lo   = -30;    // amplitude that should mean "no movement"
hi   = -25;    // amplitude that should mean "full movement"
rest = 100;    // ring scale at rest
top  = 108;    // ring scale at full movement

linear(amp, lo, hi, rest, top)

linear() holds at both ends, so the ring comes to a stop at 108% instead of continuing to climb with the track. That stop is the point. It's the bound that keeps a hot master from wrecking your composition.

I haven't run this in a project here. Write it against your own layer, read your own quiet and loud values off your own keyframes, set the window inside them, and watch what it does before you trust it.

Notice what the mapping decided. With lo at −30, the snap at −34 produces no movement at all — it's under the floor. That's correct behavior for the ring and useless for the product. Which is the next problem.

Notice the shape problem too. A sustained pad holds its level for seconds, so the ring holds at 108% for those seconds. Amplitude-driven movement has no shape of its own: it rises when the track gets louder and stays up while the track stays loud. A swell is an authored curve. No amount of scaling will invent one.

Compare the automatic response against a placed accent

Now the snap. Quietest event in the track, and the one the shot depends on. Three routes, in the order most people try them:

Drive the product with the same slider. The can now moves with the pad and does nothing at the snap. It performs the ring's job twice and the shot's job never.

Raise the threshold until only strong peaks register. Better for the ring, no help for the can. The snap isn't a small pad. It's a different kind of event, and a threshold only knows how to say loud enough or not.

Place the accent yourself. Three keyframes on the can's position: start above the floor line, arrive at 9.50 seconds, settle over the next few frames. The accent lands where you decided the shot turns, and the measurement never had an opinion about it.

The third route isn't a failure of the automatic approach. It's the reason to build the study. The automatic control is good at continuous things, and a landing is not continuous.

Where the study usually goes wrong: don't give one property two authorities. If an expression drives the can's position and you also drop manual keyframes on it, the expression overwrites the keys every frame, and the only escape is an accumulating pile of offsets and multipliers that nobody can read later — including you. One property, one authority. The ring is driven. The can is authored. Write that down somewhere.

Bound the authored move too. Scale has a natural ceiling; position has none. A drop needs a floor line — a specific Y value the can lands on — or the settle drifts between sessions and the exported file won't match your preview.

While you're watching: play the passage with sound, then play it muted. A response that reads as random twitching without the audio isn't interpreting anything. It's transcribing. And watch for jitter specifically — the constant small movement that reads as buzz rather than breathing. It nearly always comes from mapping a noisy signal across too narrow a window, so tiny fluctuations become visible fractions of the output range. The fix lives in the mapping, not the audio: raise lo, or widen the gap between lo and hi so small changes produce less output change.

If that isn't enough and you want to smooth the amplitude keyframes themselves, an averaging expression does it — but check the cost first. A moving average delays the response, and the delay lands on exactly the accents you were trying to protect.

// a separate Slider Control, reading the amplitude slider
n = 8;   // frames to average
s = 0;
for (i = 0; i < n; i++) {
  s += thisComp.layer("Audio Amplitude").effect("Both Channels")("Slider").valueAtTime(time - i * thisComp.frameDuration);
}
s / n

Also unverified here. If you use it, put a marker on the snap and watch whether the smoothed value still arrives on the frame you care about. If it doesn't, the accent needs authoring — and you've just proved it to yourself with the file open rather than taking anyone's word for it.

Recheck after the scratch track changes

The Audio Amplitude layer is a transcript, not a listener. Its keyframes record what the audio measured at the moment you converted it, and nothing in it points back at the track. Nothing in it updates when the track does.

So when the scratch track changes — a trim, a re-cut, a replacement pad — the transcript is now describing a recording that no longer exists.

Say the track is re-cut to ten seconds. The pad's peak now lands around two to four seconds and the snap sits at 7.50. You re-time the can's landing keyframes by hand, because you can see them. The ring still swells at four to six seconds, where the new track is doing nothing in particular, and still sits still at 9.50, where there's now silence. The driven property is the one that quietly lies to you, and it lies with the same confidence it had before.

Rebuild the analysis when any of these change:

  • The track, even if only the levels moved. Your thresholds were chosen against the old numbers.
  • The work area. The transcript covers the interval you analyzed and begins where you began it.
  • The channel, if a re-mix pushed the event to the other side of the stereo field.

The rebuild is dull: delete the Audio Amplitude layer, set the work area again, run the conversion again. Keep the new layer's name identical so your expression still resolves, then confirm that it does.

Keep the parts traceable while you work. Name things so that a week later you can read the decision off the timeline: the comp named for the track and interval, the Audio Amplitude layer named for the channel and both thresholds, the original scratch track file left untouched and dated. Ten seconds of naming saves you from rebuilding a mapping you can no longer interpret.

Then export the passage and watch the file, not the preview. A preview drops frames and will happily show you timing the encoder won't reproduce. Check two things:

Sync. Does the accent land on the snap? Does the ring's rise begin when the pad does?

The limits. Does the movement sit pinned at its top value for four seconds because the track was loud for four seconds? A plateau is the most common giveaway that you mapped amplitude to a property and called the result a response.

What you can say about the study when you're done

That's the real test. At the end, you should be able to point at the sample and answer three questions without opening anything:

  • The source. Which track — or which channel of which track — was measured, over which interval.
  • The mapping. What rest and what top you chose, and why those were composition decisions rather than audio ones.
  • The exceptions. Which moments are authored keyframes because the measurement couldn't see them.

The quiet-accent comparison is the one worth keeping in the project file beside the automatic version. Not as a warning against automatic response, but as the visible evidence that the two produce different things — and that you chose between them on purpose instead of taking whatever the level meter handed you.

What you've built is one proposed sound-motion relationship, tested across one interval on one scratch track. It isn't a beat detector, and it shouldn't be described as one. Amplitude is a level: a number that says how loud, not what mattered. If someone asks whether your study reacts to the beat, the honest answer is that it reacts to loudness and you decided where the loudness means something. That's the more useful thing to have anyway, because it makes the next version a decision rather than a reinstall.

Frequently asked questions

What does Convert Audio To Keyframes actually measure?

It listens to composition audio and writes loudness over time as keyframes, with left, right, and both-channel measurements. It is a level meter with a memory; it has no opinion about the commercial.

Why can the loudest moment in a scratch track be the wrong moment to animate?

The loudest element is often a sustained pad, music bed, or room tone, while the shot may turn on a soft click, breath, or hand setting something down. The pad out-measures the click, so connecting without deciding purpose makes movement lean into the wrong beat and hold it.

How do you isolate one track before converting audio to keyframes?

Build a temporary comp with only the track intended to drive the image, set the work area to the interval you care about, and run Convert Audio To Keyframes there. Bring the resulting Audio Amplitude layer into the real comp, separating what was measured from where it is used.

What four numbers does the mapping need, and which come from the measurement?

A floor lo and ceiling hi are amplitudes from the measurement; rest and top are output values chosen for composition. The expression linear(amp, lo, hi, rest, top) holds at both ends so movement stops at the top value.

Why is one property, one authority important?

If an expression drives a property and manual keyframes are also placed there, the expression overwrites the keys every frame, forcing unreadable offsets and multipliers. The body suggests the ring is driven and the can is authored, with each property having one authority.

More in Advertising Browse all articles