Revision history for Music-NWC2MusicXML
0.002.2 Fri Oct 30 04:14:18 PM EDT 2026
[ Bug Fixes ]
- Parser: NWCTXT files produced by some NWC versions spell the hairpin
dynamic record as DynamicVariance instead of the abbreviated DynVariance.
Added DynamicVariance as an alias in the dispatch table so crescendo,
diminuendo, and hairpin-off markings are parsed correctly from both spellings.
0.002.1 Mon Oct 12 04:14:34 PM EDT 2026
[ Bug Fixes ]
- NWC TempoVariance:Fermata records were emitted as a text direction
(<words font-style="italic">Fermata</words>) instead of the correct
MusicXML <fermata/> notation element on the decorated note or rest.
Fermata symbols now appear as <notations><fermata/></notations> on the
sounding event that immediately follows the TempoVariance:Fermata record.
0.002.0 Fri Oct 9 08:39:33 PM EDT 2026
[ Bug Fixes ]
- MusicXML::_annotate_events: slur_stop was placed on the last note carrying
the Slur token rather than on the landing note (the first following note
without Slur). For the common single-note slur this produced a zero-length
arc with start and stop on the same note.
- NWC::read: suppress autodie on the open() call so the "Cannot read file"
croak fires correctly on Cygwin, where -r returns true for chmod 0000 files
due to imprecise Windows ACL mapping.
fixes https://matrix.perl-magpie.org/results/dbc4dafe-7e31-1014-904b-aa3c0773776a
[ Enhancements ]
- Score::validate now performs per-staff checks when --validate is passed:
empty staff detection, measure-duration consistency against the active
time signature, unmatched tie detection, and unclosed slur detection.
0.001.1 Fri Sep 19 12:00:00 PM EDT 2026
[ Bug Fixes]
- Fix Test Dashboard URL
- Bump minimum version of Params::Validate::Strict
fixes https://matrix.perl-magpie.org/results/c463e98e-b3b3-11f1-9d51-cce2e4961366
0.001.0 Fri Sep 18 12:49:11 PM EDT 2026
Initial CPAN release. Fully functional NWC-to-MusicXML conversion pipeline.
Core modules:
- Music::NWC2MusicXML -- top-level facade; single-file and batch conversion.
- Music::NWC2MusicXML::NWC -- NWC 2.x binary container decoder (zlib decompression).
- Music::NWC2MusicXML::Parser -- NWCTXT text parser producing Score/Staff/Event trees.
- Music::NWC2MusicXML::Score -- internal score model.
- Music::NWC2MusicXML::Staff -- internal staff model.
- Music::NWC2MusicXML::Event -- internal event model with exact rational durations.
- Music::NWC2MusicXML::MusicXML -- MusicXML 4.0 generator.
- Music::NWC2MusicXML::Diagnostics -- i18n warning/logging subsystem.
- bin/nwc2musicxml -- command-line interface.
MusicXML features emitted:
- Notes, chords, rests (all NWC durations; dotted, double-dotted, triplets).
- Grace notes (<grace/> element; duration omitted per MusicXML schema).
- Slurs (numbered 1-6 for simultaneous arcs), ties, articulations, ornaments.
- Clef, key-signature, and time-signature changes (initial and mid-staff).
- Transposing instruments (<transpose><chromatic>).
- Tempo and tempo-variance directions (metronome, rit., accel., etc.).
- Dynamic markings with per-staff MIDI velocity (DynVel) mapping.
- Hairpin crescendo/diminuendo wedges.
- Text directions, flow-control marks (coda, segno, D.C., D.S., Fine, ...).
- Lyrics with syllabic type (begin/middle/end/single).
- Part groups (bracket and brace) from WithNextStaff flags.
- MIDI channel, program, volume, and pan from NWC staff properties.
- Visible/hidden staves (print-object="no" on part-name).
- Custom ending barlines from NWC EndingBar property.
- Asymmetric page margins (Left/Right/Top/Bottom from PgMargins).
- Word-font and lyric-font defaults from NWC Font records.
- Score metadata: title, author, lyricist, copyright, comments.
- Repeat barlines (MasterRepeatOpen/Close, LocalRepeatOpen/Close).
- Double, section-close, and other barline styles.
CLI features:
- Single-file and batch conversion.
- Recursive directory scanning (--recursive).
- Selectable output directory (--output-dir).
- Overwrite guard (--overwrite).
- Warning log file (--warnings).
- Extended consistency validation (--validate).
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)