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.

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.

* 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:

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).