Forumsadmin gesucht! Details gibt’s in diesem Thread.

 

Hauptmenü

Dynamische Anpassung der Voice-Ausgabe zw. Partitur und Einzelstimme?

Begonnen von Schwartz187, Mittwoch, 19. Juni 2024, 21:14

« vorheriges - nächstes »

Schwartz187

Liebes Forum,

zuerst möchte ich, da dies mein erster Post im Lilypond-Forum ist, allseits Hallo sagen und mich für die vielen tollen Tipps und Anregungen bedanken. Einem Lilypond-Neuling wie mir ist dieser Erfahrungsschatz eine große Hilfe.

Ich habe auch eine konkrete Frage bzw. ein konkretes Problem, das ich nicht gelöst bekomme. Womöglich eine Anfängersache, aber ich verzweifle daran.

Es geht um einen mehrstimmigen Vokalsatz, alte Musik, überliefert in weißer Mensuralnotation. Die "Takte" (wenn man den Begriff da überhaupt verwenden sollte) sind lang: 4/2. Da alle Stimmen eigene rhythmische Wege beschreiten und auch noch separat und verschieden textiert sind, die Seitenbreite aber begrenzt ist, habe ich oft nur einen oder zwei Takte in einer Systemzeile, sodass man aus dem Blättern nicht herauskommt.

Um etwas mehr Notenmaterial auf die Seite zu kriegen, habe ich mich dazu entschlossen, auch den Umbruch nach dem Halbtakt zuzulassen, was mit \bar "" gut zu realisieren ist (und bei Mensuralnotation auch musikalisch nicht so schlimm ist).

So weit, so gut. Jetzt das Problem:

Nach der Ausgabe der Partitur lasse ich die Stimmen einzeln ausgeben, und bei dieser separaten Stimmausgabe würde ich den Umbruch im Halbtakt gerne wieder abschalten, weil hier das Platzproblem in der Horizontale nicht entsteht. Dieses Abschalten will mir aber nicht gelingen.

Versucht habe ich es mit einer Variable:

Umbruch = { \bar "" }

die ich ganz zu Beginn der ly-Datei definiere. Im Notat wird sie folgendermaßen verwendet:

PartPOneVoiceOne = {
   ...
   g'4 c''4 c''4 a'4 \Umbruch g'2 r4 a'8 bes'8 | % 5
   ...
   }

Nach Ausgabe der gesamten Partitur (mit \score { ... \new StaffGroup ... \new Staff ... \context Voice = "PartPOneVoiceOne" {  \PartPOneVoiceOne } ...) und vor der Ausgabe der einzelnen Stimmen (\score { ... \new Staff ... \context Voice = "PartPOneVoiceOne" {  \PartPOneVoiceOne } ...) wollte ich diese Variable einfach redefinieren:

Umbruch = { }

Doch das hat keinerlei Effekt.

Auch die Neudefinition des \bar-Befehls vor der Einzelstimmenausgabe bewirkt nichts.

Offensichtlich wird beim Kompilieren/Parsen der ly-Datei die Notenfolge der Stimmen sofort 'expandiert' (wie man bei LaTeX sagen würde), sodass Befehle wie \bar oder selbstdefinierte Variablen wie \Umbruch (in meinem Beispiel) sich nicht mehr dynamisch ändern.

Der langen Rede kurzer Sinn: Weiß mir jemand Rat, wie ich dieses Problem löse? Ich hoffe, ich konnte mich verständlich machen.

Viele Grüße in die Runde
Florian

Malte

Hallo Florian,

willkommen im Forum! Bitte poste nach Möglichkeit immer ein kompilierbares Minimalbeispiel und setze deinen Code in
Code-Tags

Wenn ich dich richtig verstehe, könnte folgendes Vorgehen hilfreich sein: Die eigentlichen Noten in einer Datei als Variable definieren, z. B. in einer Datei musik.ily (die Dateiendung .ily ist LilyPond egal, zeigt Menschen aber, dass daraus selbst kein PDF wird):
\version "2.24.3"

musik = {
    \repeat unfold 10 {
      \repeat unfold 16 c'32
      \umbruch
      \repeat unfold 16 c'32
    }
}

Diese kann dann in zwei Dateien partitur.ly und stimme.ly eingebunden werden und davor der nötige Befehl \umbruch definiert werden. Also z. B. partitur.ly:
\version "2.24.3"

umbruch = \bar ""
\include "musik.ily"

\score { \musik }
und stimme.ly
\version "2.24.3"

umbruch = {}
\include "musik.ily"

\score { \musik }

Hilft dir das?

Malte

Da fällt mir noch eine ganz andere Möglichkeit in nur einer Datei ein, die die Funktion \tag verwendet, um die Umbrüche aus der Einzelstimme zu entfernen:
\version "2.24.3"

umbruch = \tag partitur \bar ""

musik = {
    \repeat unfold 10 {
      \repeat unfold 16 c'32
      \umbruch
      \repeat unfold 16 c'32
    }
}

\book {
  \bookOutputName "Partitur"
  \musik
}

\book {
  \bookOutputName "Stimme"
  \removeWithTag partitur \musik
}
Diese Variante erzeugt zwei PDFs Partitur.pdf und Stimme.pdf.

Schwartz187

Vielen Dank, Malte, ja, das ist genau, was ich suchte. Super!

Gibt es denn auch die Option, mit Variante 2 (die mir sehr elegant erscheint) nur *eine* PDF zu erzeugen, in der hintereinander Partitur und Stimmen stehen?

Schwartz187

Nur ein kurzes Update: Es klappt natürlich auch bei der Ausgabe in *eine* PDF-Datei, sorry für die überflüssige Nachfrage. Was für eine schöne Lösung, nochmals Danke!

Malte

Ja, das geht, wie du selbst herausgefunden hast. Ggf. ist noch der Befehl \bookpart interessant, schau dazu ggf. in die Dokumentation.