Copy link to clipboard
Copied
I'm creating a video to show which chords are playing in a song. The white vertical bar in the image represents the current position in the song. This image shows that B7 is the current chord and C will be next. The chords will scroll as the song plays.
Here is a link that shows what I'm trying to replicate:
https://www.youtube.com/watch?v=NP0MLMXOQdc
I have markers where each chord change takes place. How do I figure out the right width for each chord shape?
Copy link to clipboard
Copied
Hi Peter
I'm an AE artist and musician as well.
Lots of ways to tackle this. I would tackle it this way:
I would build the whole visual layout of my songs chords. Then parent all tos to a null which will be your horizontal control. Keyframe the position of the null so that you first chord hits the static white line on the first beat and then go to your last beat and move the hull to the left to bring the last chord into place. Then use time remapping to make sure each chord hits the line when your marker says it should.
Hope that helps,
Steve
Copy link to clipboard
Copied
Hi Steve,
The null object parenting sounds very interesting.
Time remapping seems like it would simplify the process of getting the chords to appear at the right time. But wouldn't it cause the chord shapes to speed up and slow down instead of scrolling smoothly?
Copy link to clipboard
Copied
I would set a specific size (width) to determine a bar/beat. Then each chord/shape has an Expression Slider where you input its size based on this bar/beat. For example, a chord may be used for 1 bar at certain times and 2 bars at other times. For a single bar you input 1 into the Slider and input 2 if the chord runs for 2 bars - the Expression simply multiples its size by the Slider value.
The next step involves aligning the chords in sequence - best to work in terms of a total of 8 or 12 bars - whatever works, as long as you don't get a ridiculously long line of shapes, to the point where working with them becomes a pain.
Next step is to align the shapes - do it manually or use this script - https://aescripts.com/alignlayers/ ​
Finally, for movement, create a Null Object and keyframe it such that it moves a distance equal to 1 bar (shape size). Then use the loopOut("continue") Expression on property. Then link the Chord Shapes to this Null.
Copy link to clipboard
Copied
I will try out those suggestions.
Before I start on that, right now I'm working on getting just one chord shape animated. I have markers in the timeline for every chord change. I have it animated properly for when the chord is playing.
I can't figure out where to put the keyframes for when the chord shape enters on the right and leaves on the left.
Copy link to clipboard
Copied
I would use a shape layer for each chord.
Start with a rounded rectangle with this expression added to the Transform Rectangle1>Anchor point:
x = content("Rectangle 1").content("Rectangle Path 1").size[0]/2;
y = value[1];
[-x, y]
If you make sure that the Transform Rectangle1>Position is 0,0 the layer will always expand from the left side.
I haven't got time to tell you the rest but basically, I would tie the size to the in and out points of the layer and animate the layer's position based on a time multiplier. I'll give you more info after I get done with Mothers Day.
Copy link to clipboard
Copied
>I can't figure out where to put the keyframes for when the chord shape enters on the right and leaves on the left.
I meant to say: I can't figure out where on the timeline to put the keyframes for when the chord shape enters on the right and leaves on the left.
Copy link to clipboard
Copied
I would tie the size to the in and out points of the layer and animate the layer's position based on a time multiplier.
I think that will only work if the in/out points are set so the chord only displays while it is playing. But they have to be wider than that so the chord displays before and after it is played.
I haven't figured out yet how to determine the in/out points of the layers.
Copy link to clipboard
Copied
>use the loopOut("continue") Expression
I tried this expression and it worked. It is like magic.
Copy link to clipboard
Copied
It is MAGIC! Plus it works really well for lazy folks like me. 🙂