Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Kreuzschnabel am Samstag, 18. Mai 2019, 22:57

Titel: Chorsatz: zwischen zwei und vier Systemen wechseln
Beitrag von: Kreuzschnabel am Samstag, 18. Mai 2019, 22:57
Tach, ich habe hier einen ,,normal" gesetzten vierstimmigen Chorsatz (also zwei Systeme und zwei Stimmen pro System mit \voiceOne und \voiceTwo), den ich gern für einzelne Zeilen (wo es wegen versetzter Einsätze etc. sonst zu unübersichtlich wird) in eine viersystemige Chorpartitur auflösen möchte (also ein System pro Stimme).

Meine jetzige Lösung besteht darin, beim Wechsel von zwei auf vier Systeme eine neue \score-Umgebung anzufangen und entsprechend zu definieren. Das funktioniert im grafischen Satz, hat aber den Nachteil, dass datenlogisch dort ein neues Stück anfängt, was spätestens dann stört, wenn ich von dem Ganzen eine midi-Datei haben will.

Gibt's eine Möglichkeit, direkt in den Musikdaten zu sagen ,,ab hier separate Systeme" bzw. ,,ab hier wieder \voiceOne etc"? Irgendeine abseitige \override-Anweisung muss es da doch geben, auf die kein Mensch kommt :D

--ks
Titel: Antw:Chorsatz: zwischen zwei und vier Systemen wechseln
Beitrag von: harm6 am Montag, 20. Mai 2019, 21:28
Hallo Kreuzschnabel,

willkommen im Forum.

Meinst Du so was:


\version "2.19.82"

sop = {
  \repeat unfold 4 e''4
 
  \break
 
  \context Staff = "1div"
    \repeat unfold 4 e''
   
  \break
 
  \context Staff = "1+2"
    \context Voice = "sop"
      \repeat unfold 4 e''
}
   
lyrSop = \lyricmode {
  \repeat unfold 4 "one"4
 
  \context Lyrics = "lyr1div"
  \repeat unfold 4 "one"
 
  \context Lyrics = "lyr1"
  \repeat unfold 4 "one"
}
   
alt = {
  c''2 g'2
  \context Staff = "2div"
  {
    c''2 g'2
  }
  \context Staff = "1+2"
  \context Voice = "alt"
  {
    c''2 g'2
  }
}
   
lyrAlt = \lyricmode {
  \repeat unfold 2 "two"2
 
  \context Lyrics = "lyr2div"
  \repeat unfold 2 "two"
 
  \context Lyrics = "lyr2"
  \repeat unfold 2 "two"
}
   
