lilypond-user
[Top][All Lists]
Advanced

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

RE: color notehead according to absolute pitch


From: Steven Weber
Subject: RE: color notehead according to absolute pitch
Date: Tue, 5 Aug 2008 13:10:33 -0700

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: address@hidden
[mailto:address@hidden On Behalf Of
Damian leGassick
Sent: Tuesday, August 05, 2008 5:53 AM
To: address@hidden
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
> address@hidden
> 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
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-user





reply via email to

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