Autor Thema: als Akkord "fis" schreiben und nicht f#"  (Gelesen 1713 mal)

rainrain

  • Gast
als Akkord "fis" schreiben und nicht f#"
« 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


harm6

  • Gast
Re: als Akkord "fis" schreiben und nicht f#"
« Antwort #1 am: Donnerstag, 31. Oktober 2013, 12:01 »
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

  • Gast
Re: als Akkord "fis" schreiben und nicht f#"
« Antwort #2 am: Donnerstag, 31. Oktober 2013, 21:20 »
Hallo Harm,

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

Ich habe die Version 2.14.2.

Viele Grüße,
rainrain

Manuela

  • Gast
Re: als Akkord "fis" schreiben und nicht f#"
« Antwort #3 am: Sonntag, 20. März 2016, 22:58 »
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.
« Letzte Änderung: Sonntag, 20. März 2016, 23:00 von Manuela »

harm6

  • Gast
Re: als Akkord "fis" schreiben und nicht f#"
« Antwort #4 am: Montag, 21. März 2016, 01:44 »
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