Gelöst: In der default-Akkordnotation nur H statt B, aber Bb statt Hb setzen

Begonnen von SPF, Freitag, 9. Juli 2021, 23:26

« vorheriges - nächstes »

SPF

Hallo!

Als großer Fan von einheitlichen Standards würde ich gerne den default-Style für Akkordnotation (sprich Chords) verwenden (siehe den Abschnitt "Akkordbezeichnungen anpassen" in http://lilypond.org/doc/v2.22/Documentation/notation/displaying-chords).

Allerdings zeigt die Erfahrung, dass es (durch die historischen Akkordbezeichnungen begründet) dabei im deutschsprachigen Raum immer wieder zu Unsicherheiten kommt, ob mit "Bm" nun ein H-Moll- oder ein Bb-Moll-Akkord gemeint ist. Das ist ja der Grund, weshalb es den semiGerman-Style gibt, der genau dieses Missverständnis verhindert. Allerdings werden im semiGerman-Style ja noch weitere Umstellungen vorgenommen, wie zum Beispiel die Kleinschreibung und nicht-Verwendung von # und b in den Bassnoten.

Meine Frage wäre also: Gibt es eine einfache Möglichkeit, den Buchstaben "B" aus dem default-Style durch ein "H" zu ersezten und nur in dem Fall, dass er mit einem (oder mehreren) b modifiziert wird, zum "Bb" (oder "Bbb", ...) zurückzukehren? Wie gesagt, darf alles andere so bleiben, wie es der default-Style handhabt. Ich möchte also sozusagen einen "defaultWithHInsteadOfB"-Style - eine Mischung zwischen default und semiGerman sozusagen.

Freundliche Grüße

SPF

PS: Meinen Recherchen zufolge gab es das Thema Akkordsymbole schon öfter und ihr habt euch auch schon intensiv damit beschäftigt. Ich hoffe, ihr habt das Thema noch nicht satt. Oder dass es zumindest noch für eine Antwort auf meine Frage reicht...

PPS: Ich habe gerade gemerkt, dass ich den Thread in dieser Form besser im "Fragen und Probleme aller Art"-Bereich eröffnet hätte. (Ursprünglich wollte ich eine Diskussion darüber anstoßen, für wie sinnvoll ihr ein solches Vorgehen wie oben beschrieben findet. Deshalb habe ich ursprünglich den "Allgemeine Diskussion"-Bereich gewählt.) Wenn ein Moderator den Thread verschieben möchte, habe ich natürlich nichts dagegen.
Lilypond 2.22.1 mit Frescobaldi 3.1.3

harm6

Meinst Du so?

#(define (note-name->markup-spf pitch lowercase?)
  (let ((str (note-name->string pitch)))
    (make-line-markup
     (list
      (make-simple-markup
       (string-capitalize
         (if (and (eqv? (ly:pitch-notename pitch) 6)
                  (eqv? (ly:pitch-alteration pitch) 0))
             "h"
             str)))
      ((@@ (lily) accidental->markup) (ly:pitch-alteration pitch))))))

spfGermanChords = {
  \set chordRootNamer = #note-name->markup-spf
  \set chordNoteNamer = #note-name->markup-spf
}

\new ChordNames
  \chordmode {
  \spfGermanChords
  b bis bisis bes beses g/b g/bes g/beses g/bis g/bisis
  }


Gruß,
  Harm

SPF

Hallo Harm,

danke für die Antwort.
Ich wollte eigentlich, dass auch bis und bisis mit einem "H" geschrieben werden und habe den Code demzufolge wie unten zu sehen modifiziert.
Ansonsten wäre das genau das, was mir vorschwebt.

Hätte das vielleicht eine Chance, in die Dokumentation (oder die Snippets) aufgenommen zu werden?
In der Dokumentation steht bei "Akkordbezeichnungen anpassen" unter "chordRootNamer" nur, dass eine Anpassung möglich ist, es steht dort aber nirgendwo, wie...
Ich weiß, dass es wahrscheinlich eher im Bereich "advanced lilyponding" anzusiedeln ist und vielleicht dann an dieser Stelle nicht passt. Deshalb vielleicht als Snippet mit Link?!? Eventuell noch mit Kommentaren versehen (das Einfügen von Kommentaren mit "%" hat bei mir aber zu Fehlern bei der Übersetzung geführt. Deshalb habe ich in dem untenstehenden Code keine Kommentare eingefügt).

Freundliche Grüße

SPF


#(define (note-name->markup-spf pitch lowercase?)
  (let ((str (note-name->string pitch)))
    (make-line-markup
     (list
      (make-simple-markup
       (string-capitalize
         (if (and (eqv? (ly:pitch-notename pitch) 6)
                  (or (eqv? (ly:pitch-alteration pitch) 0)
                      (> (ly:pitch-alteration pitch) 0)))
             "h"
             str)))
      ((@@ (lily) accidental->markup) (ly:pitch-alteration pitch))))))

spfGermanChords = {
  \set chordRootNamer = #note-name->markup-spf
  \set chordNoteNamer = #note-name->markup-spf
}

\new ChordNames
  \chordmode {
  \spfGermanChords
  b bis bisis bes beses g/b g/bes g/beses g/bis g/bisis
  }

Lilypond 2.22.1 mit Frescobaldi 3.1.3

harm6

ZitatHätte das vielleicht eine Chance, in die Dokumentation (oder die Snippets) aufgenommen zu werden?
Eher nicht, denn das Resultat ist doch etwas sektiererisch, imho. ;)

ZitatIn der Dokumentation steht bei "Akkordbezeichnungen anpassen" unter "chordRootNamer" nur, dass eine Anpassung möglich ist, es steht dort aber nirgendwo, wie...
Nun, um das erschöpfend zu behandeln wären so einige neue Seiten der Doku hinzuzufügen. Da die Doku aber bereits sehr umfangreich ist sehe ich da keine guten Aussichten.

Ein Weg selbst durchzusteigen ist sich anzuschauen wie der chordRootNamer per default kodiert ist und wie die anderen (für deutsch, französich, italienisch) davon abweichen und warum.
Anschließend versuche es zu verändern (natürlich alles nicht in den source-files sondern im eigenen ly-file).

ZitatEventuell noch mit Kommentaren versehen (das Einfügen von Kommentaren mit "%" hat bei mir aber zu Fehlern bei der Übersetzung geführt. Deshalb habe ich in dem untenstehenden Code keine Kommentare eingefügt).

LilyPond-source-code ist ganz generell viel zu spärlich kommentiert. Auch hier würden Kommentare wohl besser sein, als neue Kapitel in der Doku.

Scheme-code wird zeilenweise mittels Semikolon kommentiert:


#(pretty-print
  (list
    'foo
    ;'bar
    'buzz))


Es gibt zwar auch eine Möglichkeit ganze Blöcke auszukommentieren, ist aber in scheme nicht üblich.

Gruß,
  Harm


SPF

Hallo!

Alles klar.  :)
Wenn ich Zeit habe, steige ich vielleicht mal tiefer in den Code ein... Aktuell sehe ich da aber wenig Chancen.
Danke nochmal für die Hilfe und die Infos!

Grüße
SPF
Lilypond 2.22.1 mit Frescobaldi 3.1.3