Sobre o projeto

Muse Next é uma recriação moderna do editor de partituras nativo para Windows Muse Pro 2.70, descontinuado, usando a pilha TypeScript, Electron e React, seguindo o princípio de clean-room sem portar código original ou recursos protegidos por direitos autorais. Os objetivos centrais, em ordem, são restaurar a leitura e escrita do formato proprietário de partituras .jcx, a renderização de partituras, a edição e a capacidade de reprodução. A análise reversa confirmou que o .jcx não é binário, mas sim um formato de texto puro baseado em ABC notation com extensões proprietárias do Muse, incluindo style de vozes, diagramas de acordes %%gchord, TAB de guitarra, anotações de notação numerada, entre outros. Por isso, o projeto não usa bibliotecas prontas de parsing ABC, nem adota o mecanismo de notação como modelo interno. A arquitetura usa um pipeline unidirecional: após a decodificação dos bytes, obtém-se o texto-fonte Muse; o lexer gera um fluxo de tokens em dois modos, pitch-mode e tab-mode; em seguida, constrói-se uma AST sem perdas, que pode ser restaurada byte a byte por meio de printAst; depois, a AST é analisada em um Domain Score normalizado, contendo modelos autoritativos como Voice, MusicEvent e Relation; por fim, a serialização produz texto no modo preserve, que restaura byte a byte o original, ou no modo canonical, em formato padrão. Camadas de aplicação, como renderização e edição, só podem depender do Domain, não podendo analisar diretamente o texto JCX nem manipular a AST. As restrições de design incluem: o Scanner apenas faz classificação e estatísticas; ao encontrar elementos desconhecidos, deve preservá-los explicitamente; semânticas UNVERIFIED não entram nos tipos fortes do Domain; a prioridade de evidências é corpus real > documentação de ajuda original > padrão ABC. No diretório, src/domain é o modelo autoritativo e é proibido depender das camadas de formato e renderização; src/formats/jcx fornece conversão bidirecional, incluindo encoding, lexer, ast, parse, serialize e ferramentas de projeção semântica, com ponto de entrada público em src/formats/jcx/index.ts. A API pública oferece loadJcx para ler bytes ou texto em Score, diagnostics, lex e ast; serializeJcx suporta o modo preserve para restauração byte a byte e o modo canonical para saída de texto UTF-8 padrão com cabeçalho %MUSE2. Os marcos M0 a M1.8 foram concluídos, abrangendo o scaffold do Electron, varredura de corpus, documento de especificação JCX, lexer, AST sem perdas, Parser, Serializer e proteções de compatibilidade round-trip, com CI aprovado em três plataformas. O M2 Notation Rendering, congelado em 22/09/2026, implementou a renderização de quatro notações a partir do Domain Score: diagramas de acordes, notação numerada, TAB de guitarra e pauta musical. O Staff depende unidirecionalmente do adaptador VexFlow, a camada de renderização possui uma matriz de testes de contrato, e todo o repositório tem 74 arquivos de teste com 5642 casos aprovados. A próxima fase é o M3 Editor Core, com seleção e cursor, arquitetura de comandos, desfazer/refazer e sincronização visual do código-fonte; o planejamento posterior inclui reprodução, importação/exportação MIDI, layout e distribuição. O desenvolvimento requer Node.js ≥22.12 e oferece comandos como typecheck, test, jcx:corpus-test e jcx:fixture-report; o CI roda em matriz macOS, Windows e Ubuntu. As proteções de qualidade verificam, por meio da matriz de fixtures, seis itens: parse, semantic, preserve byte-identical, idempotent, closure e reparse-clean, além de registrar explicitamente limitações conhecidas como pinned known limitation. O projeto não inclui executáveis do programa original, partituras embutidas ou fontes proprietárias; o corpus é armazenado localmente e excluído pelo gitignore.