【MSX】【MuSICA】【OPLL/MML】疑問

(´∀`(⊃*⊂)<森へお帰り
(猿ヶ森砂丘での挨拶)

嘘です。

最近ちまちまとMuSICAのデータを修正しています。

出来あがったデータをいちいち動画にしてるときりがないので、
mp3にしてサウンドクラウドで公開しています。
https://soundcloud.com/0dqjladk5kcq/sets/my-msx-sounds
(よろしければ聞いてみてください。)

その中で気になったMuSICAの仕様回りを少し


■オクターブ違いデータ

MuSICAは
MSD(テキストファイル)で

チャンネル=ブロック名/回数,....
ブロック名=MML


MMLは ド~シ(C~B)+音調
(例:ドを4分音符分ならすなら、C4)
という形で記述する。

これをBGMデータ(演奏用のバイナリデータ)に変換する場合は
ノート番号(オクターブ1のド~オクターブ8のBまでを連番で示したもの)に展開する。

このため、同じブロック名を流用していても
オクターブが違うとバイナリデータでは別ブロック扱いになる?(データ量が増える?)

FM1=F1,A1
FM2=F2,A1
(中略)

F1=o4
F2=o4
A1=ABCDEFG

とした場合と

FM1=F1,A1
FM2=F2,A1
(中略)

F1=o4
F2=o5
A1=ABCDEFG

とした場合で、データサイズが違う?
(後者のデータが多くなる?)


■ 発音長ずれ

MuSICAでは、発音長をフレーム数で記述するようで、
フレーム数に展開する際には、1フレーム未満の端数を分散します。

例えば64分音符が1.5フレームだった場合、
MML:C64C64 → データ:Cを1フレーム、Cを2フレーム
のように展開するようです。

この発音長の端数処理もブロックデータ単位なので、

FM1=A1/128
FM2=B1
(中略)
A1=F64
B1=C1 C1


とした場合、音がずれるけど

FM1=A1
FM2=B1
(中略)
A1=F64F64F64F64(中略)F64F64F64F64
B1=C1 C1

と、手書きでF64を128個並べた場合は、発音タイミングはずれない。


短いですが、メモ的な感じで。