Here's an update - not a complete solution but I put this expression on a solid I overlaid on the video, and it really helps to see when my markers are in terms of timing. This solves the problem of the playhead updating only every seven or eight frames, at least.
Assuming a music layer called music.wav, put this expression in the opacity of a solid:
(timeToFrames(time) == timeToFrames(thisComp.layer("music.wav").marker.nearestKey(time).time)) * 90
It will only be opaque on frames where there is a marker.
Cutting music accurately to beats is usually a simple matter of math. Most music, especially music with a strong beat, runs at a specific number of beats per minute. That's usually easy to figure out. There are times when you have a tempos shift or a fermata, acc. or ret. or other change they are usually for a short duration and pretty easy to fix. Figure out the tempo and you're about 90% there.
Another tool, and one that I use quite often is Sound Keys from Trapcode. This is much more versatile than using the built in Convert audio to keyframes.
If I have a fairly long segment that has a bunch of beats quick beats I will sometimes create a small solid, add hue and saturation to the small solid set to colorize, add this expression to colorize hue - index * 140, trim the length of the layer to the length of the beat, then duplicate the layer for as many beats as I want to cover, sequence the layers, and then use that layer sequence as a guide. The setup looks like this:
You could also use a loopOut expression on rotation to rotate a small layer say 45º on every beat. For example, if you had a beat every 20 frames set 3 hold keyframes, one at the first frame for 0º, one at frame 20 for 40º then put one at frame 40 for 0º and simply add the expression loopOut("cycle") to rotation. Now the little cube would snap to a different angle on every beat.
These tricks will help you with some fast cuts right to the beat but let me give you some advice on cutting to music that I learned 42 years ago (yes, I am an old guy) when I was learning to edit to music at my first job in film. My mentor had been in the business since 1952, had worked as an editor on a ton of feature films and a zillion commercials. He told me that if you precisely match the beat, which was pretty easy to find and mark with a wax pencil on mag stock, your cuts will look out of sync. The problem with that precision is that the eye and the ear are not precisely in sync. The lead or lag time depends on the shot, where the shot is taking your eye, where the cut moves your eye, and the mood the music is creating. The best technique is to listen to the music and place markers as you tap out the beat. In the old days I did this by tapping a wax pencil on the mag stock as it ran through the Steenbeck or Moviola, today I do it by tapping the * key, then I cut and adjust the cut point letting the shot dictate when the music and beat line up emotionally. You'll get a better result and your work will go much faster than fussing around trying to precisely match the beat with every cut. I have shifted cuts as many as 4 or 5 frames ahead or behind to beat to get sequence to feel right.
I do use the two techniques I listed above to cut short segments of very tight cuts and they help save time, but setting your comp resolution to auto and your comp Zoom factor to 25%, ram preview to "From current time," and just cutting to the beat by feel will give you a much more pleasing and emotional response to your sequence than precisely and mathematically exactly matching the beat. The final piece of advice I can give you about cutting music is to make the first cut, then walk away for at least a half hour, then come back and look at what you have done. You'll instantly see where you need to make adjustments and it will take you less than half the time to cut your sequence.
I'm of another camp on this whole deal of automatied beat-finding.
Any good musician isn't going to play like a robot. They'll change up the tempo. They'll change time signatures. They'll use rubato (look up the term if necessary). Thus, there are aren't any good, automated ways to do this: the result will always need tweaking.
You got a music bed created in Garage Band? Great, find out the BPM and knock yourself out with an automated technique. You got a real human being making the music? Expect a tougher time of it.
This was actually something I was worried about, but two factors conspired to make me want to go with a somewhat automated solution:
- It's a synthesized game music track, and
- I suck at keeping a beat myself.
Thanks for the warning though.
Rick Gerard wrote:
Cutting music accurately to beats is usually a simple matter of math. Most music, especially music with a strong beat, runs at a specific number of beats per minute. That's usually easy to figure out.
Quite right, it seems that once you have the BPM you at least have a base for laying down markers for every beat.
As I was digging around for a solution I came across this tool: http://aescripts.com/beat-assistant/
Which seemed to be quite magical, but after playing with the trial for a bit I realized that it doesn't actually match every beat - rather it uses SoundTouch (http://www.surina.net/soundtouch/) to figure out a single number for the BPM, then just sets markers at intervals from the playhead. So I'm comfortable getting the BPM and writing a script to place the markers myself, but others may find BeatAssistant useful if you aren't.
However you said "usually that's easy to figure out," so I wonder how you do figure out the BPM? I mean using software to do it is fine for me but do you use another method?
Finally, thanks for the advice about cutting aesthetics. I agree, and I would love to have the flexibility to time my cuts more organically - but I feel like, for the reasons I outlined in my question (paragraphs 5 and 6), After Effects isn't really up to the task. Do you do this in AE when you cut to music? If so, how?