FM音源の発音時間は自分自身に内蔵されたタイマ割込みを使って制御するようにします
まずMMLの時間分解能は4/4拍子の4分音符の長さ(1拍)を480(Ticks/beat)としています。
つまり480回タイマ割込みが入る長さを4分音符とします
・・・(1)
この楽譜データをX(bpm)の速度で演奏するためには毎分480X回(毎秒8X回)の割込みが必要
・・・(2)
YM2151の内蔵タイマAは10ビット長のアップカウンタで原振Φm=4MHzのとき
タイムアウトの繰返し周波数foutは
・・・(3)
(Nはタイマ設定値)(2)と(3)は等しいのでそこからNについて解くと
・・・(4)
となりました。
BPM(X)とカウント設定値(N)の関係をグラフにしてみると、実用的なテンポ(50~300bpm)の範囲で十分カバーしており、カウンタ長、プリスケーラ値は綿密に設計されたもののようです