kenny,

how about

#(define (color-notehead grob)
(pitch-to-color (ly:event-property (ly:grob-property grob 'cause) 'pitch)))

#(define (pitch-to-color pitch)
        (cond
((and (eqv? (ly:pitch-octave pitch) 0) (eqv? (ly:pitch-alteration pitch) 0) (eqv? (ly:pitch-notename pitch) 6)) (x11-color 'red)) ((and (eqv? (ly:pitch-octave pitch) 0) (eqv? (ly:pitch-alteration pitch) -1/2) (eqv? (ly:pitch-notename pitch) 6)) (x11-color 'green)) ((and (eqv? (ly:pitch-octave pitch) 1) (eqv? (ly:pitch-alteration pitch) 0) (eqv? (ly:pitch-notename pitch) 6)) (x11-color 'blue)) ((and (eqv? (ly:pitch-octave pitch) 0) (eqv? (ly:pitch-alteration pitch) 0) (eqv? (ly:pitch-notename pitch) 5)) (x11-color 'orange)) ((and (eqv? (ly:pitch-octave pitch) 0) (eqv? (ly:pitch-alteration pitch) 0) (eqv? (ly:pitch-notename pitch) 4)) (x11-color 'orange))
        )
)

and any kind schemers reading....

how would you refactor this to use lists, along the lines of

(0 0 6 'red)
(0 -1/2 6 'green)
(1 0 6 'blue)
((0 0 5 ) (0 0 4) 'orange)

thanks

d




On 5 Aug 2008, at 23:06, Damian leGassick wrote:

thanks steven

cond - yes, i was trying to use case

kenny - can you figure it out from here?
if not i'll try tomorrow morning london time

d


On 5 Aug 2008, at 21:10, Steven Weber wrote:

Use the (cond) expression.  Here's a simplified version of your
pitch-to-color function that colors all c's red and all f's blue:

#(define (pitch-to-color pitch)
        (cond
                ((eqv? (ly:pitch-notename pitch) 0) (x11-color 'red))
                ((eqv? (ly:pitch-notename pitch) 3) (x11-color 'blue))
        )
)

--Steven

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Damian leGassick
Sent: Tuesday, August 05, 2008 5:53 AM
To: lilypond-user@gnu.org
Subject: Re: color notehead according to absolute pitch


On 5 Aug 2008, at 05:39, Jay Anderson wrote:

Kenny Stephens <kfstephensii <at> yahoo.com> writes:
Our church has a handbell group whose members are not all musically
literate. To
keep themselves from having to learn to read music, they mark their
notes using
differently colored highlighters.

Is there a means by which I can color the notes based on its
absolute pitch ---
not its pitch class? Some of the music spans three octaves. The
requirements are:
1) b4 and b5 are different colors.
2) b\flat4 and b4 are different colors.
3) different pitches can be assigned to the same color (some
"ringers" play
two or more handbells).

I've only been playing around with Lilypond for about a week
(though I've logged
numerous hours) for typesetting organ music; but this is different.
I did find
an example using Scheme and 'staff-position,' but this fails
condition 1.

Ideas, suggestions or solutions would be appreciated.

Using the same idea as the example you mentioned

(http://lilypond.org/doc/v2.11/Documentation/user/lilypond-learning/Advanced
-tweaks-with-Scheme
)
you can base the color on the pitch:

#(define (color-notehead grob)
(pitch-to-color (ly:event-property (ly:grob-property grob 'cause)
'pitch)))

Now you'd just have to figure out how to implement the pitch-to- color
function. For example this colors all the flat notes blue:

#(define (pitch-to-color pitch)
(if (eqv? (ly:pitch-alteration pitch) -1/2) (x11-color 'blue)))

You might want to get a little fancy to make sure enharmonic spellings
of the same pitch are the same color, but for most cases that
shouldn't be a problem.

-----Jay


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

I can get as far as:

#(define (color-notehead grob)
(pitch-to-color (ly:event-property (ly:grob-property grob 'cause)
'pitch)))

#(define (pitch-to-color pitch)
        (if
                (and
                        (eqv? (ly:pitch-octave pitch) 0)
                        (eqv? (ly:pitch-alteration pitch) -1/2)
                        (eqv? (ly:pitch-notename pitch) 6))
        (x11-color 'blue)))

which sets only the b-flat above middle c to be blue.

can't work out how to simultaneously colour the b-natural, say, red -
i'd love to know too

Damian


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




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



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

Reply via email to