Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Multimax am Donnerstag, 25. November 2021, 19:45

Titel: Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: Multimax am Donnerstag, 25. November 2021, 19:45
Hallo,

ich würde gerne die Slashchords etwas kleiner und tiefer gestellt haben, wie in dem angehängten Beispiel. Zusätzlich sollte der Basston auch mit # oder b ausgedrückt werden, also Ab anstatt As oder F# anstatt Fis.

Eine Funktion für die  Großbuchstaben hat harm schonmal in einem Beitrag https://archiv.lilypondforum.de/index.php?topic=1021.0 (https://archiv.lilypondforum.de/index.php?topic=1021.0) gepostet.

Könnte mir jemand helfen?

Titel: Antw:Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: Multimax am Donnerstag, 25. November 2021, 19:48
Mir fällt gerade noch spontan ein, dass man vielleicht Kapitälchen (oder in englisch small caps) nehmen könnte. Damit hätte man aber noch keine Tiefstellung.

Ich würde sogar sagen, der Ersteller dieses Buches hat das sogar gemacht. Wenn man sich die kleinen Kapitalen anguckt, haben sie nämlich die gleiche Stärke. Typografisch machts ja auch Sinn.
Titel: Antw:Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: harm6 am Donnerstag, 25. November 2021, 22:30
Hallo,

meinst Du so:


\language "deutsch"

\layout  {
  \context {
    \ChordNames
    %% numerical values found by try and error
    slashChordSeparator =
      \markup \raise #-0.8
        \with-dimensions #'(0 . 0.4) #'(0 . 2.4) \beam #0.6 #4.4 #0.1
   
    chordNoteNamer =
       #(lambda (pitch lowercase?)
         (make-sub-markup ((chord-name->german-markup #t) pitch lowercase?)))

    chordNameLowercaseMinor = ##t
  }
}

\new ChordNames \chordmode { g4 g/fis e:m7 g/h g/a }


Gruß,
  Harm

EDIT code korrigiert
Titel: Antw:Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: Multimax am Freitag, 26. November 2021, 10:50
Ja, super, danke. Genau so meine ich das.

Kapitälchen werden übrigens leider nicht angeboten, da kein Schriftschnitt vorhanden ist.

Wie der Slash in Deinem Code gebaut wird, habe ich verstanden.

Aber wie wird der Buchstabe nach dem Slash definiert?
Lowercase heißt ja eigentlich Kleinbuchstabe. Aber ich vermute, dass ist der Buchstabe für die Bassnote. Wo in dem Code steckt die Anweisung, dass er ein Großbuchstabe wird?
Titel: Antw:Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: harm6 am Freitag, 26. November 2021, 22:53
ZitatAber wie wird der Buchstabe nach dem Slash definiert?
Lowercase heißt ja eigentlich Kleinbuchstabe. Aber ich vermute, dass ist der Buchstabe für die Bassnote. Wo in dem Code steckt die Anweisung, dass er ein Großbuchstabe wird?

Kurze Antwort:
Nirgendwo, passiert automatisch, `lowercase?' ist nur der Name einer Variablen.

Langfassung:

Die Lage:
Zusätzliche Basstöne, also das nach dem Slash, werden per `chordNoteNamer' formatiert, einem context-property.
Per default '(), also ungesetzt! Es springt dann die procedure für den `chordRootNamer' ein, per default `note-name->markup'. Das hat zwar eine `lowercase?'-Variable, kann also das Ergebnis durchaus klein oder groß drucken. Allerdings wird die `lowercase?'-Variable im `chordNoteNamer' seitens LilyPond immer mit #f angeliefert.
Per default wird also immer gross gedruckt.
Wenn man etwas anderes haben möchte, muß man den `chordNoteNamer' auf eine andere procedure setzen.
Vordefiniert sind ja `frenchChords', `germanChords', `semiGermanChords' und `italianChords'
Für `germanChords' und `semiGermanChords' wird die `lowercase?'-Variable schlichtweg ignoriert, die Kleinbuchstaben dort sind hardcoded. `frenchChords' und `italianChords' funktionieren noch anders (verständlicherweise).

Das Ziel:
Gewollt sind deutsche Notennamen (für den zusäzlichen Baßton), großgedruckt.

Der Weg:
Für den `chordNoteNamer' nehmen wir nicht den default für `germanChords', sondern die procedure für den deutschen `chordRootNamer' und nutzen dazu aus, daß dort die `lowercase?'-Variable immer #f ist.
Und fügen noch die Verschiebung ein, per sub-markup.

Et voilà.

Gruß,
  Harm
Titel: Antw:Slash chords kleiner und tiefgestellt mit kreuz oder b statt deutschem Namen
Beitrag von: Multimax am Montag, 29. November 2021, 06:39
Vielen Dank für die ausführliche Antwort. Jetzt hab ichs verstanden.