Problem mit Score.repeatCommands

Begonnen von Manuela, Donnerstag, 10. November 2022, 14:22

« vorheriges - nächstes »

Manuela

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

Malte

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.

Manuela

Danke, Malte.
Klar, Lilypond kann nicht ahnen, dass es eigentlich "volta 3" sein sollte.
Danke für eure Hilfe
viele Grüße
-- Manuela