[Top][All Lists]
[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