Chorsatz: zwischen zwei und vier Systemen wechseln

Begonnen von Kreuzschnabel, Samstag, 18. Mai 2019, 22:57

« vorheriges - nächstes »

Kreuzschnabel

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

harm6

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

Kreuzschnabel

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

Manuela

Nur auf die Schnelle (ich habe den Thread nicht genau studiert):

\new Lyrics \lyricsto "Tenor1" \TenorEinsText

usw
Danke für eure Hilfe
viele Grüße
-- Manuela