XaiJu
assasinmonkey
assasinmonkey

patreon


140 BPM Apple - Progress 1 & How-I-did-it

Lately I got caught up wanting to try my hand at BPM synced animation. I've done short loop animations before, but hadn't synced it up to specific beats per minute before. I've been doing a bit of research into what it'd take. I'll try to break some things down I've figured so far. This is mostly the technical preparation part to art/animation. Sometimes it's better to go in prepared right?!

I've kept it relatively simple so far. As I'm still learning about this myself and these are mostly my current discoveries I've made. I'm not a regular animator haha. So this is just a short looped animation that's matched to a specific Beats per Minute and a set Frames per Second. Nothing too complex and more to test this concept. I timed the frames in Photoshop and put the frames in Premiere to export as a GIF.

* Line Boil is the "wiggle" you in the lines which comes from imperfect lines, for example when tracing one frame over the other inaccurately.

Priorities:

Finding the beats:

 Some BPMs are easier to do than others. I went with 140 BPM because I liked that speed but it also forced me too face some problems! I was trying to figure out an universal approach that works for any BPM.

So first we need to translate the beats per minute to seconds, because our frames work with seconds. A simple divide BPM by 60.

140/60 = 2.33333...
120/60 = 2
So you have about 2 beats per second. Works easier with 120 BPM because it's a rounded number and divisible by 2s (which is perfect for animation since that often does too), but just because a number is rounded doesn't make it easy to translate to frames per second. It may not always divide evenly once you go into frames. 

How many frames per beat:

 So now you have a number to divide your FPS by. While 24 is probably the most common FPS for animation, I used 25 because Adobe likes their GIFs that way. (Might be that's GIFs in general? Maybe because they assign time per frame, and 1 second divides better with 25 than 24. e.g. 1/25 = 0.04 vs  1/24 = 0.0416666.... BUT I don't know, I just know that Premiere makes me do this)

Anyhow:
25/(140/60) = 10.7142857143
25/(120/60) = 12.5

As you can see, 120 BPM gives you a more clean number. 1 beat every 12.5 frames. If it was in 24 FPS it'd be per 12 frames exact.

Alternative you can also write it as:
60/140*25 = 10.7142857143

How to keep it looped:

The problem with non-whole numbers is that after a while your frames start going out of sync with the beat if you loop it on just the first beat. While this is not a problem for 120 BPM at 24 FPS because it's every 12 whole frames, that's the exception and I want to be able to figure out any BPM.

You can either have the BPM line up on an exact frame or an exact second. (because your FPS will always line up with whole seconds) So basically, find the earliest/smallest whole number for your BPM.

Finding a whole second to loop on:
We know how to find the amount of beats in a single second with:
140/60 = 2.33333...
I'll just add a *2 behind that to step forward to the next second and see if it has a round number.
140/60*2 = 4.66666....
140/60*3 = 7

Now we know that every 7th beat is exactly on the 3rd second. That's where it can loop earliest from this perspective. But now lets double check if there's no smaller frame number where it can loop!

Finding a whole frame to loop on:
Using the same logic as above, instead I look at what frame every beat is, starting from 1.
25/(140/60)*1 = 10.7142857143
25/(140/60)*2 = 21.4285714286
25/(140/60)*3 = 32.1428571429
25/(140/60)*4 = 42.8571428571
25/(140/60)*5 = 53.5714285714
25/(140/60)*6 = 64.2857142857
25/(140/60)*7 = 75

At the 7th beat we get 75, which we also divide by 25 to confirm (the FPS). This proves that 3 seconds is indeed the shortest endless loop you can make for 140 BPM at 25 FPS where it will always stay on beat. (Computer performance stutters not permitted) So now I at least know what I need to work with and what I can focus on.

The above list also shows you on which frame the beat drops. Since they're not whole numbers you'll end up having to skip or jump a frame to "catch" up with the beat. But eventually every 3 seconds it'll line back up to where it started, by itself. Although it will never feel as precise as a BPM and FPS that lines up perfectly every single beat, this is the closest we can get.

It also gives you an idea of how many frames you need to draw for each beat. Which in my simple bounce is the smallest needed. Since I'm animating on 2s here (1 drawing lasts 2 frames) I need at least 6. Where the 6th frame is there to round it up. I made this additional frame the "static" grounded pose, while the remaining frames were used for the motion of the bounce.

Final words:

In the Photoshop screenshot you can see the extra frame's timeline at the bottom only appears on some of the bounces in this 3 seconds, to help line it up at the end. So every few bounces she stays in the lower position a frame longer. This is something that may impact the animation a bit once it has properly animated hair bounce and such, but that's a future discovery to be made if I continue this project. I'm also still not entirely sure if I should round the beats down or up to a whole frame...

PS: A tip if you use Photoshop's timeline, since it isn't the most friendly to animate in. The squares on the timeline show when each drawing is visible. I put these keyframes on the Group folder, not the drawing layers directly. This means I can just drop new drawings into the group without having to annoyingly copy paste each keyframe over. This would've been a whole lot easier to do in After Effects, tho or any other dedicated animation/motion program.


I'm not a trained animator, but this is what I've figured so far and I believe should work with most any set BPM. Maybe there's easier solutions for some of it or different approaches a professional animator would do. But I hope you found this fun to read, informative and maybe even useful?! 

Anyhow, I wanted to share my discoveries.
Perhaps one day I'll actually fully animate those 6 whole frames, instead of making just 2 and stretching them haha. 

 Pull up a 140 BPM song and watch Applejack bounce to the beat.

140 BPM Apple - Progress 1 & How-I-did-it 140 BPM Apple - Progress 1 & How-I-did-it 140 BPM Apple - Progress 1 & How-I-did-it 140 BPM Apple - Progress 1 & How-I-did-it 140 BPM Apple - Progress 1 & How-I-did-it

More Creators