lilypond-devel
[Top][All Lists]
Advanced

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

Patch for tablature in LilyPond


From: Han-Wen
Subject: Patch for tablature in LilyPond
Date: Thu, 16 May 2002 17:37:47 +0200

address@hidden writes:
>+    \translator {
>+      \StaffContext
>+      

you'll probably want to insert \name TabStaff over here, so you can
use  normal and tab staffs in the same file.

>+      int pos = 2 * tab_string; // No tab-note between the string !!!
>+      SCM c0 = get_property ("centralCPosition");
>+      if (gh_number_p (c0)) pos += gh_scm2int (c0);
>+      
>+      note_p->set_grob_property ("semitone-pitch", gh_int2scm 
>(pit->semitone_pitch()));

this is not necessary. The pitch fo a note head grob can be discovered
through

        unsmob_music (g->get_grob_property("cause"))->get_mus_property("pitch")

>+; Tablature functions, by Jiba (address@hidden)
>+
>+; The strings' tuning.
>+; This should not be hardcoded.
>+#(define-public guitartuning '(-8 -3 2 7 11 16))

(and should probably be a vector not a  list?)

>+; Stem molecule callback for tablature.
>+; This molecule callback delegates to the default one, but for chords, it
>+; draws the shorter possible stem (instead of the longer).
>+; Hackish !!!
>+(define (tablature-stem-molecule-callback grob)
>+  (let ((note-heads (ly-get-grob-property grob 'note-heads)))
>+    ; HACK !!!
>+    ; (Temporarilly) remove all note-heads in "note-heads" but one (the one
>+    ; that will give the shorter stem).
>+    ; This is required to avoid stems passing in chords...

It's much simpler to add a flag to the stem brew_molecule that
indicates whether to start the stem from the outer or the inner note
head.

Finally, I would put together the string tunings, pitches etc. in the
engraver, and simply write a #'text property into the notehead. The
string tunings can come from a property (eg. stringTunings = #'(-8 -2
-7) or somesuch)






reply via email to

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