111 lines
3.9 KiB
Plaintext
111 lines
3.9 KiB
Plaintext
% Akkorde können auch geklammert sein
|
|
#(define (parenthesis-ignatzek-chord-names in-pitches bass inversion context)
|
|
(markup #:line ( "(" (ignatzek-chord-names in-pitches bass inversion context) ")" )))
|
|
klamm = #(define-music-function (parser location chords) (ly:music?)
|
|
#{
|
|
\set chordNameFunction = #parenthesis-ignatzek-chord-names
|
|
$chords
|
|
\set chordNameFunction = #ignatzek-chord-names
|
|
#})
|
|
|
|
bchord =
|
|
#(define-music-function (parser location chords) (ly:music?)
|
|
#{
|
|
\override ChordName.font-series = #'bold
|
|
$chords
|
|
\revert ChordName.font-series
|
|
#})
|
|
|
|
shiftChord = #(define-music-function (parser location xshift chord) (number? ly:music?)
|
|
#{
|
|
\once \override ChordName.extra-offset = #`(,xshift . 0)
|
|
$chord
|
|
#})
|
|
|
|
% kleine Mollakkorde und Alteration ausgeschrieben
|
|
#(define (note-name->german-markup-nosym pitch lowercase?)
|
|
(define (pitch-alteration-semitones pitch) (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
|
|
(define (accidental->markup alteration name)
|
|
(if (= alteration 0)
|
|
(make-line-markup (list empty-markup))
|
|
(if (= alteration FLAT)
|
|
(if (equal? name "B")
|
|
""
|
|
; (make-line-markup (list (make-hspace-markup 0.2)
|
|
; (make-tiny-markup (make-raise-markup 1.2
|
|
; (make-musicglyph-markup (assoc-get alteration standard-alteration-glyph-name-alist ""))))
|
|
; ))
|
|
(if (or (equal? name "E") (equal? name "A")) "s" "es"))
|
|
"is")
|
|
))
|
|
(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 (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
|
|
(cons 7 (+ 0 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?))
|
|
(accidental->markup (/ (cdr n-a) 2) (vector-ref #("C" "D" "E" "F" "G" "A" "H" "B") (car n-a)) ))))
|
|
)
|
|
|
|
% additional bass notes should get uppercased
|
|
#(define (bassnote-name->german-markup-nosym pitch lowercase?)(note-name->german-markup-nosym pitch #f))
|
|
|
|
|
|
#(define chordNameExceptions
|
|
(if (defined? 'customChordPrintings)
|
|
(sequential-music-to-chord-exceptions customChordPrintings #t)
|
|
'()))
|
|
|
|
generalLayout = \layout {
|
|
\generalLayout
|
|
\context {
|
|
\ChordNames
|
|
\semiGermanChords
|
|
\override ChordName.font-size = \songScoreChordFontSize
|
|
\override ChordName.font-series = \songChordFontSeries
|
|
\override ChordName.font-family = #'sans
|
|
chordNameLowercaseMinor = ##t
|
|
chordChanges = ##t
|
|
% eigenen chordRootNamer damit F# = Fis und Gb = Ges (also alteration ausgeschrieben)
|
|
chordRootNamer = #note-name->german-markup-nosym
|
|
chordNoteNamer = #bassnote-name->german-markup-nosym
|
|
majorSevenSymbol = "maj7"
|
|
chordNameExceptions = \chordNameExceptions
|
|
% der baseline-skip der Akkorde beeinflusst, wie hoch die Hochstellung ist
|
|
\override ChordName.baseline-skip = #1.0
|
|
}
|
|
}
|
|
|
|
verseChordLayout = \layout {
|
|
\generalLayout
|
|
\context {
|
|
\ChordNames
|
|
\override ChordName.font-size = \songTextChordFontSize
|
|
}
|
|
}
|
|
|
|
% Akkord mit Bunddiagramm anzeigen
|
|
#(define-markup-command (fret-chord layout props fret chord) (string? string?)
|
|
(interpret-markup layout props
|
|
#{ \markup { \override #'(baseline-skip . 2)
|
|
\center-column {
|
|
\score { \new ChordNames { #(if (< (list-ref (ly:version) 1) 19)
|
|
(ly:parser-include-string parser (string-append "\\chordmode { s4 " chord " }"))
|
|
(ly:parser-include-string (string-append "\\chordmode { s4 " chord " }"))
|
|
) } \layout { \generalLayout } }
|
|
\override #'(fret-diagram-details . (
|
|
(barre-type . straight))) {
|
|
\fret-diagram-terse #fret
|
|
}
|
|
}
|
|
}
|
|
#}))
|