Autor Thema: Akkordsymbole in internationaler Notation (B mit Auflösungszeichen)  (Gelesen 3488 mal)

complanar

  • Member
Hallo,

ich hätte für Akkordsymbole gern die internationale Variante. Sie unterscheidet sich von der Default Ausgabe nur dadurch, dass für ein B (deutsch H) ein B mit Auflösungszeichen geschrieben wird. Gleiches soll für eventuell abweichende Basstöne gelten.

Ich hab mit dem Scheme-Code in scm/chord-name.scm mal ein bisschen rumprobiert, habe es aber nicht hinbekommen – nur lauter Fehlermeldungen. Mit den normalen chordRootNamer und chordNoteNamer habe ich es auch probiert, aber ebenfalls nicht hinbekommen.

Eingentlich muss eigentlich nur das sonst unterdrückte Alterationszeichen für das B aktiviert werden. Ich vermute mal, man könnte es mit einer Änderung an der Funktion accidential->markup oder accidential->text-accidential-markup hinbekommen (scm/chord-name.scm, gleich zu Beginn) Leider kenne ich mich mit Scheme nicht so gut aus, so dass ich nicht genau weiß, was zu ändern ist, bzw. wie ich es dann in meinen chordRootNamer hineinbekomme.

Ich benutze LilyPond 2.12.3 unter Linux. die Pfadangaben beziehen sich bei mir auf /usr/share/lilypond/2.12.3/[\code]

Könnte mir jemand helfen? Ich hab mich ehrlich gesagt etwas gewundert, dass es das noch nicht eingebaut gibt, weil diese Notation durchaus üblich ist.

Holger

complanar

  • Member
Re: Akkordsymbole in internationaler Notation (B mit Auflösungszeichen)
« Antwort #1 am: Mittwoch, 11. April 2012, 23:57 »
Sehr viel später...

Ich habe ein Lösung gefunden. Für alle, die es vielleicht interessiert poste ich sie mal gleich inklusive Test.

\version "2.14.2"

% Chords
#(define (note-name->international-markup pitch lowercase?)
  (let* (
    (name (ly:pitch-notename pitch))
    (alt (ly:pitch-alteration pitch))
    (hspace (vector-ref #(0.15 0.15 0.05 0.05 0.15) (+ (* alt 2) 2)))
    (raise (vector-ref #(0.6 0.6 0.65 0.8 0.7) (+ (* alt 2) 2)))
  )
  (make-line-markup
    (list
      (make-simple-markup
        (if lowercase?
          (vector-ref #("c" "d" "e" "f" "g" "a" "b") name)
          (vector-ref #("C" "D" "E" "F" "G" "A" "B") name)
        )
      )
      (if (and (= alt 0) (!= name 6))
        ;; If it's natural and not b, do nothing
        (make-line-markup (list empty-markup))
        ;; Else add alteration
        (make-line-markup
          (list
            (make-hspace-markup hspace)
            (make-smaller-markup (make-raise-markup raise
                (make-musicglyph-markup
                  (assoc-get alt standard-alteration-glyph-name-alist ""))))
            ))
      ))))
)

internationalChords = {
  \set chordRootNamer = #note-name->international-markup
  \unset chordNoteNamer
}

\chords {
  \internationalChords
  ceses ces c cis cisis
  deses des d dis disis
  \break
  eeses ees e eis eisis
  feses fes f fis fisis
  \break
  geses ges g gis gisis
  aeses aes a ais aisis
  \break
  beses bes b bis bisis
  ceses ces c cis cisis
}

Ich hoffe, es nützt auch anderen.
« Letzte Änderung: Donnerstag, 12. April 2012, 02:25 von complanar »