リズミカルおもちつきSPなどで使われているのは、BGMVARを使った方法です。
例えばT120[$0=0R16 $0=1R16]のようなMMLを曲と同時に再生し、BGMVARで$0の値を監視すれば16分単位でタイミングが分かります。
2つ目がMILLISECを使う方法です。
例えば16分音符1つ分が何ミリ秒か計算しておき、前回ノーツを流したタイミングからその秒数だけ経過したら次のノーツを流す、というようにやります。
この方法だと途中から24分にしたり、などということが簡単にできます。
3つめはMAINCNTを使う方法です。やり方はMILLISECとほぼ同じなんですが、3号では1フレームが正確に1/60秒じゃなかったりするので難しいです。
NewリズミカルおもちつきSPではMILLISECを使っていますが、途中のテンポ変更の検知にBGMVARを使っています。
MMLを1文字ずつ調べてTコマンドを探し、テンポを配列に入れておいて、その位置に$7=1,$7=2などど印を入れ、再生中に$7が変わったらテンポが変わったと分かります。
でも譜面データの中にいつテンポが変わるかを書いておいた方がスムーズに動きますし、楽だと思います。