Releases: gregchapman-dev/converter21
Work with musicdiff v4.2.0
Very small update to work with musicdiff v4.2.0.
Bugfixes
Humdrum export: At start of export, fix up various duration problems (seen e.g. after
import of a Photoscore-generated MusicXML file) that would prevent Humdrum export
from succeeding.
Humdrum/MEI export: There are a lot of custom attributes that we add to various objects
in the score to keep track of export status. Remove them at end of export.
MEI export: Put xml:id on (almost) everything in the exported MEI file.
MEI export: Clean up ChordSymbol support.
MEI export: There is no heavy-light
barline in MEI. Rather than fail when we try to
export one, just export a normal barline.
MEI export: If voice.id is a string, put it in layer@label
, not layer@n
(which must be a
number).
Shared: SplitComplexRestDurations can now handle rests that have a different visual and
gestural duration (in music21 terms, these are rests with an unlinked duration).
Shared: M21Utilities has a lot more stuff in it now. Some is moved from other places in
converter21, so it can be shared with other parts of converter21 (or even with clients),
and some is new (like the new fixupBadDurations API, used by the Humdrum exporter; see
above).
All: lots of little bugfixes.
Support chord symbols (and bug fixes)
v3.2.0 Last minute build script cheatsheet fixes.
Actually turn the MEI writer on
I ran several thousand scores through the MEI writer, and then released it with the one enabling line commented out. Sigh...
converter21 v3.1.0 (lots of fixes)
Changes since 3.0.1:
All importers/exporters:
- Regularize invisible vs regular vs missing m21 Barlines.
All importers:
- Fix handling of 'title' vs. 'movementName'.
All exporters:
- Fix handling of "play only" MetronomeMarks.
- Regularize treatment of absoluteY and placement.
- Handle Grace vs Appoggiatura more carefully.
- Handle gaps by exporting invisible rests.
- Obey chordSymbol.writeAsChord during export (ChordSymbol is not yet supported, but
if .writeAsChord is true, we'll emit the itself).
- Fix handling of staves not in any staffGroup.
MEI importer/exporter:
- Support lyric placement
- DatePrimitive range edge that is also a range needs to be
"[date1..date2]", not "date1/date2".
We can now import both, but export always produces "[date1..date2]".
- Fix handling of tuplet.bracket and visibility.
MEI importer:
- Fix timestamp computation (notice meter changes inside layers before computing
any timestamps in that measure).
- Allow to be used as a @startid
or @endid
in a staff item (e.g. ).
MEI exporter:
- MetronomeMark implicit text no longer emitted in .
- Fix duplicated clefs/keySigs/meterSigs; if you emit in staffdef, don't emit
again later at start of layer.
- Actually emit clef/key/timesig changes that aren't at start of measure.
- @midi.bpm
must be exported as a string (fixes an MEI export crash).
- If @tstamp2
is going to be in a previous measure, don't crash, just put it at the beginning
of this measure.
- Add missing @isodate
for "datePublished".
- Fix handling of spanners that start and end in different Parts (we were crashing).
- Emit ornament accidentals only if visible (there is no @accid.ges
on
ornamentals, unfortunately, or we would use that for invisible accidentals).
- MEI hairpins end at start of @endid
. Unfortunately, music21 DynamicWedges
end at end of dw.getLast(). So we can't use dw.getLast() as @endid
. Instead
we now emit a @tstamp2
at the ending offset of dw.getLast().
Humdrum importer/exporter:
- Fix handling of OMD that is not Tempo (picked up !LO:TX:omd:
import support from
Verovio, then started emitting that in Humdrum export).
- Support export of non-note-associated (i.e. timestamped) dynamics/directions/tempos
by adding a voice full of invisible rests, one of which lands at the desired offset.
This was a Humdrum export feature, but it exposed several Humdrum import bugs that
got fixed as well.
Humdrum importer:
- Fix handling of transposing instruments.
- Fix handling of preferred vs forced placement of dynamics and hairpins.
Tests:
- Modify all diffall and showdiff tests to report mismatched number of parts before
diffing to avoid musicdiff exception.
- Visualize note offset differences (new musicdiff v3.1 feature) in diffall tests.
- Print out exception information in diffall tests.
A few bugfixes
A few metadata fixes (mostly around dates).
A few Humdrum parsing fixes picked up (and translated to Python) from latest humlib.
Add MEI exporter and many improvements/fixes
Changes since 2.0.1:
Require music21 v9 (for several features/fixes)
Add MEI exporter. It exports MEI v5 by default, but can be asked to export MEI v4.
- MEI export is feature-equivalent with MEI import.
MEI import improvements:
- import MEI v4 and v5 (obeying mei@meiversion
)
- refactor to share code with MEI exporter and have instance-based state
- handle nested beams (i.e. grace note beams within another beam group)
- fermata placement (above, below)
- fix some clef bugs
- handle rest positioning (@oloc
/@ploc
)
- fix some octave/Ottava bugs
- fix some gestural duration bugs (including some bugs in tuplets)
- fix @dots.ges
handling
- add @dur.ppq
handling
- fix activeMeter tracking
- pad layer with spaces if it is shorter than the longest layer in any staff in the measure
- fix handling of missing note@oct
/[email protected]
- handle missing tuplet@num
and tuplet@numbase
(default num=3, numbase=2)
- allPartNs now only contains the staffs defined in the initial scoreDef
- allow first scoreDef to be inside first section
- better handling of scoreDef keysig/timesig vs staffDef (and vs missing staffDef)
- better handling of measure@left
(ignore it more)
- better handling of repeat starts
- support ending "numbers" that are non-numeric
- support @unitdur
in tremolos (bTrem/fTrem)
- fix bug when there are grace notes within a tuplet
- add @dur.default
handling, and rework @dur
/@dur.ges
/<mRest>
/<mSpace>
/maxBarDuration handling
- better handling of missing @staff
- handle verse@label
just like <verse><label>
- handle ties much more accurately, including chord@tie
- stop making up measure numbers
- support unpitched notes, fix percussion clefs, staff lines != 5
- support placement of articulations (e.g. staccato)
- support hairpin with @startid
, @endid
, or both
- support dir/dynam/tempo with @startid
instead of @tstamp
- generate music21 StaffGroups (and PartStaffs if appropriate)
- support tuplet display details
- import of metadata
Humdrum export improvements:
- support ornaments
- support ottavas
- fix export of tuplets, including carefully choosing non-power-of-two recip
- support tuplet display details (*{X}tuplet
/*{X}brackettup
)
- fix export of articulations with placement
Humdrum import/export improvements:
- support center justification
- tweaks to systemdecoration/StaffGroup code, now shared with MEI import/export
- some metadata fixes
Improvements to all importers/exporters:
- support ornament accidentals (I implemented this in music21 v9)
- support page and system breaks
- improve ottava support (I improved Ottava support in music21 v9)
- support delayed turns (I implemented this in music21 v9)
Ease up on music21 dependency: v8.1 is fine
v2.0.1 Ease up on music21 dependency: v8.1 is fine.
Add new MEI importer
There is a new MEI importer in this release, as well as many improvements to Humdrum import/export.
Humdrum import changes (since converter21 v1.4.1):
Support lyrics with *ij (italicize them)
Support ottavas
Support visual duration of tuplet members
More accurate trill/turn/mordent placement
Better duplicate clef handling
More accurate dynamics placement/duration
Dynamics are actually per part (not per staff)
Handle text direction before first barline of first measure
Better unescaping of text
Fix beaming to use visual duration
Improve tempo handling
Improve fermata handling
Improve barline handling
Recip-less grace notes are stemless quarter-notes
Improve stem direction handling
Improve key/keysig handling
Rewrite accidental visibility handling
Humdrum export changes (since converter21 v1.4.1):
Support export of dotted/dashed barlines
Support export of sf and sfz to 'z' and 'zz'
Support visual duration of tuplet members
Improve tempo handling
Improve cresc/decresc (a.k.a. hairpin) handling
More accurate dynamics placement
Dynamics are actually per part (not per staff)
Better escaping of text
Recip-less grace notes are stemless quarter-notes
Fix grace-note positioning around clef/timesig changes
MEI import changes (starting from music21 v7's MEI importer):
Support <fermata>
, <trill>
, <mordent>
, <turn>
, <octave>
, <arpeggio>
, <keysig>
, <metersig>
Support tremolos <bTrem>
and <fTrem>
Support <hairpin>
, <dynam>
, <tempo>
, <dir>
, <ending>
Support staff items with @tstamp
/@tstamp2
(things like hairpin, mordent, etc)
Improved text handling in elements:
- Support text that is broken up by embedded elements, or embedded in a
<rend>
element - Support styled text (as described by
<rend>
element)
Improved beaming (including beam breaks)
Support accidental display status, location, style
Improved lyrics support
Improved note/chord/rest support:
- Support cue-sized notes/chords/rests
- Support accented vs unaccented grace notes/chords
- Support colored notes/chords/rests
- Support note head shape, stem direction/length/visibility
- Support invisible notes/chords/rests
- Better handling of articulations/etc on notes within chords
Improved clef handling
Improved instrument handling
Simple support for editorial elements (user selection for <app>
and <choice>
is not yet implemented, I just make a reasonable default choice): <app>
, <lem>
, <rdg>
, <choice>
, <corr>
, <reg>
, <add>
, <del>
, <damage>
, <expan>
, <orig>
Back out an incorrect fix
Remove code that treats 'Q' as equivalent to 'q' in Humdrum files.