Monday, October 29, 2018

music21 v5.5 released

Version 5.5 brings some small but important improvements to music21 and is a maintenance release. V5.5 is the first release to no longer support Python 3.4, so please use Python 3.5 or higher to upgrade.
Important changes and bugfixes.
  1. Chord.commonName gets many improvements, detecting for instance, the differences between dominant-seventh chords and augmented sixths.
  2. much better metadata on Bach Chorals (thanks Norman!)
  3. Stream.voiceToParts() is much improved and gets an optional separateById keyword argument which will only merge voices whose .id matches. -- this is very exciting to me from an analytical perspective and one reason I decided to release now.
  4. Volpiano is upgraded to a full conversion method. Most people will go, "buh??" people who work with Gregorian chant will rejoice.
  5. obj.activeSite is set more reliably.
  6. better error messages if a stream cannot be chordified.
  7. ABC parses all major and minor keys properly -- there were a few bugs especially on sharp keys in minor before. (Thanks @a-papadopoulos )
  8. "Cad64" is now an acceptable RomanNumeral alternative for "I64" for all you theorists out there who cringed when writing it. Resolves to I64 in major context (or as a secondary dominant) and i64 in minor contexts.
  9. bug fixes on rounding approximate durations (such as in MIDI parsing)
  10. converter.parse('tinyNotation: ...', raiseExceptions=True) allows tinyNotation to bubble up anything that prevents reading a token. off by default, but useful for debugging. Expect this keyword to start appearing (w/ default False) for other conversion methods.
  11. Changed: as promised years ago, the default on Stream.recurse() is now NOT to include the caller itself in recursion. Use keyword argument "includeSelf=True" to do so. Recurse keywords are keyword only.
  12. Changed: arguments to Music21Object.contextSites are keyword only. This fixes a few little bugs. Same with Stream.elementsChanged()
  13. MusicXML stores Fingerings properly (thanks @hofst !)
  14. Fixes for extreme pitchbends (very close to wheel minimum) on MIDI.
  15. Dropped bug-fixes for very old versions of Sibelius and MuseScore < 2.0
  16. Added bug catching for MusicXML that gives the shape of the clef ('G', 'F') but no line -- uses sensible defaults. And many other cases in MusicXML where an attribute is empty (as one musicxml writer is now producing)
As always thanks to MIT, the Seaver Institute, and the NEH for funding early development of music21.

Upgrade with “pip install --upgrade music21”