]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/included/display-predefined-string-tunings.ly
Imported Upstream version 2.14.2
[lilypond.git] / Documentation / included / display-predefined-string-tunings.ly
diff --git a/Documentation/included/display-predefined-string-tunings.ly b/Documentation/included/display-predefined-string-tunings.ly
new file mode 100644 (file)
index 0000000..6216fbe
--- /dev/null
@@ -0,0 +1,87 @@
+\version "2.14.0"
+
+#(define (filter-instrument instrument-name tuning-alist)
+   (filter (lambda (entry)
+             (string-prefix? instrument-name
+                            (symbol->string (car entry))))
+           tuning-alist))
+
+#(define (chord-display tuning-alist-entry)
+   (let* ((ch-mus (cdr tuning-alist-entry))
+          (tuning-symbol (car tuning-alist-entry))
+          (ev-chord (car (extract-named-music
+                           ch-mus
+                           'EventChord)))
+          (elts (ly:music-property ev-chord 'elements)))
+     (music-map (lambda (m)
+                  (begin
+                    (if (not (null? (ly:music-property m 'duration)))
+                        (ly:music-set-property!
+                          m
+                          'duration
+                          (ly:make-duration 0 0 1 1)))
+                    m))
+                ev-chord)
+     (let ((elts (ly:music-property ev-chord 'elements))
+           (script (make-music 'TextScriptEvent
+                               'direction 1
+                               'text (symbol->string tuning-symbol))))
+       (ly:music-set-property!
+         ev-chord
+         'elements
+         (cons script elts)))
+     ev-chord))
+
+displayInstrumentDefaultTunings =
+#(define-music-function (parser location instrument) (string?)
+   (let* ((filtered-instruments (filter-instrument instrument defaultStringTunings))
+          (display-elements (map chord-display filtered-instruments)))
+     (make-music 'SequentialMusic 'elements display-elements)))
+
+
+\score {
+  {
+    \new Staff {
+      \textLengthOn
+      \override Score.RehearsalMark #'self-alignment-X = #LEFT
+
+      \mark \markup {\left-align "Guitar tunings"}
+      \clef "treble_8"
+      \displayInstrumentDefaultTunings #"guitar"
+      \break
+
+      \mark \markup {\left-align "Bass tunings"}
+      \clef "bass_8"
+      \displayInstrumentDefaultTunings #"bass"
+      \break
+
+      \mark \markup {\left-align "Mandolin tunings"}
+      \clef "treble"
+      \displayInstrumentDefaultTunings #"mandolin"
+      \break
+
+      \mark \markup {\left-align "Banjo tunings"}
+      \clef "treble_8"
+      \displayInstrumentDefaultTunings #"banjo"
+      \break
+
+      \mark \markup {\left-align "Ukulele tunings"}
+      \clef "treble"
+      \displayInstrumentDefaultTunings #"ukulele"
+      \clef "alto"
+      \displayInstrumentDefaultTunings #"tenor-ukulele"
+      \displayInstrumentDefaultTunings #"baritone-ukulele"
+      \break
+
+      \mark \markup {\left-align "Orchestral string tunings"}
+      \clef "treble"
+      \displayInstrumentDefaultTunings #"violin"
+      \clef "alto"
+      \displayInstrumentDefaultTunings #"viola"
+      \clef "bass"
+      \displayInstrumentDefaultTunings #"cello"
+      \clef "bass_8"
+      \displayInstrumentDefaultTunings #"double-bass"
+    }
+  }
+}