Ich habe beschlossen, meine Akkordeon-Bassnotation so umzustellen, dass ich damit eine Midi-Ausgabe erzeugen kann.
Zu diesem Zweck bräuchte ich den eintonigen c:1-Akkord in Großbuchstaben und unterstrichen.
Folgendes habe ich bisher zustande gebracht
\version "2.25.4"
\language "deutsch"
#(define-public (my-note-name->german-markup pitch lowercase?)
(let* ((name (ly:pitch-notename pitch))
(alt-semitones
(inexact->exact (round (* (ly:pitch-alteration
pitch) 2))))
(n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
(cons 7 (+ 1 alt-semitones))
(cons name alt-semitones)))
(basic-list '("c" "d" "e" "f" "g" "a" "h" "b"))
(list-to-use
(if lowercase?
basic-list
(map string-upcase basic-list))))
(make-line-markup
(list
(string-append
(list-ref list-to-use (car n-a))
(if (or (equal? (car n-a) 2) (equal? (car n-a) 5))
(list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cdr n-a)))
(list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))
#(define (note-name->german-underlined-markup pitch lowercase?)
(make-underline-markup
(make-line-markup
(list
(my-note-name->german-markup pitch lowercase?)))))
gRoot= \once \set ChordNames.chordRootNamer = #note-name->german-underlined-markup
chExBass = {
<c e g b>1-\markup \whiteout { "7" } %% Septakkor
<c e b>1-\markup \whiteout { "7" } %% Septakkord ohne Quint
< c es ges heses >1-\markup { "o" } %% dim
}
chExBasses =
#(append
(sequential-music-to-chord-exceptions chExBass #t)
ignatzekExceptions)
firstNote =
#(define-music-function (music )
(ly:music?)
(event-chord-reduce music))
mymus = \chordmode { cis4:1 \gRoot c:1 \gRoot c d:m h:7^5 d:dim7 }
\layout {
\context {
\ChordNames
chordNameExceptions = #chExBasses
chordNameFunction =
#(lambda (in-pitches bass inversion context)
(if (= (length in-pitches) 1)
(my-note-name->german-markup (car in-pitches) #f)
(ignatzek-chord-names
in-pitches bass inversion context)))
chordNoteNamer =
#(lambda (pitch lowercase?)
(my-note-name->german-markup pitch #f))
chordRootNamer =
#(lambda (pitch lowercase?)
(my-note-name->german-markup pitch #t))
}
}
<<
\new ChordNames \mymus
\mymus
>>
Das Unterstreichen funktioniert nur bei einem Dur-Akkord, ich bräuchte es aber für einen c:1 Akkord.
Wie muss die Funktion modifiziert werden, damit der eintonige Akkord unterstrichen wird?
Hallo Manuela,
willst Du
a)
jeden "Bass"-Akkord unterstrichen haben oder
b)
fallweise vorgehen?
ad a)
Im \layout
chordNameFunction =
#(lambda (in-pitches bass inversion context)
(if (= (length in-pitches) 1)
(note-name->german-underlined-markup (car in-pitches) #f)
(ignatzek-chord-names
in-pitches bass inversion context)))
ad b)
\new ChordNames
{
\once \override ChordName.stencil =
#(grob-transformer 'stencil
(lambda (grob orig)
(grob-interpret-markup grob
(make-underline-markup (make-stencil-markup orig)))))
c:1
c:1
}
HTH,
Harm
Danke Harm
Letzteres