这个项目能做什么
Muse Next 是对已停止维护的 Windows 原生 Muse Pro 2.70 乐谱编辑器的现代重制,采用 TypeScript、Electron、React 技术栈,遵循 clean-room 原则不移植原代码或受版权资源。核心目标按序为恢复私有乐谱格式 .jcx 的读写、谱面渲染、编辑与播放能力。
逆向分析确认 .jcx 并非二进制,而是以 ABC notation 为基础叠加 Muse 私有扩展的纯文本格式,包含声部 style、%%gchord 和弦图、吉他 TAB、简谱标注等。项目因此不使用现成 ABC 解析库,也不把制谱引擎作为内部模型。
架构采用单向管线:字节解码后得到 Muse 源文本,经词法器得到 pitch-mode 与 tab-mode 双模式 token 流,再构建无损 AST,可通过 printAst 逐字节还原解码后文本,随后解析为归一化 Domain Score,包含 Voice、MusicEvent、Relation 等权威模型,最后序列化为 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、round-trip 兼容性护栏,并在三平台 CI 通过。2026-09-22 封板的 M2 Notation Rendering 已实现从 Domain Score 出发渲染和弦图、简谱、吉他 TAB、五线谱四种记谱,Staff 通过 VexFlow adapter 单向依赖,渲染层有契约测试矩阵,全仓 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 六项,并以 pinned known limitation 显式登记已知限制。项目不包含原程序可执行文件、内置乐谱、专有字体,语料本地保存并被 gitignore 排除。
评论
0 评分人数达到10人后显示
登录后参与讨论。