Hi all,

I have a worked out a way to customize note head styles (shapes) based on pitch, (so I'm revisiting this thread from 2007). Here's a new snippet that does the trick:
http://lsr.dsi.unimi.it/LSR/Item?id=754

I basically adapted the code from this snippet on "coloring notes depending on their pitch."
http://lsr.dsi.unimi.it/LSR/Item?id=572

This provides more control than the "shapeNoteStyles" property, and provides support for alternative, chromatic-staff notation systems like TwinNote, Twinline, and others (see: http://twinnote.org http://musicnotation.org/musicnotations/2linesmajorthirdcompact.html ).

I believe this is at least closer to the approach that Han-Wen was suggesting to Kevin Dalley?
(see below) Any thoughts or advice would be welcome.

(This is part of my efforts to follow up on Kevin's work on chromatic-staff notation systems from 2007. I was really glad to learn from Neil Puttock that he and Han-Wen had committed several of Kevin's patches to LilyPond. I'm documenting this stuff over at the Music Notation Project: http://musicnotation.org/wiki/LilyPond )

Cheers,
Paul


2007/5/12,  Han-Wen Nienhuys writes (to Kevin):

You should write a note-head::calc-style function in Scheme, which
returns a symbol. This function should look at the pitch of the of the
causing event
to determine the shape to be returned. Look at
accidental-interface::calc-alteration
to see how to get to the causing event. You probably can bypass the
entire solfa note head mechanism.


good luck


Han-Wen



2007/5/9, Kevin Dalley <address@hidden>:

   I have to admit that I'm stuck here.


   I see some documentation for grobs here:
   
http://lilypond.org/doc/v2.11/Documentation/user/lilypond-internals/grob_002dinterface#grob_002dinterface


   but I don't know where to start.  Do you have a suggested URL?


   "Han-Wen Nienhuys"<address@hidden>  writes:


   >  It would be the coolest if (all) these extensions could happen in
   >  grob-property space.
   >  This could be done by automatically overriding and reverting grob
   >  properties when middleCPosition or tonic context properties change.
   >
   >  2007/4/21, Kevin Dalley<address@hidden>:
   >>  As another step toward in my path toward varying notation in LilyPond,
   >>  I am varying note shapes by semitone.  Usually, there are fewer than
   >>  12 note heads, but the semitone of the note determine the shape.
   >>
   >>  My current implementation uses a function shapeLayoutFunction which
   >>  returns an integer, which is an index into the vector
   >>  shapeNoteStyles.  This seems to work.  The function description is:
   >>
   >>                    Function returning an integer which indexes into
   >>                    shapeNoteStyles vector. It takes an argument of
   >>                    pitch and tonic.
   >>
   >>  Altnernatively, I could define a function which return a note head
   >>  shape.  Does anyone see a good reason to prefer one to the other.
   >>
   >>
   >>  The first option has an advantage of using a small function like this:
   >>
   >>  #(define (shapeSemitone pitch tonic)
   >>    (modulo (ly:pitch-semitones pitch) 12))
   >>
   >>  plus an already standard vector.
   >>
   >>  The second option has an advantage of everything being included in one
   >>  variable, but the disadvantage of requiring slightly more complicated
   >>  functions.

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to