(´∀`(⊃*⊂)<森へお帰り
(猿ヶ森砂丘での挨拶)
嘘です。
最近ちまちまと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個並べた場合は、発音タイミングはずれない。
短いですが、メモ的な感じで。