Limits
What the conversion cannot do yet, and what it leaves behind on purpose. Everything here is a known gap rather than a surprise, and the first three are the ones most likely to be noticed.
Tuplet notation
Durations are stored exactly as rationals in quarter-note units, so a
triplet inside a measure is the right length and the measure adds
up. What is missing is the notation: no
<time-modification> and no <tuplet>
bracket is written, so the score prints the notes at their plain values
without the "3" over them. Playback is right; the page is not.
More than one voice on a staff
Every event is written to voice 1. A staff that holds two independent melodic lines — the usual way of notating a passage that needs different rhythms at once — comes out as one line, in time order. Split such a staff into two staves in NoteWorthy Composer before converting if the voices have to survive.
Page size
The page is A4, 210 by 297 mm. NWC's own PgSetup width and
height fields are not read, so a score set up for US Letter is laid out on
A4. The margins are read, and each side separately.
Not yet validated
Two paths have code and no evidence: lyrics, which are emitted with their
syllabic types, and flow control — coda, segno, D.C., D.S., Fine. Neither
has been checked against a golden score containing the corresponding NWC
records, so treat their output as untested rather than as supported.
Warnings from those paths are worth reporting, and a small
.nwc file that exercises them is the most useful bug report
of all.
On purpose
Graphical layout is not reconstructed: absolute positions, staff spacing, per-element font sizes and page breaks all go. The conversion keeps the order of importance it was built around — notes and rhythm, then voices, measures, articulations, dynamics, lyrics, structural markings, instrument information, and only then layout. A notation program will lay the score out its own way, which is usually better than a copy of another program's pagination.
Operationally
- Batch conversion is sequential. One file at a time, in the order given; there is no parallel mode. A large library converts at the speed of one core.
- No schema validation inside. The generated document is not checked against the MusicXML DTD or XSD.
--validateis a different thing: it checks the score's own consistency — pitches, ties, slurs, measure durations, empty staves. For schema conformance, usexmllintwith the MusicXML XSD, or import the file into a notation program. - Only the NWC 2.x container. The file is checked against its magic signature and inflated with zlib before anything else happens, so something that is not an NWC 2.x score is refused as invalid input rather than half-converted into a plausible-looking file.
- NoteWorthy Composer is not involved. That is the point of the tool, but it also means the converter cannot fall back on NoteWorthy Composer for a record it does not recognise; such a record becomes an unsupported event and a warning.
Reporting a score that goes wrong
Bugs go to the
CPAN request tracker
or the GitHub issues.
Include the diagnostics code and, if you can, the smallest
.nwc file that shows the problem — a trimmed score is far
easier to act on than a whole movement, and much easier than a
description of one.
nwc2musicxml --debug Pilgrim.nwc 2> debug.txt