]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/included/display-predefined-string-tunings.ly
Docs: run convert-ly for 2.14.0.
[lilypond.git] / Documentation / included / display-predefined-string-tunings.ly
1 \version "2.14.0"
2
3 #(define (filter-instrument instrument-name tuning-alist)
4    (filter (lambda (entry)
5              (string-prefix? instrument-name
6                             (symbol->string (car entry))))
7            tuning-alist))
8
9 #(define (chord-display tuning-alist-entry)
10    (let* ((ch-mus (cdr tuning-alist-entry))
11           (tuning-symbol (car tuning-alist-entry))
12           (ev-chord (car (extract-named-music
13                            ch-mus
14                            'EventChord)))
15           (elts (ly:music-property ev-chord 'elements)))
16      (music-map (lambda (m)
17                   (begin
18                     (if (not (null? (ly:music-property m 'duration)))
19                         (ly:music-set-property!
20                           m
21                           'duration
22                           (ly:make-duration 0 0 1 1)))
23                     m))
24                 ev-chord)
25      (let ((elts (ly:music-property ev-chord 'elements))
26            (script (make-music 'TextScriptEvent
27                                'direction 1
28                                'text (symbol->string tuning-symbol))))
29        (ly:music-set-property!
30          ev-chord
31          'elements
32          (cons script elts)))
33      ev-chord))
34
35 displayInstrumentDefaultTunings =
36 #(define-music-function (parser location instrument) (string?)
37    (let* ((filtered-instruments (filter-instrument instrument defaultStringTunings))
38           (display-elements (map chord-display filtered-instruments)))
39      (make-music 'SequentialMusic 'elements display-elements)))
40
41
42 \score {
43   {
44     \new Staff {
45       \textLengthOn
46       \override Score.RehearsalMark #'self-alignment-X = #LEFT
47
48       \mark \markup {\left-align "Guitar tunings"}
49       \clef "treble_8"
50       \displayInstrumentDefaultTunings #"guitar"
51       \break
52
53       \mark \markup {\left-align "Bass tunings"}
54       \clef "bass_8"
55       \displayInstrumentDefaultTunings #"bass"
56       \break
57
58       \mark \markup {\left-align "Mandolin tunings"}
59       \clef "treble"
60       \displayInstrumentDefaultTunings #"mandolin"
61       \break
62
63       \mark \markup {\left-align "Banjo tunings"}
64       \clef "treble_8"
65       \displayInstrumentDefaultTunings #"banjo"
66       \break
67
68       \mark \markup {\left-align "Ukulele tunings"}
69       \clef "treble"
70       \displayInstrumentDefaultTunings #"ukulele"
71       \clef "alto"
72       \displayInstrumentDefaultTunings #"tenor-ukulele"
73       \displayInstrumentDefaultTunings #"baritone-ukulele"
74       \break
75
76       \mark \markup {\left-align "Orchestral string tunings"}
77       \clef "treble"
78       \displayInstrumentDefaultTunings #"violin"
79       \clef "alto"
80       \displayInstrumentDefaultTunings #"viola"
81       \clef "bass"
82       \displayInstrumentDefaultTunings #"cello"
83       \clef "bass_8"
84       \displayInstrumentDefaultTunings #"double-bass"
85     }
86   }
87 }