[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Harmonica tablature notation

From: bradford powell
Subject: Harmonica tablature notation
Date: Sat, 24 Oct 2009 22:32:16 -0400


I have been trying to write something to produce tablature-like
notation for the harmonica. Googling revealed a post from several
years ago which involved preprocessing a lilypond file. Not only
out-of-date with regard to lilypond syntax, but I also prefer
something that would act from within lilypond.

For background, a diatonic harmonica (using the standard Richter
tuning) has ten holes. Each hole has two reeds which play two
different primary notes, one during exhalation (the "blow" notes) and
one during the inhalation (the "draw" notes). Some of these notes can
be "bent" to a varying degree to provide some chromatic notes by
flattening pitches. The site gives a fairly complete
tuning chart. One way that I have seen beginner notation for this is
to have the hole numbers for blow notes and in circles for draw notes
(sometimes with arrows or some other notation for bends).

My first thought was to write an engraver (since that is what guitar
tablature seems to do). After looking into the source a bit, and
deciding to try to avoid needing to recompile, I have tried two other
approaches. The first is based on adding markup to notes similar to
the commented-out 'add-staccato' function in 'ly/'. The
second approach (which I think I prefer) is to create lyrics using
similar markup.

So, the markup-based approach can be seen at and

The lyric-based approch is at and

I would appreciate any comments. One area in particular that I have
questions about is cleaning up the case statement that converts pitch
to markup-- specifically in that I am weirdly interspersing lilypond
syntax (with the '(markup #:flat #:flat #:circle "2")'-type
statements). I would prefer to have a function like for blow and for
draw that can incorporate parameters for the hole and the number of
bends. I've tried:

#(define draw hole bends) (markup (make-list-markup (append (list
#:simple) (make-list bends #:flat) (list hole)))))

This doesn't work, any suggestions?

-- Bradford

reply via email to

[Prev in Thread] Current Thread [Next in Thread]