Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Donnerstag, 10. November 2022, 14:22

Titel: Problem mit Score.repeatCommands
Beitrag von: Manuela am Donnerstag, 10. November 2022, 14:22
Folgender Code kompiliert zwar und macht auch das, was er soll
\version "2.23.6"
\language "deutsch"

vschlus = \markup { \text \italic \larger { Schluss } }
mus = \relative c'' { c4 c c c }
#(allow-volta-hook "||")

Struktur = {
  s1
  \set Score.repeatCommands = #'(start-repeat)
  s1 s
  \set Score.repeatCommands = #'((volta "1") end-repeat)
  \bar "||"
  s1
  \set Score.repeatCommands = #'((volta "2") end-repeat)
  s1
  \set Score.repeatCommands = #(list (list 'volta vschlus) 'end-repeat)
  s1
  \set Score.repeatCommands = #'((volta #f))
  \bar "||"
}

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

aber ich bekomme folgende Fehlermeldung

Warnung: Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet
Warnung: Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet


Was mache ich falsch?
Titel: Antw:Problem mit Score.repeatCommands
Beitrag von: Malte am Donnerstag, 10. November 2022, 17:19
Die Ausgabe sieht richtig aus, weil LilyPond das Beste aus der Situation macht, ohne die Voltaklammern zu schachteln. Es scheint aber so, als erwarte LilyPond, dass eine Voltaklammer explizit mit (volta #f) beendet wird, bevor die nächste startet.

Also erstmal mit (volta #f) beenden, dann mit (volta xyz) die nächste beginnen:
Struktur = {
  s1
  \set Score.repeatCommands = #'(start-repeat)
  s1 s
  \set Score.repeatCommands = #'((volta "1"))
  \bar "||"
  s1
  \set Score.repeatCommands = #'((volta #f) (volta "2") end-repeat)
  s1
  \set Score.repeatCommands = #`((volta #f) (volta ,vschlus) end-repeat)
  s1
  \set Score.repeatCommands = #'((volta #f))
  \bar "||"
}

Anmerkung: Die Liste mit vschlus kann durch Verwendung von ` und , übersichtlicher geschrieben werden. ` ist wie ' bis auf dass die Wirkung durch , aufgehoben werden kann.

Edit: Beim ersten Doppelstrich habe ich end-repeat entfernt, du kannst ja nur :|. oder || haben, nicht beides.
Titel: Antw:Problem mit Score.repeatCommands
Beitrag von: Manuela am Sonntag, 13. November 2022, 07:37
Danke, Malte.
Klar, Lilypond kann nicht ahnen, dass es eigentlich "volta 3" sein sollte.