repeat segno: Schluss innerhalb Takt, Schlussstrich unterdrücken

Begonnen von martinmagtenor, Mittwoch, 28. August 2024, 20:33

« vorheriges - nächstes »

martinmagtenor

Lilypond 2.24.1

Ich bin auf den Fall gestoßen, dass eine Fine-Markierung aus repeat segno innerhalb eines Taktes erfolgen soll. Offenbar geht Lilypond pauschal davon aus, dass das immer an einem Taktende erfolgt und setzt mit fineSegnoBarType einen Schlussstrich.

Das ist in dem Fall unpassend. Beispiel:

\version "2.24.1"

#(set-default-paper-size "a7")

music = \fixed c' {
  f1
  \repeat segno 2 {
    g4
    \volta 2 \fine f a g
    \volta 1 a1
  }
  \section
}

Dafür suche ich eine Lösung, komme aber nicht recht voran.

Variante 1, die "schmutzige": das fineSegnoBarType-Objekt wird so überschrieben, dass es "leer" ist. Um \override verwenden zu können, brauche ich aber den Pfad, woran ich aktuell scheitere.

Variante 2, die "elegante": man motiviert Lilypond, das fineSegnoBarType-Objekt nur dann zu platzieren, wenn an der Stelle ein Taktende ist. Dazu habe ich bislang nichts gefunden.

Ich würde gerne in diesem speziellen Fall den Schlussstrich im Takt unterdrücken. Im "Original" kommt noch eine eingeklammerte Fermate über den Schlusston.

Was muss ich machen? Oder wo kann ich nachsehen?

Martin


harm6

Hallo Martin,

ich hatte mich bislang noch nicht mit \repeat segno beschäftigt, aber mich jetzt etwas eingelesen. Tatsächlich finde ich das Ganze nicht so einfach zu verstehen und musste noch ein bisschen experimentieren bevor ich halbwegs durchsteigen konnte...

Zunächst:
Dein Beispiel ist falsch notiert. Das merkt man, wenn man \unfoldRepeats verwendet, es gibt dann eine Warnung und der output ist falsch. Tatsächlich richtig ist:
mus = \fixed c' {
  f1
  \repeat segno 2 {
    g4
    \volta 2 \fine
    \volta 1 { f a g a1 }
  }
  \section
}

\score { \mus }
\score { \unfoldRepeats \mus }

Auch ist (zumindest in diesem Beispiel) nicht fineSegnoBarType sondern fineBarType für den "|."-Taktstrich verantwortlich.

ZitatIch bin auf den Fall gestoßen, dass eine Fine-Markierung aus repeat segno innerhalb eines Taktes erfolgen soll. Offenbar geht Lilypond pauschal davon aus, dass das immer an einem Taktende erfolgt und setzt mit fineSegnoBarType einen Schlussstrich.

Das ist in dem Fall unpassend.

Das ist so nicht richtig. Vielmehr ist es keine LilyPond-Eigenheit beim "Fine"-Zeichen einen "|."-Taktstrich zu setzen, sondern allgemein üblich, mit der Variante statt "|." den doppelten Taktstrich zu setzen, also "||".
Das kannst Du dann mit fineBarType aber ändern.
Tatsächlich könntest Du auch "" verwenden (und der "Schluss"-Taktstrich verschwindet), allerdings eben auch mit unfoldRepeats am tatsächlichen Ende.
Ähnliches Problem entsteht, wenn Du die BarLine selbst angehst.

Falls Du natürlich unfoldRepeats nicht (oder nur fürs midi) verwendest kann Dir dieses spezielle Problem egal sein.


HTH,
  Harm




martinmagtenor

Hallo Harm,

vielen Dank. Tatsächlich spielt in meinem Fall unfold keine Rolle. Aber klar, es richtig zu machen ist immer besser.

Und danke für den Hinweis auf fineBarType, da war ich wohl auf der falschen Spur.

Martin


martinmagtenor

Hallo Harm,

ich habe jetzt erst bemerkt, dass \repeat segno erst in Version 2.24 Einzug gehalten hat. Deshalb ist wohl auch die deutschsprachige Dokumentation dazu etwas "dünn".

Egal, die für mich einfachste Lösung im Moment ist die, einfach das \fine wegzulassen.

Der Komponist hat an der betreffenden Stelle Fermaten vorgesehen. Das sollte genügen. Mal sehen.

Martin