\version "2.16.2" % up to "2.17.96" #(set-global-staff-size 18) % After -> http://lists.gnu.org/archive/html/lilypond-user/2009-09/msg00622.html #(define (pitch-alteration-semitones pitch) (inexact->exact (round (* (ly:pitch-alteration pitch) 2)))) #(define (chord-name->my-german-markup-text-alteration pitch lowercase?) (define (conditional-string-downcase str condition) (if condition (string-downcase str) str)) (let* ((name (ly:pitch-notename pitch)) (alt-semitones (pitch-alteration-semitones pitch)) (n-a (if (equal? (cons name alt-semitones) '(6 . -1)) (cons 7 alt-semitones) (cons name alt-semitones)))) (make-line-markup (list (make-simple-markup (conditional-string-downcase (vector-ref #("C" "D" "E" "F" "G" "A" "H" "B") (car n-a)) lowercase?)) (let ((alteration (/ (cdr n-a) 2))) (cond ((and (= alteration FLAT) (= (car n-a) 7)) empty-markup) ((and (= alteration FLAT) (or (= (car n-a) 5) (= (car n-a) 2) )) (make-simple-markup "s")) ((= alteration FLAT) (make-simple-markup "es")) ((and (= alteration DOUBLE-FLAT) (or (= (car n-a) 5)(= (car n-a) 2))) (make-simple-markup "ses")) ((= alteration DOUBLE-FLAT) (make-simple-markup "eses")) ((= alteration SHARP) (make-simple-markup "is")) ((= alteration DOUBLE-SHARP) (make-simple-markup "isis")) (else empty-markup))))))) %% Not really needed, a little shorter, though #(define myGermanChords chord-name->my-german-markup-text-alteration) #(define (note-name->myGerman-markup pitch lowercase?) (let* ((name (ly:pitch-notename pitch)) (alt-semitones (pitch-alteration-semitones pitch)) (n-a (cond ((equal? (cons name alt-semitones) '(6 . -1)) (cons 7 (+ 1 alt-semitones))) ((equal? (cons name alt-semitones) '(6 . -2)) (cons 6 alt-semitones)) (else (cons name alt-semitones))))) (make-line-markup (list (string-append (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car n-a)) (cond ((equal? (car n-a) 7) "") ((or (equal? (car n-a) 2) (equal? (car n-a) 5)) (list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cdr n-a)))) (else (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))) onceDowncaseChordBass = \once \set chordNoteNamer = #note-name->myGerman-markup %%%%%%%%%%%% %% Test %%%%%%%%%%%% \layout { ragged-right = ##f indent = 0 \override Score.RehearsalMark #'self-alignment-X = #LEFT \override Score.RehearsalMark #'padding = #5 \override Score.RehearsalMark #'font-size = #-1 \override Score.BarNumber #'transparent = ##t } myLayout = \layout { \context { \ChordNames chordNameLowercaseMinor = ##t chordRootNamer = #myGermanChords } } majorChrds = \chordmode { c/c cis/cis d/d dis/dis e/e eis/eis f/f fis/fis g/g gis/gis a/a ais/ais b/b bis/bis \break c/c ces/ces b/b bes/bes a/a aes/aes g/g ges/ges f/f fes/fes e/e ees/ees d/d des/des \break cisis/cisis disis/disis eisis/eisis fisis/fisis gisis/gisis aisis/aisis bisis/bisis \break ceses/ceses deses/deses eeses/eeses feses/feses geses/geses aeses/aeses beses/beses \break } minorChrds = \chordmode { c:m/c cis:m/cis d:m/d dis:m/dis e:m/e eis:m/eis f:m/f fis:m/fis g:m/g gis:m/gis a:m/a ais:m/ais b:m/b bis:m/bis \break c:m/c ces:m/ces b:m/b bes:m/bes a:m/a aes:m/aes g:m/g ges:m/ges f:m/f fes:m/fes e:m/e ees:m/ees d:m/d des:m/des \break cisis:m/cisis disis:m/disis eisis:m/eisis fisis:m/fisis gisis:m/gisis aisis:m/aisis bisis:m/bisis \break ceses:m/ceses deses:m/deses eeses:m/eeses feses:m/feses geses:m/geses aeses:m/aeses beses:m/beses \break } myMajorChords = \chordmode { \mark "Bass always upcase" \majorChrds \break \mark "Bass once downcase" %\onceDowncaseChordBass %b/b %\onceDowncaseChordBass bes/bes \onceDowncaseChordBass beses/beses %\onceDowncaseChordBass ees/ees %\onceDowncaseChordBass %eeses/eeses \break \mark "Bass always downcase" \set chordNoteNamer = #note-name->myGerman-markup \majorChrds } minorChords = \chordmode { \mark "Bass always upcase" \minorChrds \break \mark "Bass once downcase" %\onceDowncaseChordBass %b:m/b %\onceDowncaseChordBass bes:m/bes \onceDowncaseChordBass beses:m/beses %\onceDowncaseChordBass ees:m/ees %\onceDowncaseChordBass %eeses:m/eeses \break \mark "Bass always downcase" \set chordNoteNamer = #note-name->myGerman-markup \minorChrds } \score { \new ChordNames \myMajorChords \layout { \myLayout } \header { piece = \markup \column \bold { "Major Chords (german)" \vspace #2 } } } \score{ \new ChordNames \minorChords \layout { \myLayout } \header { piece = \markup \column \bold { "Minor Chords (german)" \vspace #2 } } }