I've got a travel-size violin (by Bill Whipple) that I mess around with. I like a lot of traditional and celtic music, and I wanted something that would provide both a visual and aural rendition of a song to help me learn it.

Looking around, I found ABC (see John Chamber's page and tutorial), which is a simple, ASCII notation for sheet music. There are lots of software tools for processing ABC; my favorite is abcMIDI (which I've packaged in my Gentoo overlay and is also packaged in the Sunrise overlay). abcMIDI provides several useful programs:

  • abc2midi: ABC to MIDI conversion, to listen to your music.
  • yaps: ABC to PostScript conversion, to look at your music.
  • midi2abc: MIDI to ABC conversion, when you can't find ABC source.

My favorite ABC tune repository is The Session, but there are also search tools and repositories listed on the ABC homepage and JC's page.

To make playing ABC files as easy as possible, I've written a little script, abcplay.py, which uses abc2midi to generate a MIDI file for each tune and then plays them with timidity++. Because the processing is so similar, abcplay.py also plays LilyPond files, using lilypond to convert them to MIDI. Run

$ abcplay.py --help

for usage information.