• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

als Akkord "fis" schreiben und nicht f#"

Begonnen von rainrain, Donnerstag, 31. Oktober 2013, 10:24

Vorheriges Thema - Nächstes Thema

rainrain

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


harm6

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

rainrain

Hallo Harm,

vielen Dank! So hat es jetzt auch bei mir geklappt.

Ich habe die Version 2.14.2.

Viele Grüße,
rainrain

Manuela

#3
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.

harm6

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