Skip to content

Releases: gregchapman-dev/converter21

ABC, Opus, PedalMark support

31 Dec 00:17

Choose a tag to compare

Add import/export of ABC files.
All: Add support for import/export of multi-score files <-> music21 Opus
    Note: MEI supports three different ways to store multiple scores in an
    MEI file: multiple <mei> elements (in <meiCorpus>), multiple <mdiv> 
    elements, and multiple <music> elements.  We can read/write all three.  
    By default we write multiple <mdiv> elements, but you can ask for the
    other choices, by specifying multipleScoresHostTag='music' or 'mei' on
    the write() call.  
    Note: music21's myOpus.write() will generally write multiple files, so
    if you want a multi-score output file, call music21.stream.write(myOpus)
    instead.
All import/export: Add support for PedalMarks.
Humdrum/MEI import/export: Support styled lyrics
Humdrum/MEI import/export: Better color support (notes, lyrics, etc)
Humdrum import: stem direction fixes

RehearsalMark support, etc

18 Jun 23:12

Choose a tag to compare

All: Add support for import/export of RehearsalMarks.
All: More thorough text style support.
All export: ignore impossibly-numbered beams.
Humdrum import: Support .kern files, not just .krn.
Humdrum import: Support default layout style, e.g.
    !!!LO-style:REH:enc=dbox:color=limegreen:fs=200%
Humdrum import: even more syntax fixing (if requested).
MEI export: Fix a bad bug triggered by empty (zero-duration) measures in the
    score being exported from.

Work with musicdiff v4.2.0

04 Feb 21:29

Choose a tag to compare

Very small update to work with musicdiff v4.2.0.

Bugfixes

30 Jan 19:25

Choose a tag to compare

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)

09 Aug 19:59

Choose a tag to compare

v3.2.0

Last minute build script cheatsheet fixes.

Actually turn the MEI writer on

26 Mar 17:09

Choose a tag to compare

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)

07 Mar 19:47

Choose a tag to compare

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

06 Dec 21:01

Choose a tag to compare

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

11 Nov 05:32

Choose a tag to compare

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

20 Jan 18:23

Choose a tag to compare

v2.0.1

Ease up on music21 dependency: v8.1 is fine.