Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Chris am Samstag, 16. November 2019, 13:41

Titel: Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: Chris am Samstag, 16. November 2019, 13:41
Hallo allerseits!

Wie kann ich ein Override für die Zahlen in den Volta-Klammern erstellen (siehe angehängten Screenshot)? Ich würde gerne die Schriftart ändern, habe aber bisher dazu nichts finden können. Ich verwende Lilypond Version 2.18.2.

Danke und schöne Grüße!
Titel: Antw:Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: Manuela am Samstag, 16. November 2019, 13:49
Lustig, zu diesem Thema habe ich gerade in meinem Wiki was geschrieben:

Text unterhalb der Voltenklammer (https://lilypond.miraheze.org/wiki/Text_unterhalb_der_Voltenklammer)

Ist allerdings für die neueste Lilypond-Version, ich kann nicht garantieren, dass es mit 2.18 auch funktioniert.
Titel: Antw:Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: harm6 am Samstag, 16. November 2019, 15:03
Wenn die Änderungen größer oder komplexer sind, verwende
\set Score.repeatCommands = ...
wie in Manuelas link.

Möglicherweise reicht aber schon:
\override Score.VoltaBracket.font-name = "Purisa"

Allerdings ist der anfängliche default "1.--", hardcoded in volta-repeat-iterator.cc (wär ein context-property nicht besser?).
In diesem Fall kommt also "1.--3." für die erste Klammer raus.

Das doppelte "-" stört mich je nach Schriftart.
Also vielleicht doch besser gleich auf
\set Score.repeatCommands = ...
zuzugreifen.


Gruß,
  Harm
Titel: Antw:Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: Chris am Samstag, 16. November 2019, 18:40
Oje, das klingt ja wesentlich komplizierter als erwartet. Das Doppelte "-" ist leider keine Option und das, was Manuela beschreibt, ganz schön umständlich - vor allem, wenn ich das über eine Layout-Datei eigentlich für mehrere Musikstücke einrichten möchte. Ich dachte, das müsste ein Standard-Anliegen vieler Lilypond-Nutzer sein, für das es einen Weg mit den üblichen Mitteln gibt.  :'(
Titel: Antw:Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: harm6 am Samstag, 16. November 2019, 20:40
Zitat
Oje, das klingt ja wesentlich komplizierter als erwartet. Das Doppelte "-" ist leider keine Option und das, was Manuela beschreibt, ganz schön umständlich - vor allem, wenn ich das über eine Layout-Datei eigentlich für mehrere Musikstücke einrichten möchte.
Deshalb mein Kommentar über das context-property. Und \set repeatCommands ist explizit für die manuelle Eingabe nicht für gerelles layout.

Aber wenns so nicht geht, dann muß man selbst ran:


\version "2.19.83"

#(define format-dash
  (lambda (grob)
    (let* ((text (ly:grob-property grob 'text))
           (splitted-text
             (if (string? text)
                 (string-split text #\-)
                 #f)))
      (if splitted-text
          (ly:grob-set-property! grob 'text
            (make-concat-markup
              (list-join
                (remove string-null? splitted-text)
                #{
                  \markup \concat { \hspace #0.3 - \hspace #0.3 }
                #})))))))
     
\layout {
  \context {
    \Score
    \override VoltaBracket.before-line-breaking = #format-dash
    \override VoltaBracket.font-name = "Comic Sans MS"
  }
}

\repeat volta 4 { R1 } \alternative { R R }


Natürlich kannst Du bei
\markup \concat { \hspace #0.3 - \hspace #0.3 }
auch anders Formatieren. Feel free.


HTH,
  Harm

EDIT code robuster und effizienter gestaltet
Titel: Antw:Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.
Beitrag von: Manuela am Montag, 18. November 2019, 06:45
Zitat von: Chris am Samstag, 16. November 2019, 18:40wenn ich das über eine Layout-Datei eigentlich für mehrere Musikstücke einrichten möchte. Ich dachte, das müsste ein Standard-Anliegen vieler Lilypond-Nutzer sein, für das es einen Weg mit den üblichen Mitteln gibt.  :'(

context-property wäre natürlich ideal. Als Vereinfachung beim derzeitigen Zustand könnte man die Anweisungen zu einer Variablen zusammenfassen, etwa so
\version "2.19.48"
\language "deutsch"

voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
voltaEnd = \markup  \text \italic \fontsize #2 { Fine }
startVolta = {       
\once \override Score.VoltaBracket.edge-height = #'(0 . 2)
\set Score.repeatCommands = #(list (list 'volta voltaAdLib) 'start-repeat)
}
endVolta =  {       
\once \override Score.VoltaBracket.edge-height = #'(2 . 0)
\set Score.repeatCommands = #(list (list 'volta voltaEnd) 'end-repeat)
}
Struktur = {
  \repeat volta 2
  s1
  \alternative
  {
    {
      \startVolta
      \bar "||"
      s1
    }
    {
      \endVolta
      s1
    }
  }
}

\new PianoStaff
<<
  \new Staff
  <<
    { \repeat unfold 8 \mus }
    \new NullVoice \Struktur
  >>
  \new Staff \repeat unfold 8 \mus
>>


\set Score.repeatCommands wirkt sich anscheinend nur genau dort aus, wo es verwendet wird, nicht auf nachfolgende Voltenklammern. Ich vermute mal, dass die Logik ähnlich wie bei den Oktavierungsspannern ist Muss Staff.ottavation tatsächlich nach jedem \ottava neu gesetzt werden? (https://archiv.lilypondforum.de/index.php/topic,2338.msg13108.html)