このプロジェクトについて

Muse Nextは、メンテナンスが停止したWindowsネイティブのMuse Pro 2.70楽譜エディタの現代的再実装であり、TypeScript、Electron、Reactの技術スタックを採用し、クリーンルーム原則に従って元のコードや著作権リソースを移植しない。中核目標は、優先順位に従って、独自楽譜形式.jcxの読み書き、譜面レンダリング、編集、再生機能を復元することである。 リバースエンジニアリング分析により、.jcxはバイナリではなく、ABC記譜法をベースにMuse独自の拡張を重ねたプレーンテキスト形式であり、声部スタイル、%%gchordコード図、ギターTAB、簡譜注釈などを含むことが確認された。そのため、プロジェクトは既存のABC解析ライブラリを使用せず、譜面作成エンジンを内部モデルとしても採用しない。 アーキテクチャは単方向パイプラインを採用:バイトデコード後にMuseソーステキストを取得し、字句解析器を経てpitch-modeとtab-modeの二重モードトークンストリームを生成し、ロスレスASTを構築。printAstによりデコード後のテキストをバイト単位で復元可能。その後、Voice、MusicEvent、Relationなどの権威モデルを含む正規化されたDomain Scoreに解析され、最後にpreserveモードで原文をバイト単位で復元するか、canonical標準形式のテキストとしてシリアライズされる。レンダリングや編集などのアプリケーション層はDomainのみに依存し、JCXテキストを直接解析したりASTを操作したりしてはならない。 設計上の制約として、Scannerは分類統計のみを行い、未知のものは明示的に保持しなければならず、UNVERIFIEDセマンティクスはDomainの強型付けに入らず、証拠の優先順位は実際のコーパス>元のヘルプドキュメント>ABC標準とする。 ディレクトリ内のsrc/domainは権威モデルであり、形式やレンダリングなどの層への依存を禁止。src/formats/jcxは双方向変換を提供し、encoding、lexer、ast、parse、serializeとセマンティック投影ツールを含み、外部エントリはsrc/formats/jcx/index.ts。公開APIはloadJcxでbytesまたはテキストをScore、diagnostics、lex、astに読み込み、serializeJcxはpreserveモードでのバイト単位復元とcanonicalモードでの%MUSE2ヘッダー付きUTF-8標準テキスト出力をサポート。 マイルストーンM0からM1.8まで完了。Electronスキャフォールド、コーパススキャン、JCX仕様ドキュメント、字句解析器、ロスレスAST、Parser、Serializer、ラウンドトリップ互換性ガードレールを含み、3プラットフォームのCIで合格。2026-09-22に確定したM2 Notation Renderingでは、Domain Scoreからコード図、簡譜、ギターTAB、五線譜の4種類の記譜レンダリングを実現。StaffはVexFlowアダプタを介して単方向依存し、レンダリング層には契約テストマトリックスがあり、全リポジトリ74テストファイル5642テストケースが合格。 次のフェーズはM3 Editor Coreの選択カーソル、コマンドアーキテクチャ、アンドゥ・リドゥ、ソースコード可視化同期。その後、再生、MIDIインポート・エクスポート、レイアウト、配布を計画。開発にはNode.js ≥22.12が必要で、typecheck、test、jcx:corpus-test、jcx:fixture-reportなどのコマンドを提供。CIはmacOS、Windows、Ubuntuのマトリックスで実行。品質ガードレールはfixtureマトリックスを介してparse、semantic、preserve byte-identical、idempotent、closure、reparse-cleanの6項目をチェックし、pinned known limitationで既知の制限を明示的に登録。プロジェクトには元のプログラム実行ファイル、内蔵楽譜、独自フォントは含まれず、コーパスはローカル保存されgitignoreで除外される。