LSR: Update.
[lilypond/mpolesky.git] / Documentation / snippets / numbers-as-easy-note-heads.ly
blob7cd88fa11baabba886afe62b358ce847c124e5a5
1 % Do not edit this file; it is automatically
2 % generated from Documentation/snippets/new
3 % This file is in the public domain.
4 %% Note: this file works from version 2.13.11
5 \version "2.13.11"
7 \header {
8 lsrtags = "pitches"
9 texidoc = "
10 Easy notation note heads use the @code{note-names} property
11 of the @code{NoteHead} object to determine what appears inside
12 the note head. By overriding this property, it is possible
13 to print numbers representing the scale-degree.
15 A simple engraver can be created to do this for every note head
16 object it sees.
18 doctitle = "Numbers as easy note heads"
19 } % begin verbatim
22 #(define Ez_numbers_engraver (list
23 (cons 'acknowledgers
24 (list
25 (cons 'note-head-interface
26 (lambda (engraver grob source-engraver)
27 (let* (
28 (context (ly:translator-context engraver))
29 (tonic-pitch (ly:context-property context 'tonic))
30 (tonic-name (ly:pitch-notename tonic-pitch))
31 (grob-pitch (ly:event-property (event-cause grob) 'pitch))
32 (grob-name (ly:pitch-notename grob-pitch))
33 (delta (modulo (- grob-name tonic-name) 7))
34 (note-names (make-vector 7 (number->string (+ 1 delta)))))
35 (ly:grob-set-property! grob 'note-names note-names))))))))
37 #(set-global-staff-size 26)
39 \layout {
40 ragged-right = ##t
41 \context {
42 \Voice
43 \consists \Ez_numbers_engraver
47 \relative c' {
48 \easyHeadsOn
49 c4 d e f
50 g4 a b c \break
52 \key a \major
53 a,4 b cis d
54 e4 fis gis a \break
56 \key d \dorian
57 d,4 e f g
58 a4 b c d