Formatierung der Wiederholungs-Zahlen in einer Volta-Klammer.

Begonnen von Chris, Samstag, 16. November 2019, 13:41

« vorheriges - nächstes »

Chris

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!

Manuela

Lustig, zu diesem Thema habe ich gerade in meinem Wiki was geschrieben:

Text unterhalb der Voltenklammer

Ist allerdings für die neueste Lilypond-Version, ich kann nicht garantieren, dass es mit 2.18 auch funktioniert.
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

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

Chris

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.  :'(

harm6

#4
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

Manuela

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?
Danke für eure Hilfe
viele Grüße
-- Manuela