Sunday, July 29, 2012

music21 v.1.1 released

A new version of music21, v.1.1, has been released.  It incorporates 6 weeks worth of feature enhancements, documentation improvements, and bug fixes.  For the next few 1.x releases, we're focusing (in this order) on better documentation and tutorials, making our method calls more robust (for instance, on larger scores with many voices), and applying music21 to more musicological topics.  But there will always be some time for adding new features as well.

Music21 has added a robust service-oriented-architecture and a set of web applications that should enable music21 users to work more easily over the web.  See the paper (with Beth Hadley, Lars Johnson, and Christopher R. Reyes) at .  These tools are still in beta, so the interface may change slightly in future releases.

A new architecture for producing Lilypond output has been released.  Most end users will see little change, but we will be able to continue improving our Lilypond output with this rewrite.

Improvements in serial and post-tonal tools.  Commands such as isLinkChord(), isCombinatorial(), isAllInterval(), etc.will help people working on the music of Elliott Carter and other recent non-tonal composers.  Fixed some bugs in our provided tone rows.

Many bugs in docs have been squashed with our new documentation test suite.

For those working with Bach Chorales, see the corpus.chorales module which allows you to get chorales according to your favorite numbering system and lazily parses them for speed purposes.

Methods for finding repeated or similar sections have been added to -- they are very powerful but still not made easy to use.  Version 1.2 will add a simple interface to this.

Incompatible change:  TinyNotation now supports time signatures in the input.  It is best to preface the string with "tinynotation: ".  For instance, "converter.parse('tinynotation: 3/4 C4 D E').makeMeasures()" will give a measure of 3 quarter notes in 3/4.

The Goldberg Variations have been added to the corpus (Thanks to the Open Goldberg Variations project ).  The Art of Fugue was already there, but you might not have known that it was bwv1080.  Now it's "bach/artOfFugue_bwv1080"

Basic support for realtime MIDI playback of streams in midi.realtime for users with pygame installed.  Thanks to Joe Codeswell for the code (original post)  .  A portaudio version (with less lag at the end of a Stream) is on its way...

Further improvements to variants: now you can load in two streams and mark the differences between them as variants.  Works even if Streams are of different lengths!

Bug fixes and improvements in Harmony objects, RomanNumeral processing (including the rntxt format) and more.  A sample of 20 Bach Chorales in rntxt format is now included with music21 thanks to Dmitri Tymoczko for the contribution and suggestions

Thanks to Evan Lynch, Varun Ramaswarmy, Carl Lian, Daniel Manesh, Beth Hadley, and Lars Johnson for many contributions to the latest code.

We also thank the Seaver Institute and the NEH/Digging into Data Challenge and our colleagues on the ELVIS project for their continued support.


  1. So, what can you do with the Open Goldberg Variations in Music21? I'd love to get a demo!

  2. In 1997 I made web pages for the Goldberg Variations as "Music of Intellect" which had all midi dats. Now there are added all mp3 data.