0 votes

So I am pretty new to godot, I want to make something special for my gf's birthday.
Please take a look at this video:
https://www.youtube.com/watch?v=XV4kAvQOVp8
how would i achieve this particle effect syncing with music in godot?

I guess one particle node cant do this, can it?
I need like 50 nodes right?

Another thing is how would you go about syncing the music?

I am thinking about using python Librosa library to find out the beat time copy the list of time as an array to GDscript.

If you have better ideas, please share, thanks guys.

in Engine by (16 points)

2 Answers

0 votes

you will have to extract the audio waveform high/low points and feed that to your particle emitter.

I have done exactly this years ago on after-effects. But no idea how to extract the audio points in godot...

by (360 points)

Thank you for helping.

check my updated answer.

0 votes

ok
so
I used a python library called librosa to get the time stamp of the beats. I then used that info to sync my particle to the music.
At the beat, I change the size, speed ,and glowing of the particles exponentially.

meta code:
loop:
size = size * factor
you can check out the result here:
go to 1:27

https://youtu.be/G5XSsBw2mhg

Again, this is my first time making any game, dont expect too much.

by (16 points)

I guess librosa gave you the beat points.... That effect could have been achieved with a simple timer at the same beat as the music (assuming the song keeps a solid beat)

extracting the audiowave up and down points relative to muted (zero volume) give you a uint range you can extrapolate for effects like a visual mixer

so in your case the balls would grow and glow relative to their beat strength and timming in music giving a more dynamic visual feedback, rather than just beat timming =)

check around 0:45 https://www.youtube.com/watch?v=cRMvNfJfLnY
srry its a really old video lol

game is looking good!

that video is effect is cool, how did you make that?

I was thinking about using volume as well, librosa can do that. I can pick a time point where is relative volume is higher than its neighbors and use that as a point to do something in the game.
Just like you said, it would be less boring than only beat timing.

If i ever make any music game in the future, ill defiantly experiment that idea.

that was a .... fun... project haha (syncing lyrics was hell)

but I used the general waveform as the emitter position, so the particle emitter would bounce to the beat of the music
than I split high and low beats and got their relative up/down points in every second of the waveform (thats a lot of points) and shoot them in oposite directions
so in the video, green is trebble and purple is bass
and the strengh (acceleration) the particle is shot depends on how high it reached on the waveform

so you get that boucing center shooting on both sides different information with just acceleration and beat

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.