lilypond-user
[Top][All Lists]
Advanced

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

Re: Harmonica tablature notation


From: Carl Sorensen
Subject: Re: Harmonica tablature notation
Date: Wed, 28 Oct 2009 03:46:14 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

bradford powell <bradford.powell <at> gmail.com> writes:

> 
> My first thought was to write an engraver (since that is what guitar
> tablature seems to do). 

Writing an engraver is not as difficult as it seems, as long as you have good
models to follow.  But it *is* an involved process, and isn't the easiest way
for a new developer to get started.


> After looking into the source a bit, and
> deciding to try to avoid needing to recompile,

Recompiling is virtually impossible on windows, but it's doable on Linux and
OS/X.  If you really want to do some developing (and you're not on Windows),
it's probably worth learning to compile LilyPond.

> 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/gregorian.ly'. The
> second approach (which I think I prefer) is to create lyrics using
> similar markup.

I prefer the markup to notes, rather than the lyrics approach.  But this
tablature is new to me; I learned to play harmonica with arrows 
indicating blow or draw and numbers indicating holes.

If you want to get the lyrics-based approach integrated into LilyPond, you'll
probably want a HarmonicaTab context and harmonica_tab_engraver.
You can copy this functionality from the FretBoards context and 
Fretboard_engraver.  These are pretty simple, and could form a template
for your work if you're interested.

> 
> 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)))))
> 

If you can write the code that will return the list of arguments that you
would like to have passed to the markup function, then you can do
something like this:

(append '(markup) (function-that-returns-argument-list))

to get the scheme function you want.

HTH,

Carl





reply via email to

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