Game
Rock Beyond Time
3 years ago

Important formulas for syncing animation to music


Okay, so let's say you've written songs for your game, and you want to sync up the animation to it on Game Maker. Well, there are many ways to go about it, but the key component is this:

audio_sound_get_track_position(BGM)

This little thing tells the computer where in the sound file it is. As such, if audio_sound_get_track_position(BGM)> whatever, do this. If you want it to do something ONCE, I recommend making a second variable. For example, if audio_sound_get_track_position(BGM)> a point in the song, and Bit < 1, make Bit = 1, and do that one thing once.

Now, you could just find out where the sound is on Audacity, but that can get messy in the world of audio-syncing. However, there is one factor that can make your life easier, especially if you're syncing it to a song you wrote: the tempo.

You see, the tempo is measured in Beats Per Minute, and can be easily found in the music-making software you used. The BPM is fine and dandy, but if you want to get real with your code, you need to know Beats per Second. So...

BPS= BPM/60

...and let's say you want to know how long a beat actually is, in seconds, which would be a decimal. Now, there are 60 seconds in a minute, so...

Beat Length= 1/(BPM/60)

Also, for further reference, a "Beat" is one Quarter note. Also, the math can get messy and lead to the decimal equivalents of 1/3 and such, with its infinitely repeating decimal points, so it's just easier on the brain if you let the computer do it.

Now, let's say you want to do an animation loop that matches with the beat, and need to find the proper animation speed, where 0 is NOT moving, and 1 is moving exactly with the frame rate. Well, replace that 1 with the frame rate, and divide all that by the number of frames between beats.

Animation speed= Frames between beats/ (FPS/(BPM/60))

This might be very helpful if you ever want to loop a drum beat or a metronomic movement without having to type out horrendous amounts of code. Maybe, if you're clever.



0 comments

Loading...

Next up

First off, you can't rotate a background with draw_background_tiled. However, you can draw anything on a BIG surface, and a surface can be rotated and doubled up.

So, the infinite floor uses a surface, and now it's not chugging so hard. Look at the FPS.

Just a reminder. It's coming on the 16th, assuming nothing goes wrong.

So, what's the secret to drawing a car?

1. Just draw the car from profile, back, and possibly front.

2. Dig out any Hot Wheels product for reference.

3. Use the reference to figure out how to draw those in-between angles.

Coming soon to another update.

Lemme get some work done with it first, then we'll talk.

I might have gone too far in a few places, and not enough in others.

The only thing harder than animating a set of wheels is making it handle like a set of wheels.

...and making an infinite floor without resorting to the official 3D engine.

I felt some mechanics were underutilized, so I'm making an expansion.

...more or less just a side quest and extra dungeon. No more than that here.

Coming who-knows-when.

Robots fresh off the assembly line from the prosthetics factory.

I call the ones that crawl "Gwendy", after the dolls from Small Soldiers.

What kind of bad guys do you see at a prosthetics factory?

These Leg Gunners are part of the security system.

I could have a part where the factory builds robots for you to beat up, but they're gonna be humanoids. They'd probably be like skinless T-800s.

Trying to do that Infinite Floor thing (technically, it's a trick of the camera), and I think it chugs.

Makes sense, since it's drawing on one surface over and over for each scanline, then putting that on another surface, which puts that on-screen.

Hmm...