2009-12-14 17 views
6

lilypond possono colorare le note in modo arbitrario usingColorare note in Lilypond Per Pitch

\override NoteHead #'color = #red c 

con il colore predefinito è nero. Ma mi piace colorare tutte le note di intonazione, in modo che i miei bambini possano imparare più facilmente a riconoscere le note in quanto c, d, e, f, ... sono associate al proprio colore. Quanto sopra mi consente di farlo, ma è piuttosto prolisso.

c'è una scorciatoia, le macro di qualche tipo, che mi permettono di fare qualcosa sulla falsariga di:

redc greend bluee 

o anche sovrascrivere i colori di default per ogni nota da campo in modo che possa anche semplicemente fare :

c d e 

e ognuno di essi ha un colore diverso?

+0

+1 Amo lilypond! –

+0

Rispetto a Sibelius è comunque piuttosto doloroso, secondo la mia esperienza. Ho fatto la composizione di musica con entrambi finora, ma mi è piaciuto molto meglio dal punto di vista grafico :) – Joey

+0

Sono praticamente un dilettante musicale ... Lilypond fa quello che mi serve, gira su Linux ed è gratuito. –

risposta

9

V'è un esempio di questo nel snippets:

%Association list of pitches to colors. 
#(define color-mapping 
    (list 
    (cons (ly:make-pitch 0 0 0) (x11-color 'red)) 
    (cons (ly:make-pitch 0 0 1/2) (x11-color 'green)) 
    (cons (ly:make-pitch 0 1 -1/2) (x11-color 'green)) 
    (cons (ly:make-pitch 0 2 0) (x11-color 'red)) 
    (cons (ly:make-pitch 0 2 1/2) (x11-color 'green)) 
    (cons (ly:make-pitch 0 3 -1/2) (x11-color 'red)) 
    (cons (ly:make-pitch 0 3 0) (x11-color 'green)) 
    (cons (ly:make-pitch 0 4 1/2) (x11-color 'red)) 
    (cons (ly:make-pitch 0 5 0) (x11-color 'green)) 
    (cons (ly:make-pitch 0 5 -1/2) (x11-color 'red)) 
    (cons (ly:make-pitch 0 6 1/2) (x11-color 'red)) 
    (cons (ly:make-pitch 0 1 0) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 3 1/2) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 4 -1/2) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 5 1/2) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 6 -1/2) (x11-color 'blue)) 
    )) 

%Compare pitch and alteration (not octave). 
#(define (pitch-equals? p1 p2) 
    (and 
    (= (ly:pitch-alteration p1) (ly:pitch-alteration p2)) 
    (= (ly:pitch-notename p1) (ly:pitch-notename p2)))) 

#(define (pitch-to-color pitch) 
    (let ((color (assoc pitch color-mapping pitch-equals?))) 
    (if color 
     (cdr color)))) 

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

\score { 
    \new Staff \relative c' { 
    \override NoteHead #'color = #color-notehead 
    c8 b d dis ees f g aes 
    } 
} 

Sample image

1

OK, per il libro Kid's Keyboard Course - Book #1 ho comprato all'inizio di quest'anno a Cambridge, ora ho questa codifica colore:

#(define color-mapping 
    (list 
    (cons (ly:make-pitch 0 0 0) (x11-color 'magenta)) 
    (cons (ly:make-pitch 0 1 -1/2) (x11-color 'grey)) 
    (cons (ly:make-pitch 0 1 0) (x11-color 'grey)) 
    (cons (ly:make-pitch 0 1 1/2) (x11-color 'grey)) 
    (cons (ly:make-pitch 0 2 0) (x11-color 'red)) 
    (cons (ly:make-pitch 0 2 1/2) (x11-color 'red)) 
    (cons (ly:make-pitch 0 3 -1/2) (x11-color 'green)) 
    (cons (ly:make-pitch 0 3 0) (x11-color 'green)) 
    (cons (ly:make-pitch 0 4 -1/2) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 4 0) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 4 1/2) (x11-color 'blue)) 
    (cons (ly:make-pitch 0 5 0) (x11-color 'yellow)) 
    (cons (ly:make-pitch 0 5 -1/2) (x11-color 'yellow)) 
    (cons (ly:make-pitch 0 5 1/2) (x11-color 'yellow)) 
    (cons (ly:make-pitch 0 6 1/2) (x11-color 'purple)) 
    (cons (ly:make-pitch 0 6 0) (x11-color 'purple)) 
    (cons (ly:make-pitch 0 6 -1/2) (x11-color 'purple))))