Thanks to visit codestin.com
Credit goes to github.com

Skip to content

autch/mucc-next

Repository files navigation

mucc-next

P/ECE 標準音源ドライバのミュージックデータコンバータ、mucc を改良したものです。

改良点

  • パートをまとめ書きした際に二つ目以降のパートをコールする構造をやめ、各パートがそのコンテキストでコンパイルされるようにした
    • まとめ書きの多い MML ではファイルサイズが大きくなるかも
    • まとめ書きはないが行数の多い MML では mucc より小さくなるかも
  • データはあるが音符や休符のない (= 0tick) パートを出力しないようにした
    • そのようなパートにループやリピートがあると muslib が無限ループする
    • これで困るのは t ぐらいだろう
  • 構文エラー検出と表示の強化
    • 検知して表示はするがエラーとして中止するのはまだ
  • パート拡張対応
    • 32 パートまで。MML のパート表記は A...Z までなので書ききれない
    • 未使用のパートは出力データに含まれないようにする。結果 MML 上の 'A' + n パートが出力データの n 番目のパートに対応するとは限らなくなった。
    • 互換性のためデータが 6 パートに満たない場合はカラのパートを追加する。
    • 拙作 auPiECE.kpi の extended-channels ブランチ, 同 pceplayer.js, 同 fpkplay で再生できます。
  • l コマンドに付点 . を書けるようにした
  • 拡張パート表記 ?
    • それまでに言及したことのあるすべてのパートに対応する
ABC ...
HIJ ...

? L    ; ABCHIJ に対応する。ABCDEFGHIJ ではない

ABC ...
HIJ ...
  • 拡張コマンド S
    • それを書いたパートのその時点のクロックやオクターブ等を表示する
  • 拡張コマンド W
    • 相対エクスプレッションコマンド (/) の値を指定しなかったときのデフォルトを指定する
    • 初期値は mucc との互換性のため 1
    • FM 音源や PSG/SSG 音源ドライバからの移植が楽になる
  • 音長拡張表記 ^
    • 音符の長さをつなげて書けるようにする
    • いままで a2&a4&a16 とか書いていたのが a2^4^16 で済む
    • 他ドライバからの移植が楽になる
  • コンパイル完了時に各パートの総クロックとループポイントまでのクロックを表示する
    • パートの同期ずれのデバッグに威力を発揮する

上記の拡張コマンドや表記は演奏データとしては書き出されないので、演奏データはパート拡張部分を除けば既存の muslib に完全互換です。

削除した機能

  • アセンブラ様表記のコンパイル(P/ECE開発環境添付の jsbad.s など)
  • 出力データはバイナリファイルのみ、Cソースやアセンブラ形式出力はなし
  • 音符なしでいきなり現れる数字
    • 直近の音符をその数字で鳴らす、という意味らしい
    • PMDで使っているので復活させた
    • a1&1&1&1 のように使う。a1^1^1^1 と比べて最大長制限がない
  • パート中の i コマンド
    • 文中マクロ定義?

コンパイル

Visual Studio 2022 の C++ と MSYS2 gcc 13.1 で確認しています。 CMake でビルドしてください。

ライセンス

MIT

About

An improved compiler for Aquaplus P/ECE standard music sequence driver

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published