{"id":31859689,"url":"https://github.com/autch/mucc-next","last_synced_at":"2025-10-12T15:54:23.622Z","repository":{"id":317863187,"uuid":"1069047243","full_name":"autch/mucc-next","owner":"autch","description":"An improved compiler for Aquaplus P/ECE standard music sequence driver","archived":false,"fork":false,"pushed_at":"2025-10-03T13:25:27.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-03T15:29:05.114Z","etag":null,"topics":["c-plus-plus","piece","piece-me","pmd"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/autch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T10:15:31.000Z","updated_at":"2025-10-03T13:25:30.000Z","dependencies_parsed_at":"2025-10-03T15:29:06.574Z","dependency_job_id":null,"html_url":"https://github.com/autch/mucc-next","commit_stats":null,"previous_names":["autch/mucc-next"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/autch/mucc-next","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autch%2Fmucc-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autch%2Fmucc-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autch%2Fmucc-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autch%2Fmucc-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autch","download_url":"https://codeload.github.com/autch/mucc-next/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autch%2Fmucc-next/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011853,"owners_count":26085006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","piece","piece-me","pmd"],"created_at":"2025-10-12T15:54:21.737Z","updated_at":"2025-10-12T15:54:23.615Z","avatar_url":"https://github.com/autch.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"mucc-next\n=========\n\nP/ECE 標準音源ドライバのミュージックデータコンバータ、mucc を改良したものです。\n\n## 改良点\n\n- パートをまとめ書きした際に二つ目以降のパートをコールする構造をやめ、各パートがそのコンテキストでコンパイルされるようにした\n  - まとめ書きの多い MML ではファイルサイズが大きくなるかも\n  - まとめ書きはないが行数の多い MML では mucc より小さくなるかも\n- データはあるが音符や休符のない (= 0tick) パートを出力しないようにした\n  - そのようなパートにループやリピートがあると muslib が無限ループする\n  - これで困るのは `t` ぐらいだろう \n- 構文エラー検出と表示の強化\n  - 検知して表示はするがエラーとして中止するのはまだ\n- パート拡張対応\n  - 32 パートまで。MML のパート表記は A...Z までなので書ききれない\n  - 未使用のパートは出力データに含まれないようにする。結果 MML 上の `'A' + n` パートが出力データの n 番目のパートに対応するとは限らなくなった。\n  - 互換性のためデータが 6 パートに満たない場合はカラのパートを追加する。\n  - 拙作 [auPiECE.kpi の extended-channels ブランチ](https://github.com/autch/auPiECE.kpi/tree/extended-channels), 同 [pceplayer.js](https://github.com/autch/pceplayer.js/tree/modernize-2024), 同 [fpkplay](https://github.com/autch/fpkplay) で再生できます。\n- `l` コマンドに付点 `.` を書けるようにした\n- 拡張パート表記 `?`\n  - それまでに言及したことのあるすべてのパートに対応する\n```\nABC ...\nHIJ ...\n\n? L    ; ABCHIJ に対応する。ABCDEFGHIJ ではない\n\nABC ...\nHIJ ...\n```\n- 拡張コマンド `S`\n  - それを書いたパートのその時点のクロックやオクターブ等を表示する\n- 拡張コマンド `W`\n  - 相対エクスプレッションコマンド `(`/`)` の値を指定しなかったときのデフォルトを指定する\n  - 初期値は mucc との互換性のため 1\n  - FM 音源や PSG/SSG 音源ドライバからの移植が楽になる\n- 音長拡張表記 `^`\n  - 音符の長さをつなげて書けるようにする\n  - いままで `a2\u0026a4\u0026a16` とか書いていたのが `a2^4^16` で済む\n  - 他ドライバからの移植が楽になる\n- コンパイル完了時に各パートの総クロックとループポイントまでのクロックを表示する\n  - パートの同期ずれのデバッグに威力を発揮する\n\n上記の拡張コマンドや表記は演奏データとしては書き出されないので、演奏データはパート拡張部分を除けば既存の muslib に完全互換です。\n\n## 削除した機能\n\n- アセンブラ様表記のコンパイル（P/ECE開発環境添付の `jsbad.s` など）\n- 出力データはバイナリファイルのみ、Cソースやアセンブラ形式出力はなし\n- 音符なしでいきなり現れる数字\n  - 直近の音符をその数字で鳴らす、という意味らしい\n- パート中の `i` コマンド\n  - 文中マクロ定義？\n\n## コンパイル\n \nVisual Studio 2022 の C++ と MSYS2 gcc 13.1 で確認しています。\nCMake でビルドしてください。\n\n## ライセンス\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautch%2Fmucc-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautch%2Fmucc-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautch%2Fmucc-next/lists"}