]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/snippets/coloring-notes-depending-on-their-pitch.ly
Imported Upstream version 2.14.2
[lilypond.git] / Documentation / snippets / coloring-notes-depending-on-their-pitch.ly
diff --git a/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly b/Documentation/snippets/coloring-notes-depending-on-their-pitch.ly
new file mode 100644 (file)
index 0000000..70bdd66
--- /dev/null
@@ -0,0 +1,62 @@
+%% DO NOT EDIT this file manually; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
+%% and then run scripts/auxiliar/makelsr.py
+%%
+%% This file is in the public domain.
+\version "2.14.0"
+
+\header {
+  lsrtags = "pitches, editorial-annotations"
+
+  texidoc = "
+It is possible to color note heads depending on their pitch and/or
+their names: the function used in this example even makes it possible
+to distinguish enharmonics.
+
+"
+  doctitle = "Coloring notes depending on their pitch"
+} % begin verbatim
+
+%Association list of pitches to colors.
+#(define color-mapping
+   (list
+    (cons (ly:make-pitch 0 0 NATURAL) (x11-color 'red))
+    (cons (ly:make-pitch 0 0 SHARP) (x11-color 'green))
+    (cons (ly:make-pitch 0 1 FLAT) (x11-color 'green))
+    (cons (ly:make-pitch 0 2 NATURAL) (x11-color 'red))
+    (cons (ly:make-pitch 0 2 SHARP) (x11-color 'green))
+    (cons (ly:make-pitch 0 3 FLAT) (x11-color 'red))
+    (cons (ly:make-pitch 0 3 NATURAL) (x11-color 'green))
+    (cons (ly:make-pitch 0 4 SHARP) (x11-color 'red))
+    (cons (ly:make-pitch 0 5 NATURAL) (x11-color 'green))
+    (cons (ly:make-pitch 0 5 FLAT) (x11-color 'red))
+    (cons (ly:make-pitch 0 6 SHARP) (x11-color 'red))
+    (cons (ly:make-pitch 0 1 NATURAL) (x11-color 'blue))
+    (cons (ly:make-pitch 0 3 SHARP) (x11-color 'blue))
+    (cons (ly:make-pitch 0 4 FLAT) (x11-color 'blue))
+    (cons (ly:make-pitch 0 5 SHARP) (x11-color 'blue))
+    (cons (ly:make-pitch 0 6 FLAT) (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 (event-cause grob) 'pitch)))
+
+\score {
+  \new Staff \relative c' {
+    \override NoteHead #'color = #color-notehead
+    c8 b d dis ees f g aes
+  }
+}
+