ten = {
  g'2 c''2
 
  \context Staff = "3div"
    { g'2 c''2 }
 
  \context Staff = "3+4"
    \context Voice = "ten"
      { g'2 c''2 }
}
   
lyrTen = \lyricmode {
  \repeat unfold 2 "three"2
 
  \context Lyrics = "lyr3div"
  \repeat unfold 2 "three"
 
  \context Lyrics = "lyr3"
  \repeat unfold 2 "three"
}
   
bass = {
  \repeat unfold 4 c'4
 
  \context Staff = "4div"
    \repeat unfold 4 c'
   
  \context Staff = "3+4"
    \context Voice = "bass"
    \repeat unfold 4 c'
}
   
lyrBass = \lyricmode {
  \repeat unfold 4 "four"4
 
  \context Lyrics = "lyr4div"
  \repeat unfold 4 "four"
 
  \context Lyrics = "lyr4"
  \repeat unfold 4 "four"
}

keepAliveDummy = s1*3

setInstrumentNames =
#(define-scheme-function (mrkp)(markup?)
#{
    \set Staff.instrumentName = $mrkp
    \set Staff.shortInstrumentName = $mrkp
#})


\score {
  <<
    %% 1+2 on one Staff
    \new Staff = "1+2" \with \setInstrumentNames "1+2"
      <<
        \new Voice = "sop" { \voiceOne \sop }
        \new Voice = "alt" { \voiceTwo \alt }
      >>
     
    %% 1 and 2 divisi
    \new Staff = "1div" \with \setInstrumentNames "1"
      \keepAliveDummy
     
    \new Lyrics = "lyr1div" \keepAliveDummy
   
    \new Staff = "2div" \with \setInstrumentNames "2"
      \keepAliveDummy
     
    \new Lyrics = "lyr2div" \keepAliveDummy
     
    %% Lyrics if Staff 1+2 and/or 3+4 is active
    \new Lyrics = "lyr1" \lyrSop
    \new Lyrics = "lyr2" \lyrAlt
    \new Lyrics = "lyr3" \lyrTen
    \new Lyrics = "lyr4" \lyrBass
   
    %% 3+4 on one Staff
    \new Staff = "3+4" \with \setInstrumentNames "3+4"
      <<
        \new Voice = "ten" { \voiceOne \ten }
        \new Voice = "bass" { \voiceTwo \bass }
      >>
     
    %% 3 and 4 divisi
    \new Staff = "3div" \with \setInstrumentNames "3"
      \keepAliveDummy
       
    \new Lyrics = "lyr3div" \keepAliveDummy
   
    \new Staff = "4div" \with \setInstrumentNames "4"
      \keepAliveDummy
     
    \new Lyrics = "lyr4div" \keepAliveDummy
  >>
  \layout { \context { \Staff \RemoveAllEmptyStaves } }
}


Gruß,
  Harm
Titel: Antw:Chorsatz: zwischen zwei und vier Systemen wechseln
Beitrag von: Kreuzschnabel am Mittwoch, 22. Mai 2019, 18:06
Vielen Dank schonmal fürs Mitdenken. Das gegebene Codebeispiel kompiliert bei mir nicht (v. 2.18.2), vielleicht ist es auch zum Anpassen gedacht, aber \context ist schon mal ein guter Ansatz.

Jetzt kommen absolut "bloody beginners"-Fragen. Ich hab mal die saubere Trennung von Content und Layout wie im gegebenen Beispiel angelegt und angefangen, Inhalte reinzuschreiben und mit \context zu arbeiten. Natürlich kommt da deshalb noch Unsinn, weil noch nicht alle Variablen definiert sind. Aber nun scheitere ich schon daran, dass der Text des 1. Tenors nicht an den Noten ausgerichtet wird und ich nicht weiß, wo da jetzt ein \lyricsto hingehört. Ich habe schon verschiedene Stellen probiert, auch unter dem Staff noch eine Voice eingerichtet und der den Namen gegeben, aber ich hab da wohl eine Denkblockade:


\version "2.18.2"

TenorEins = {
  \context Staff = "divTenor1"
  \relative {
  \clef "treble_8"
    c d e8( g) f4 g( a) b c
  }
  \context Staff = "Tenor"
  \relative {
    a b c d
  }
}

TenorEinsText = \lyricmode {
  \context Lyrics = "divTenor1Lyr" {
    eins zwei drei vier fünf sie -- ben
  }
  \context Lyrics = "Tenor1Lyr" {
    sechs sie -- ben acht
  }
}

\score {
  <<
    \new ChoirStaff
   
    \new Staff = "divTenor1"
    \set Staff.instrumentName = #"Ten. 1"
    \new Lyrics = "divTenor1Lyr" { \TenorEinsText }
   
    \new Staff = "divTenor2"
    \set Staff.instrumentName = #"Ten. 2"
    \new Lyrics = "divTenor2Lyr"
   
    \new Staff = "divBass1"
    \set Staff.instrumentName = #"Bass 1"
    \new Lyrics = "divBass1Lyr"
   
    \new Staff = "divBass2"
    \set Staff.instrumentName = #"Bass 2"
    \new Lyrics = "divBass2Lyr"
   
    \new Staff = "Tenor" <<
      \set Staff.instrumentName = #"Tenor"
      \new Voice = "Tenor1" { \voiceOne \TenorEins }
      \new Voice = "Tenor2" { \voiceTwo \TenorZwei }
    >>
   
    \new Staff = "Bass" <<
      \set Staff.instrumentName = #"Bass"
      \new Voice = "Bass1" { \voiceOne \BassEins }
      \new Voice = "Bass2" { \voiceTwo \BassZwei }
    >>
    \new Lyrics = "Tenor1Lyr" \TenorEinsText
    \new Lyrics = "Tenor2Lyr" \TenorZweiText
    \new Lyrics = "Bass1Lyr"  \BassEinsText
    \new Lyrics = "Bass2Lyr"  \BassZweiText
    >>
}


--ks
Titel: Antw:Chorsatz: zwischen zwei und vier Systemen wechseln
Beitrag von: Manuela am Donnerstag, 23. Mai 2019, 08:21
Nur auf die Schnelle (ich habe den Thread nicht genau studiert):

\new Lyrics \lyricsto "Tenor1" \TenorEinsText

usw