Mehrere Stimmen mit Lyrics ober und unterhalb des Notensystems

Begonnen von Andre, Mittwoch, 10. Juli 2024, 12:38

« vorheriges - nächstes »

Andre

Hallo,
ich versuche ein 8 Stimmigen Chorsatz zu setzen.

An manchen stellen unterscheidet sich der Text in allen Stimmen. An diesen Stellen hätte ich gerne die erste Stimme Oberhalb des jeweiligen Notensystems und die zweite Stimme unterhalb.

Bei einem Notensystem funktioniert das:
\version "2.24.0"
#(set-default-paper-size "a4")
#(set-global-staff-size 19)
#(ly:set-option 'point-and-click #t)

\include "deutsch.ly"

%
% - Sopran I Noten
%
SopranOne = {
  \key g \major
  \time 4/4
  \tempo "Allegretto non troppo"
  \transpose c c' {
    \voiceOne
    % Noten
    h4 h^\cresc c' cis'
    d'( g') fis' e'^\>
    d'\! h a^\< e'
    d'1(\!
    d'2)^\> g\!
    r1
    r2 h4^\mp h
    h2.(^\< a4)^\>
    g1\!
    r1
    r4 g4^\markup { \italic più \dynamic p } g g
    g2.(^\< a4)
    g1\fermata\pp
    \bar "|."
  }
}

%
% - Sopran II Noten
%
SopranTwo = {
  \transpose c c' {
    \voiceTwo
    % Noten
    g4 g a ais
    h( g) d2~(
    4 d'4) c'4 b
    a1
    g
    r1
    r2 g4 g
    g2( fis)
    g1
    r1
    r4 g4 g g
    g2( fis)
    g1\fermata
  }
}

%
% - Strophentexte
%
StropheSI = \lyricmode {
  % Text
  _ _ _
  be -- hü -- ten auf al -- len dei -- nen We -- gen,
}

StropheSII = \lyricmode {
  % Text
  daß sie dich
  be -- hü -- ten __ dich be -- hü -- ten,
  dich be -- hü -- ten auf dei -- nen We -- gen.
}
%
% - Aufbau der Systeme
%
\score {

\context ChoirStaff <<

\context Staff = "Sopran" <<
\set Staff.midiInstrument = "violin"
\set Staff.instrumentName = "Sopran I + II"
\set Staff.shortInstrumentName = "S I + II"
\clef treble
\context Voice = "SopranI" \SopranOne
\context Voice = "SopranII" \SopranTwo
>>
\context Lyrics = "SopranI" { s1 }
  \set Lyrics.alignAboveContext = "Sopran"
\context Lyrics = "SopranII" { s1 }
  \set Lyrics.alignBelowContext = "Sopran"

\context Lyrics = "SopranI" \lyricsto "SopranI" \StropheSI
\context Lyrics = "SopranII" \lyricsto "SopranII" \StropheSII

>>
}

Bei zwei Notensystemen nicht mehr:
\version "2.24.0"
#(set-default-paper-size "a4")
#(set-global-staff-size 19)
#(ly:set-option 'point-and-click #t)

\include "deutsch.ly"

%
% - Sopran I Noten
%
SopranOne = {
  \key g \major
  \time 4/4
  \tempo "Allegretto non troppo"
  \transpose c c' {
    \voiceOne
    % Noten
    h4 h^\cresc c' cis'
    d'( g') fis' e'^\>
    d'\! h a^\< e'
    d'1(\!
    d'2)^\> g\!
    r1
    r2 h4^\mp h
    h2.(^\< a4)^\>
    g1\!
    r1
    r4 g4^\markup { \italic più \dynamic p } g g
    g2.(^\< a4)
    g1\fermata\pp
    \bar "|."
  }
}

%
% - Sopran II Noten
%
SopranTwo = {
  \transpose c c' {
    \voiceTwo
    % Noten
    g4 g a ais
    h( g) d2~(
    4 d'4) c'4 b
    a1
    g
    r1
    r2 g4 g
    g2( fis)
    g1
    r1
    r4 g4 g g
    g2( fis)
    g1\fermata
  }
}

%
% - Alt Noten
%
AltOne = {
  \transpose c c' {
    \voiceOne
    % Noten
    g1~^\cresc
    4 h4 a^\> g
    g1\!~(
    2 fis2)^\>
    g1
    r1\!
    r2 d4^\mp d
    d1^\<
    d^\>
    r1\!
    r4 d4^\markup { \italic più \dynamic p } d d
    d1^\<
    d\fermata\pp
  }
}

AltTwo = {
  \transpose c c' {
    \voiceTwo
    % Noten
    r1
    r1
    g4 g a b
    d1
    d
    r1
    r2 h,4 h,
    c1
    h,
    r1
    r4 d4 d d
    d1
    d\fermata
  }
}

%
% - Strophentexte
%
StropheSI = \lyricmode {
  % Text
  _ _ _
  be -- hü -- ten auf al -- len dei -- nen We -- gen,
}

StropheSII = \lyricmode {
  % Text
  daß sie dich
  be -- hü -- ten __ dich be -- hü -- ten,
  dich be -- hü -- ten auf dei -- nen We -- gen.
}

StropheAI = \lyricmode {
  % Text
  daß sie dich
  be -- hü -- ten
  dich be -- hü -- ten auf dei -- nen We -- gen.
}

StropheAII = \lyricmode {
  % Text
  daß sie dich
  be -- hü -- ten
  dich be -- hü -- ten auf dei -- nen We -- gen.
}

