nice job!! I initially tried to place every single obstacle for my game but decided about 1/3rd of the way through... nope. its definitely very time-consuming and difficult to get it to line up on the beat.
if you do decide to try another rhythm game, the way i've found works best is to track the framecount and do some math to figure out what modulo(%) will evenly split up the beats like
if frame_count % 60 == true {
instance create obstacle etc etc
anyways it was super fun and i really like geometry dash too. also liked the little pixel explosion visual effect everytime you jump :)