【MSX】【MuSICA】【OPLL/MML】疑問
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

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

2019-05-14 15:13
    (´∀`(⊃*⊂)<森へお帰り
    (猿ヶ森砂丘での挨拶)

    嘘です。

    最近ちまちまと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個並べた場合は、発音タイミングはずれない。


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


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。