%
% - Aufbau der Systeme
%
\score {

\context ChoirStaff <<

\context Staff = "Sopran" <<
\set Staff.midiInstrument = "violin"
\set Staff.instrumentName = "Sopran I + II"
\set Staff.shortInstrumentName = "S I + II"
\clef treble
\context Voice = "SopranI" \SopranOne
\context Voice = "SopranII" \SopranTwo
>>
\context Lyrics = "SopranI" { s1 }
  \set Lyrics.alignAboveContext = "Sopran"
\context Lyrics = "SopranII" { s1 }
  \set Lyrics.alignBelowContext = "Sopran"

\context Staff = "Alt" <<
\set Staff.midiInstrument = "viola"
\set Staff.instrumentName = "Alt I + II"
\set Staff.shortInstrumentName = "A I + II"
\clef treble
\context Voice = "AltI" \AltOne
\context Voice = "AltII" \AltTwo
>>
\context Lyrics = "AltI" { s1 } <<
  \set Lyrics.alignAboveContext = "Alt"
>>
\context Lyrics = "AltII" { s1 } <<
  \set Lyrics.alignBelowContext = "Alt"
>>

\context Lyrics = "SopranI" \lyricsto "SopranI" \StropheSI
\context Lyrics = "SopranII" \lyricsto "SopranII" \StropheSII
\context Lyrics = "AltI" \lyricsto "AltI" \StropheAI
\context Lyrics = "AltII" \lyricsto "AltII" \StropheAII

>>
}
Hier ist der Text unterhalb des Notensystem aber in zwei reihen.

Was habe ich nicht verstanden ?

harm6

Die Setzungen wie:
  \set Lyrics.alignAboveContext = "Alt"
stehen an völlig verquerenStellen. Das überhaupt manchmal eine Wirkung davon ausgeht erstaunt mich zutiefst.

Verwende \with { alignAboveContext = "Alt" } dafür. Z.B.:
\score {
  \new ChoirStaff <<
      \new Staff = "Sopran"
        \with {
          midiInstrument = "violin"
          instrumentName = "Sopran I + II"
          shortInstrumentName = "S I + II"
        } 
        <<
          \new Voice = "SopranI" \SopranOne
          \new Voice = "SopranII" \SopranTwo
        >>
      \new Lyrics = "SopranI"
        \with { alignAboveContext = "Sopran" }
        \lyricsto "SopranI" \StropheSI
      \new Lyrics = "SopranII"
        \lyricsto "SopranII" \StropheSII
      \new Staff = "Alt"
        \with {
          midiInstrument = "viola"
          instrumentName = "Alt I + II"
          shortInstrumentName = "A I + II"
        }
        <<
          \new Voice = "AltI" \AltOne
          \new Voice = "AltII" \AltTwo
        >>
      \new Lyrics = "AltI"
        \with { alignAboveContext = "Alt" }
        \lyricsto "AltI" \StropheAI
      \new Lyrics = "AltII"
      \lyricsto "AltII"
      \StropheAII
  >>
}

Aber auch sonst steht viel überflüssiges in Deinem code...

Übrigens erhöhst Du Deine Chancen auf eine schnelle und hilfreiche Antwort, wenn Du demnächst ein minimal-Beispiel postest.

HTH,
  Harm

Andre

Vielen Dank Harm für die Codebereinigung.
Jetzt setzt er alles korrekt.

Ich bin davon ausgegangen ich hätte 2 Minimalbeispiele gepostet ???

Malte

Zitat von: Andre am Donnerstag, 11. Juli 2024, 10:37Ich bin davon ausgegangen ich hätte 2 Minimalbeispiele gepostet ???
,,Minimal" heißt in diesem Kontext, dass keine Sachen im Code stehen, die mit dem Problem nicht zu tun haben. Der \score-Block ist recht groß und man könnte da einiges kürzen wie die instrumentNames oder midiInstrument, die mit der Frage nichts zu tun haben. Dann ist der Block immer noch groß, aber das ist ja auch der Frage geschuldet (die Antwort kürzt ihn ;))

Überflüssig sind hier aber z. B. die drei Zeilen
#(set-default-paper-size "a4")
#(set-global-staff-size 19)
#(ly:set-option 'point-and-click #t)
und ein Großteil der Noten und des Textes. Aus dem zweiten Code in deinem ersten Post habe ich so folgendes gemacht:
\version "2.24.0"
\include "deutsch.ly"

SopranOne = { c''1 }
SopranTwo = { g'1 }
AltOne = { e'1 }
AltTwo = { c'1 }

StropheSI = \lyricmode { bla }
StropheSII = \lyricmode { bli }
StropheAI = \lyricmode { blo }
StropheAII = \lyricmode { blu }

\score {
 
  \context ChoirStaff <<
   
    \context Staff = "Sopran" <<
      \context Voice = "SopranI" \SopranOne
      \context Voice = "SopranII" \SopranTwo
    >>
   
    \context Lyrics = "SopranI" { s1 }
    \set Lyrics.alignAboveContext = "Sopran"
    \context Lyrics = "SopranII" { s1 }
    \set Lyrics.alignBelowContext = "Sopran"

    \context Staff = "Alt" <<
      \context Voice = "AltI" \AltOne
      \context Voice = "AltII" \AltTwo
    >>
   
    \context Lyrics = "AltI" { s1 } <<
      \set Lyrics.alignAboveContext = "Alt"
    >>
   
    \context Lyrics = "AltII" { s1 } <<
      \set Lyrics.alignBelowContext = "Alt"
    >>

    \context Lyrics = "SopranI" \lyricsto "SopranI" \StropheSI
    \context Lyrics = "SopranII" \lyricsto "SopranII" \StropheSII
    \context Lyrics = "AltI" \lyricsto "AltI" \StropheAI
    \context Lyrics = "AltII" \lyricsto "AltII" \StropheAII

  >>
}

Andre

Achso, es geht eher um Minimal.
Das werde ich das nächste mal Berücksichtigen.

Vielen Dank Malte.