Blog  |   Puzzles  |   Books  |   About

Making Music with ABC Plus

A few days ago I went hunting for free music notation software.

Once again I was struck by the bewildering array of music software out there, clamoring for your attention. I found at least a hundred notation packages alone. I think the reason for this is that a lot of musicians are programmers, and it is common for programmers to attempt to “roll their own” software when someone else’s package doesn’t quite come up to snuff.

The sheer quantity of notation packages makes it nearly impossible for any individual to do a meaningful comparitive review that covers the whole field. Most sites that claim to provide comparisons merely provide a list of the programs that are available.

Recently I had been using a free program called NotePad by the folks that make Finale. Notepad is pretty easy to use, but it has significant limitations, because the Finale folks are hoping you’ll trade up.

I sing in a madrigal group, and I needed to notate some early choral music, which involves mixed staffs (an alternating solo soprano part, interleaved with alto-tenor-bass), and mixed time signatures (early music is often not in a strict time signature, like 4/4). Sadly, Notepad can’t handle either of these requests.

Also, I was getting frustrated with the Finale/Notepad user interface. It isn’t terrible, but I don’t think anyone has really come up with an optimal solution for entering music using windows and a mouse, and frankly I don’t need it. As a programmer, I’m quite happy to use a text editor to enter music, especially if it gives me a greater degree of control over the output.

The package I finally found that does most of the tricks I’m looking for is abcm2ps, a small program by Jean-François Moine that converts text files in the “ABC Plus” format to postscript. The ABC format is a text format that was originally used for transcribing folk music melodies. “ABC Plus” adds a number of extensions to the format which enable it to be used for more complex polyphonic music, with multiple voices, staves, and so on. Here is an excerpt of the Gaudete that I transcribed, showing a soprano line followed by the Alto-Tenor-Bass response.

V: S clef=treble
V: A clef=treble
V: T clef=treble-8
V: B clef=bass
%%staves S
[V:S] ddcdfed2|dBABG2G2|GGBGBcd2|fdefd2d2|
w: Tem-pus ad est gra-ti-ae Hoc quod opt-a ba-mus Car-mi-nae_ lae-ti-tiae 
De-vo-te Re-da-mus
%%staves [ A (T B) ]
[V:A] |:d2d2c2|def2fe-|edc2c2|c2d2e2>d2|c2de2d|c2d2:|
w: Gau-de-te gau-de-te Chri-stus_ est na-tus, ex Ma-ri-a Vir-gi-ne gau-de-te.
[V:T] |:f2f2e2|fga2ag-|gfe2e2|e2f2g2>f2|e2fg2f|e2a2:|
[V:B] |:d2d2A2|dcf2fc-|cdA2A2|A2d2c2>d2|A2dc2d|A2d2:|
w: Gau-de-te gau-de-te Chri-stus_ est na-tus, ex Ma-ri-a Vir-gi-ne gau-de-te.

If you can read music, you’ll see that the notes are entered by typing note names, with various marks to indicate rhythm, barlines and so on. Once you master this form, the speed with which you can create music in a standard issue text editor
is quite fast (and faster than Finale, at least for this geek). It’s nice to be able to use cut & paste, and you get excellent
control over measure and staff placement.

abcm2ps is available in source code form, and runs on all major platforms. You can find it, and a number of related utilities and helpful documentation at the ABC Plus website. If you’re on a Windows machine, you’ll also need something to view postscript with, such as Ghostscript and GSView.

I also highly recommend the detailed user guide, “Making Music with ABC Plus,” carried on this site, which really should be distributed with abcm2ps itself.

One Response to “Making Music with ABC Plus”

  1. KrazyDad » Blog Archive » Text to Song Says:

    […] The program I am writing, Organum, is written in Perl. The program outputs algorithmically constructed 17th Century Latin hymns in the ABCPlus format, which can be converted to 4-part vocal sheet music (or piano/organ music) and to MIDI, using utilities available at the ABCPlus website. I’ve mentioned this excellent and free notation software in a previous post. […]