Repository navigation
FAQ
Because strict recognition plus an explicit diagnostic is what makes croma defensible and low-artifact. A silent best-effort guess is indistinguishable from mimicking another tool's quirks; a warning is what makes recovery transparent. The parser follows one three-tier rule:
- Default: reject — input that doesn't match the ABC 2.1 grammar is not silently accepted.
- Recover and warn — only for a clear intention spoiled by a trivial, mechanical slip (a stray space/comma); recovery is never silent.
- Otherwise: strict reject.
Repair of genuinely loose source is the formatter's job, not the parser's:
croma fmt --auto-fix sanitises it into canonical spelling the strict parser
then reads cleanly (Formatter). Full policy:
AGENTS.md.
croma targets ABC 2.1 as the stable spec; ABC 2.2 is treated as a draft
compatibility mode. Pass --abc-2.2-draft to croma xml / check / fmt /
dump to interpret a source against the ABC 2.2 draft. The default everywhere is
strict ABC 2.1.
- Speed — compiled, not interpreted: 7,081 ABC→MusicXML files/s and 43,247 parse files/s over the 10k corpus (Benchmarks).
-
Embeddable —
croma-coreis a zero-dependency, crates.io-publishable library, callable from any language via a native binary, not a script that needs a Python runtime. -
Safety — memory-safe with
unsafeforbidden workspace-wide, a pinned toolchain, andclippy -D warnings+cargo fmtgates.
See abc2xml-Comparison for the head-to-head with the reference converter.
Yes. croma is licensed under Apache-2.0, so you may use it freely, including
in commercial products. In return, any redistribution or derivative work must
retain the attribution in
NOTICE (per section 4 of the
license) — i.e. commercial users must credit croma. The software is provided
as-is, without warranty, and the author carries no liability (sections
7–8). See LICENSE.
No. PDF rendering and engraving layout are out of scope. croma converts between ABC and MusicXML, formats ABC, and provides editor tooling. To engrave, feed croma's MusicXML output to a notation/engraving tool.
-
Bugs / feature requests: open a
GitHub Issue. croma is a local,
offline toolkit, so the most useful reports are crashes, hangs, or wrong/noisy
output on a specific input — include the ABC (or MusicXML) that triggers it and
the
cromacommand you ran. -
Security vulnerabilities: do not open a public issue. Use GitHub's
private vulnerability reporting — the repository's Security tab → Report
a vulnerability. See
SECURITY.md.
More help with diagnostics and build issues: Troubleshooting.
croma — licensed under Apache-2.0.
Commercial use is allowed but must retain the attribution in
NOTICE (license §4); provided
as-is, without warranty or liability (§7–8).
Repository · crates.io · docs.rs · Issues · docs/
Start here
Use it
Capabilities
Why trust it
Help