I’ve been playing the Tsugaru shamisen for a couple of years, with a lesson almost every week. In that time, I’ve made good progress, and I’ve learned a whole lot of pieces. What I haven’t seen much of, however, is good quality sheet music.

The shamisen has its own tablature-based notation system. As it’s quite a niche instrument, especially outside Japan, there’s not really much software to help with making scores, and a lot of scores are handwritten and/or multiple-generation photocopies that are hard to read.

Motivated by one particularly illegible score I was trying to learn, I decided to do something about it.

Picture of shamisen tablature

LilyPond is a complicated and powerful free and open source music engraver. The thing I like about it is that it is not WYSIWYG. It’s closer to LaTeX in its separation of content from presentation. It’s harder to get started, perhaps, but it’s repeatable, and it’s possible to make large changes without a lot of fiddling.

As well as the regular five-line Western musical notation system, LilyPond can produce tablature. But not shamisen tablature. At least, not out of the box. Tsugaru shamisen tablature has a few peculiarities:

  • The stops are not numbered strictly in semitones: there are two whole-tone gaps in the numbering system.
  • Rests are notated as small round dots.
  • Note and rest length is indicated by a number of bars under the position number.
  • Each note can have a small katakana letter underneath to indicate that it is to be played as an upstroke, by plucking with the left-hand, as a hammer-on, by raking across from a lower string, or muted quickly.
  • Some sequences of notes (like the 4300 phrases) should be set closer together.

One by one, by reading a lot of the LilyPond source and by writing a lot of Scheme code (its extension language), I overcame these obstacles.

Here’s the result: lilypond-shamisen lets you include one file and typeset beautiful readable shamisen music, as illustrated above.

I’ll be writing about what I’ve done with it next.