Thursday, September 27, 2012

v.1.3 released; music21 at Grace Hopper

Two important items in the music21 world:

Beth Hadley and music21 at Grace Hopper

If you're in Baltimore, whether you're attending the Grace Hopper Women in Computing conference or not, you'll definitely want to attend Beth Hadley's presentation on "Porting Computer-Aided Musicology using music21 to the Cloud" on Thursday Evening.  Beth has done fantastic work integrating feature extraction, analysis of popular music leadsheets, and (most recently and coming soon) Vladimir Viro's Peachnote extractions of IMSLP with music21 and Amazon Web Services.  She is also a key player in the music21 TheoryAnalyzer tool (with Lars Johnson) that will play a big part in the future of online music theory education.  Beth is a sophomore undergraduate in Computer Science (Course VI) at MIT.

Music21 v.1.3 Released

Music21 version 1.3 has been released, and is available at for Mac (.tar.gz), PC (.exe) or as a Python .egg file.  Upgrading consists of simply downloading the new version and using the installation instructions (  You should not need to uninstall a previous version unless it’s extremely old.

Version 1.3 contains a number of bug fixes, much improved documentation (we’re beginning a rewrite of our user’s guide over the next few months), and new features.  Of particular importance is greatly increased support for Lilypond output, support that will continue to expand soon.  N.B. -- this is the first version that removes some method calls that were not placed in the best modules, were obsolete, or duplicated functionality that could be found elsewhere, so for the first time in a while, we caution that upon upgrading you may need to change some parts of your code, especially if you were using some of these features:

* Advanced musicxml features (beyond .show(‘musicxml’) or .write(‘musicxml’)) have been changed: .mx and .musicxml have been removed from music21 objects; the musicxml subpackage has been broken into smaller modules.  To get the same output as obj.musicxml call musicxml.m21ToString.fromMusic21Object(obj); to get the same functionality as .mx look for the appropriate method in musicxml.toMxObjects or musicxml.fromMxObjects.

* Advanced MIDI features (beyond .show(‘midi’) or .write(‘midi’)) have been changed.  .midifile is now midi.translate. music21ObjectToMidiFile(obj). 

* Stream freezing/unfreezing (now “thawing”) is handled by the new freezeThaw module.  jsonpickle has been removed as an option since it was not dereferencing objects properly.

* obsolete methods of note (compactNoteInfo, pitchNames, setAccidental [use .accidental = Accidental], noteFromDiatonicNumber, sendNoteInfo) have been removed

* The __repr__ (representation) for pitch objects is now instead of G#4 (etc.).  A large-scale standardization of all __repr__ to begin with is underway.  TimeSignatures have also been affected. String representations of both classes remain the same.

* Almost all keyword attributes that mapped to Python reserved words (dir, format, map, min, max) have been renamed.  In the vast majority of cases, users will have been using unnamed attributes, so nothing will have changed.  In the few cases where we believe many people will have used named attributes, we have left them alone.

So those are the incompatibilities.  What about the reasons to upgrade:

* Much better docs mean that the documentation will match v.1.3.

* harmony improvements, esp. in chordSymbolFromChord.

* melodic voiceleading analysis in the analysis.theoryAnalyzer package.

* bug fixes and improvements in scale, abc, medren.  Octaveless pitches now choose more sensible octaves in scales.

* improved serial module

* 50% speedup in startup.  Full IDLE compatibility.   Lots of little speedups everywhere.

In other news: The music21list is being split into two lists – a discussion list (music21list) and an announcement-only list (music21-announce).   All messages sent to music21-announce will also appear on music21list, so there’s no need to subscribe there if you want discussions and announcements.  But if you would like to move to a lower-level of email activity, please subscribe to the announce list and unsubscribe from this list (or, better, don’t subscribe but turn off emails so you can turn them back on easily when you have a question).

No comments:

Post a Comment