Lyricextender dehnt sich bis zum Schluss aus

Begonnen von Manuela, Donnerstag, 20. April 2023, 21:16

« vorheriges - nächstes »

Manuela

Wenn ich die Lyrics untereinander schreibe, ist alles normal.

Wenn ich versuche, die Lyrics in eine Anweisung zu schreiben, wird der Extender bis zum Schluss der Noten gedehnt, trotz Pause.

Es hat einen Grund, warum ich die Lyrics zusammenfasse (ich erstelle den Score mittes eines Scheme-Programms und kann damit mehrere Strophen als einen Parameter übergeben).

Im oberen Staff ist es so, wie es sein sollte. Im unteren Staff dehnt sich der Extender unerwünscht aus. Wie kann ich das verhindern?

\version "2.25.2"
\language "deutsch"

lyr = \lyricmode {
  ah oh uh __
}

lyrii = \lyricmode {
  eh ih oh __
  ah eh uh
}

lyru = \lyricmode {
  <<
    {
      \lyr
    }
    \new Lyrics {
     \set associatedVoice = sop
     \lyrii
    }
  >>
}


mus = \relative { c' c c r c c c }

%% jede Strophe wird einzeln übergeben, alles klappt
<<
  \new Staff
  \new Voice=sop \mus
  \new Lyrics \lyricsto sop \lyr
  \new Lyrics \lyricsto sop \lyrii
>>

%% alle Strophen in einer Lyrics-Anweisung ergibt unerwünschten Effekt
<<
  \new Staff
  \new Voice=sop \mus
  \new Lyrics \lyricsto sop \lyru
>

Du darfst diesen Dateianhang nicht ansehen.
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

#1
Ich hatte gerade eine Idee.

Jede Strophe als \new Lyrics definiert, \set associatedVoice festlegen und \lyricsto weglassen.

Die erste Strophe wird richtig angezeigt, die zweite nicht mehr.

Ich bin verwirrt, kann mir jemand erklären, was ich falsch mache?

\version "2.25.2"
\language "deutsch"

lyr = \lyricmode {
  ah oh uh __
}

lyrii = \lyricmode {
  eh ih oh __
  ah eh uh
}

lyru = \lyricmode {
  <<
    \new Lyrics {
      \set associatedVoice = sop
      \lyr
    }
    \new Lyrics {
      \set associatedVoice = sop
      \lyrii
    }
  >>
}


mus = \relative { c' c c r c c c }

%% jede Strophe wird einzeln übergeben, alles klappt
<<
  \new Staff
  \new Voice=sop \mus
  \new Lyrics \lyricsto sop \lyr
  \new Lyrics \lyricsto sop \lyrii
>>

%% alle Strophen in einer Lyrics-Anweisung ergibt unerwünschten Effekt
<<
  \new Staff
  \new Voice=sop \mus
  \new Lyrics \lyru
>>

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

harm6

Hallo Manuela,

ich habe nicht analysiert warum genau es schief geht, aber die Art und Weise wie Du die Strophen "zusammenfasst" sieht befremdlich aus.
Versuch mal:
list-of-lyrics =
  #(map
    (lambda (l) #{ \new Lyrics \lyricsto sop $l #})
    (list lyr lyrii))
<<
  \new Staff \new Voice = sop \mus
  #@list-of-lyrics
>>

Gruß,
  Harm

Manuela

#3
Danke Harm.

Nach einigem Herumirren habe ich es geschafft, das Ganze in eine music-function zu gießen

\version "2.25.2"
\language "deutsch"

lyr = \lyricmode {
  \set stanza = #"1"
  ah oh uh __
}

lyrii = \lyricmode {
  \set stanza = #"2"
  eh ih oh __
  ah eh uh
}

mus = \relative { c'' c c r c c c }

myscore =
#(define-music-function (sop lyrli)
   (ly:music? ly:music-list?)
   (let* ((voice "sop")
          (list-lyr
           (map
            (lambda (l) #{ \new Lyrics \lyricsto $voice $l #})
            lyrli)))
     #{
       <<
         \new PianoStaff
         <<
           \new Staff
           <<
             \new Voice=$voice $sop
           >>
           $@list-lyr
         >>
       >>
     #}
     ))

\myscore \mus #(list lyr lyrii)

Du darfst diesen Dateianhang nicht ansehen.
Danke für eure Hilfe
viele Grüße
-- Manuela