Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: rainrain am Donnerstag, 31. Oktober 2013, 10:24
-
Hallo,
ich möchte bei den Akkorden einer Liedbegleitung den fis-Moll-Akkord als kleines "fis" sehen. Bei mir wird aber leider immer ein kleiner f mit hochgestelltem # gezeigt.
Meine Einstellungen sind:
\chords {
\set chordChanges = ##t
\set chordNameLowercaseMinor = ##t
\germanChords
fis2:m e a e fis:m e a1
}
Vielen Dank für Hilfe!
LG
rainrain
-
Hallo rainrain,
willkommen im Forum.
Bitte poste auch die benutzte LilyPond-Version. Es gibt da zum Teil deutliche Unterschiede.
Die Formatierungsmöglichkeiten für Akkordnamen sind allerdings seit 2.14. nicht groß verändert worden (leider). Insoweit funktioniert mein Vorschlag unten für alle Versionen ab 2.14. bis 2.17.29 (so weit habe ich es getestet).
Eigentlich war ich überzeugt diesen Code schon mal hier im Forum gepostet zu haben, kann aber im Moment nichts finden. Macht aber nichts, im Gegenteil: Ich habe ihn noch mal durchgesehen und bemerkt, daß eine der Bedingungen zu einschränkend formuliert war.
Hier also der Code auf dem neuesten Stand:
\version "2.14.2"
% up to "2.17.29"
#(set-global-staff-size 19)
% German Chord-Names using the german Note-Names (no sharp- or flat-Symbol),
% with the possibility of lowercase output.
% After -> http://lists.gnu.org/archive/html/lilypond-user/2009-09/msg00622.html
#(define ((chord-name->my-german-markup-text-alteration) pitch lowercase?)
(define (pitch-alteration-semitones pitch)
(inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
(define (conditional-string-downcase str condition)
(if condition
(string-downcase str)
str))
(let* ((name (ly:pitch-notename pitch))
(alt-semitones (pitch-alteration-semitones pitch))
;; The following condition is weird. Though, we let them in to ease
;; comporability with the original.
(n-a (cond ((member (cons name alt-semitones) `((6 . -1) (6 . -1)))
(cons 7 alt-semitones))
(else (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))
(make-simple-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)))))))
#(define myGermanChords (chord-name->my-german-markup-text-alteration))
%-------------------- Test -----------------------------------------------------
\layout {
ragged-right = ##f
indent = 0
}
myLayoutOne =
\layout {
\context {
\ChordNames
chordNameLowercaseMinor = ##t
chordRootNamer = #myGermanChords
chordNoteNamer = #note-name->german-markup
}
}
myLayoutTwo =
\layout {
\context {
\ChordNames
chordNameLowercaseMinor = ##f
chordRootNamer = #myGermanChords
chordNoteNamer = #note-name->german-markup
}
}
myMajorChords = \chordmode{
c:7 cis d dis e eis f fis g gis a ais b bis c/bes
\break
c ces b bes a aes g ges f fes e ees d des c
\break
cisis disis eisis fisis gisis aisis bisis
\break
ceses deses eeses feses geses aeses beses
}
myMinorChords = \chordmode{
c:m7 cis:m d:m dis:m e:m eis:m f:m fis:m g:m gis:m a:m ais:m b:m bis:m c:m/b
\break
c:m ces:m b:m bes:m a:m aes:m g:m ges:m f:m fes:m e:m ees:m d:m des:m c:m
\break
cisis:m disis:m eisis:m fisis:m gisis:m aisis:m bisis:m
\break
ceses:m deses:m eeses:m feses:m geses:m aeses:m beses:m
}
\score {
\new ChordNames {
\myMajorChords
}
\layout { \myLayoutOne }
\header {
piece = \markup \column \bold { "Major Chords (german)" \vspace #2 }
}
}
\score{
\new ChordNames {
\myMinorChords
}
\layout { \myLayoutOne }
\header {
piece = \markup \column \bold { "Minor Chords 1 (german)" \vspace #2 }
}
}
\score{
\new ChordNames {
\myMinorChords
}
\layout { \myLayoutTwo }
\header {
piece = \markup \column \bold { "Minor Chords 2 (german)" \vspace #2 }
}
}
PNG im Anhang.
HTH,
Harm
-
Hallo Harm,
vielen Dank! So hat es jetzt auch bei mir geklappt.
Ich habe die Version 2.14.2.
Viele Grüße,
rainrain
-
Hallo,
ich bin zufällig auf diesen Thread gestoßen. Inzwischen habe ich mich durch verschiedene Scheme-Tutorials gekämpft und versuche, Scheme-Code zu verstehen. Das meiste in diesem Thread verstehe ich, nur diesen Teil nicht:
(n-a (cond ((member (cons name alt-semitones) `((6 . -1) (6 . -1)))
(cons 7 alt-semitones))
(else (cons name alt-semitones)))))
Meine Frage zu diesem Code: was bewirkt das Quasiquote? Ich weiß, was dabei rauskommt, nämlich ein Paar ( n . m ), wobei n für die Note (0=c, 1=d usw) steht und m die Versetzung in Halbtönen. Ich kann mir jedoch nicht enträtseln, was das Quasiquote bewirkt, weil die unquotes fehlen.
-
Hallo Manuela,
das quasiquote steht schon in der entsprechenden Definition in chord-name.scm.
Es ist hier wie dort ohne Bedeutung, eben aus dem Grunde den Du genannt hast: Es gibt nichts was mit unquote versehen werden könnte/sollte.
Im source-file ist es offensichtlich nie korrigiert worden, und ich habe es unkorrigiert übernommen.
Es stört aber auch nicht... ;)
Gruß,
Harm