Yes, time+floats tends to go a little off all the time. If you are able to have the exact length of a beat in a float, then there is a way that doesn't make bigger and bigger errors over time.
Heres some pseudo-code:
Note that the TIME variable has to be some very precise timer. I don't think MMF2's timer is precise enough, but there are a few extensions that might be of use. This *should* never go out of sync.
if TIME is greater or equal to NEXT_BEAT
You have a beat!
NEXT_BEAT = NEXT_BEAT + TIME_BETWEEN_BEATS
Also, if it is critical that your sounds are very precise then you should raise the FPS from 50 to something around 100 or more.
If you leave MMF2's FPS at 50 you can in the worst case get a delay in the sound for up to 1/50th of a second. If you raise it to 100 the max delay will be around 1/100th of a second.