CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

テンポ設定

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