| One of the very cool things about layer markers is that you can tap them in by hitting * (the asterisk) on the numeric keypad while you preview the audio of a comp. This is very handy in visually identifying where points of interest (often beats in a piece of music) occur in the audio so that you can synchronize your animation to the audio.
The basic concept that were going to explore here is the idea that its possible to have an expression play a particular piece of the animation anywhere you put a layer marker. Well accomplish this by putting the expression in the time-remapping property of the layer. The expression will be in this form:
hit=marker.key(1).time;
t=time-this_comp.layer("drums.wav").marker.nearest_key(time).time;
t+hit
Well look at this expression more closely later.
Well actually be using layer markers in two layers to accomplish each synchronization. The pre-comp that contains the animation will have a single layer marker at the hit point which is the point of time in the action that we want to match up with the audio event. The other layer will have layer markers set in sync with the audio wherever we want the animation to occur. In the resulting animation, the hit will occur at each layer marker in the synchronizing layer.
To demonstrate how this works, Ive assembled a little demo comp. Open the project in After Effects and then open main comp and preview it to examine the finished product. Here weve got an animated drummer synchronized to an audio track. Using the technique Ill describe here, I was able to keyframe one drum hit, one cymbal hit, and one head nod and then use layer markers and expressions to make those animations repeat in sync with the audio. Most of the action takes place in the drummer.ai comp so go ahead and open that. This comp started out as an Illustrator file (containing the drummers body parts and drum pieces) that was imported as a comp.
 |
Illustrator file after import as comp
|
To this comp I added the audio layer drums.wav and two null layers (for the synchronizing layer markers). Then I pre-comped all the moving pieces into their own comps.
 |
Illustrator file comp after additional layers and precomps added
|
The drummer was stitched together in After Effects by moving the anchor points of the various body parts to the joints using the pan behind tool and then parenting the parts together (see my Creative Cow tutorial Animating a Walk Cycle for more information on how to do this). The cymbal was stitched together in the same manner. For each of the moving pieces I set up a short keyframed segment of motion by setting keyframes for the rotation property of the pieces involved. For example, open cymbal comp, select all the layers and type u to reveal the keyframes. Scrub the timeline to see the animation. Notice that only one cycle of motion has been keyframed. You can examine the other animated comps (l arm comp, r arm comp, and head comp) in the same way if youd like. When youre done, return to the drummer.ai comp.
time to sync up.
In this example we have an audio clip consisting of a snare drum and a ride cymbal. We have an animated drummer and we want his left hand in sync with the cymbal and his right hand in sync with the snare (OK so hes a left-handed drummer) and were going to have his head nod in sync with the beat. We also want the cymbal to react when the drummer strikes it. To accomplish this were going to need three sync tracks. One will have a layer marker every time the snare is hit, another will have a layer marker every time the cymbal is hit, and the third will have a layer marker on each beat.
In this case, we will put the layer markers for the snare right on the audio layer (drums.wav). Well need two dummy layers for the other sync markers (here well use null layers Null 1 for the cymbal and Null 2 for the beat. I put the layer markers in by selecting the layer, starting an audio preview by hitting the . on the numeric keypad, and then tapping the * key on the numeric keypad wherever I wanted a marker. Then I fine-tuned each marker position by dragging it until it was in the position where I wanted the hit to occur.
Since the synchronizing expression is going to be applied to the time-remapping property of each animated layer, I had to enable time-remapping for each of those layers. I did this by selecting the layer to be animated and selecting Enable Time Remapping from the Layer menu. Then I typed rr to reveal the Time Remap property and Alt-Clicked (Opt-Click on the Mac) the little stopwatch to enable the expression for the property. Then I entered the synchronizing expression.
Select the r arm comp layer. Type rr to reveal the Time Remap property and click the little twirly to reveal the expression. Click the equal sign next to the little stopwatch to disable the expression. Scrub through the first part of the time line and notice that with the expression disabled the drumstick held by the right arm strikes the drum once at the layer marker.
 |
with expression disabled hit occurs at r arm comp layer marker
|
Re-enable the expression by clicking the equal sign again and scrub through the timeline. Notice that with the expression enabled, the drumstick now hits the drum in sync with the layer markers in drums.wav layer.
 |
with expression enabled hits occur at drums.wav layer markers
|
Lets take a closer look at the expression itself:
hit=marker.key(1).time;
t=time-this_comp.layer("drums.wav").marker.nearest_key(time).time;
t+hit
Lets dissect it a little and see whats going on. The first two lines of the expression use the new capability added to After Effects 5.5 that allows access to layer marker properties. The first line creates a variable called hit that is the time at which the first (and in this case only) layer marker of r arm comp occurs. The second line defines a variable t that is the difference between the current comp time and the time of the nearest layer marker in the drums.wav layer (which has a layer marker for each drum hit). The last line simply adds the two variables and the result gets plugged into the time remapping property of r arm comp. What does all this accomplish? Consider the case when the comp time is exactly the same as one of the layer markers in drums.wav. In that case, t will be zero, which means that r arm comp will have its time remapped to its own hit marker. The net result of this is that wherever there is a layer marker in drums.wav, r arm comp will be time-remapped to the point where the drumstick hits the drum. In fact, the whole range of animation around the hit point in r arm comp gets remapped to sync up with the layer markers in drums.wav.
Pretty cool, huh?
This same technique is used to sync l arm comp and cymbal comp to the layer markers in Null 1, and head comp to the layer markers in Null 2.
###Dan Ebberts.
If you have any questions or comments, please visit the CreativeCOW.net After Effects forum.
|