Re: ****SPAM:5.7**** Re: skip of defined length in lyrics?
David, thanks for this. I had abandoned the melismaBusy method, as it was throwing up all sorts of artefacts (blank bars and partially-blank bars, etc.) when applied in a polyphonic setting. And the fixes for parts starting with rests were beginning to make the source file rather incomprehensible. So, I had in fact adopted precisely the solution you suggest (but I was aiming to get to the end of the current project before confessing it to the list, in case it too proved to be a dead end for any other reason). So far, it is looking good, and the source file is semantically- and structurally- clear. -- Graham On Tue, 2023-10-17 at 09:44 -0500, David Wright wrote: > On Sun 15 Oct 2023 at 15:07:52 (+0100), Graham King wrote: > > Note to self, since this thread has risen to the status of > > documentation for me: Valentin's method is sensitive to slurs in > > the > > instrumental line (I suspect that the end of a slur is equivalent > > to > > \unset melismaBusy), so some adjustment may be necessary. > [ … … ] > > It also, understandably, gives weird results if applied immediately > > after a rest, so this does not work: > [ … … ] > > It strikes me that trying to keep the notes in one continuous voice > is what makes things complicated, judging by the snippets you've > posted. Why not just put the verse and full sections in separate > voices, and combine them on the staff. I've massacred a bit of Boyce > as an example, attached. > > If I needed MIDI files, I would separate each and every section > (ie, the two voice sections in this fragment), so that they could > all be concatenated in the right order for the MIDI. > > Cheers, > David.
Re: skip of defined length in lyrics?
On Sun 15 Oct 2023 at 15:07:52 (+0100), Graham King wrote: > Note to self, since this thread has risen to the status of > documentation for me: Valentin's method is sensitive to slurs in the > instrumental line (I suspect that the end of a slur is equivalent to > \unset melismaBusy), so some adjustment may be necessary. [ … … ] > It also, understandably, gives weird results if applied immediately > after a rest, so this does not work: [ … … ] It strikes me that trying to keep the notes in one continuous voice is what makes things complicated, judging by the snippets you've posted. Why not just put the verse and full sections in separate voices, and combine them on the staff. I've massacred a bit of Boyce as an example, attached. If I needed MIDI files, I would separate each and every section (ie, the two voice sections in this fragment), so that they could all be concatenated in the right order for the MIDI. Cheers, David. \version "2.24.0" \language "english" \paper { #(set-paper-size "a5landscape") print-page-number = ##f } #(set-global-staff-size 18) \header { tagline = ##f } global = { \key bf \major \time 3/2 s1. * 4 \bar "||" s1. * 4 \bar "||" s1. * 4 \bar "|." } sopranov = \relative { bf'2 bf1 a1 bf2 r2 a1 bf1. s1. * 4 bf2 bf1 a1 bf2 r2 a1 bf1. } soprano = \relative { s1. * 4 a'2 a2 a2 bf4.( c8) bf2 bf2 g2 g4. a8 g2 a2 a2 r2 s1. * 4 } altov = \relative { g'1 f2 f1 f2 r2 f4( c2 d8 ef8) d1. s1. * 4 g1 f2 f1 f2 r2 f4( c2 d8 ef8) d1. } alto = \relative { s1. * 4 f'2 f2 f2 g4.( a8) g2 g2 e2 e4. f8 e2 f2 f2 r2 s1. * 4 } tenorv = \relative { d'2 d1 c1 d2 r2 f,1 f1. s1. * 4 d'2 d1 c1 d2 r2 f,1 f1. } tenor = \relative { s1. * 4 d'2 d2 d2 d2 d2 d2 c2 c4. c8 c2 c2 c2 r2 s1. * 4 } bassv = \relative { g4.( f8 g4. a8) bf2 f1 bf2 r2 f1 bf,1. s1. * 4 g'4.( f8 g4. a8) bf2 f1 bf2 r2 f1 bf,1. } bass = \relative { s1. * 4 d'2 d2 d2 g,2 g2 g2 c2 c4. c8 c2 f,2 f2 r2 s1. * 4 } texts = \lyricmode { Hal -- le -- lu -- jah, A -- men. Hal -- le -- lu -- jah, A -- men. } \score { \new ChoirStaff << \new Staff << \clef treble \global \new Voice { \sopranov } \addlyrics { \texts } \new Voice { \soprano } >> \new Staff << \clef treble \global \new Voice { \altov } \addlyrics { \texts } \new Voice { \alto } >> \new Staff << \clef "treble_8" \global \new Voice { \tenorv } \addlyrics { \texts } \new Voice { \tenor } >> \new Staff << \clef bass \global \new Voice { \bassv } \addlyrics { \texts } \new Voice { \bass } >> >> \layout { } } \score { \new ChoirStaff << \new Staff = "top" \with { \consists Merge_rests_engraver } << \clef treble \global \new Voice = "soprano" { \voiceOne \sopranov } \addlyrics \with { alignAboveContext = "top" } { \texts } \new Voice { \voiceOne \soprano } \new Voice { \voiceTwo \altov } \addlyrics { \texts } \new Voice { \voiceTwo \alto } >> \new Staff = "bottom" \with { \consists Merge_rests_engraver } << \clef bass \global \new Voice { \voiceOne \tenorv } \addlyrics \with { alignAboveContext = "bottom" } { \texts } \new Voice { \voiceOne \tenor } \new Voice { \voiceTwo \bassv } \addlyrics { \texts } \new Voice { \voiceTwo \bass } >> >> \layout { } } verse-anthem.pdf Description: Adobe PDF document
Re: skip of defined length in lyrics?
Note to self, since this thread has risen to the status of documentation for me: Valentin's method is sensitive to slurs in the instrumental line (I suspect that the end of a slur is equivalent to \unset melismaBusy), so some adjustment may be necessary. % ~~ notes = { R1 4 4( 4 4) \after 4 \set melismaBusy = ##t \after 1*2 \unset melismaBusy \repeat unfold 12 c'4 } words = \lyricmode { "" "" "" one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~ It also, understandably, gives weird results if applied immediately after a rest, so this does not work: % ~~ notes = { R1 \after 4 \set melismaBusy = ##t \after 1*2 \unset melismaBusy 4 4( 4 4) \repeat unfold 12 c'4 } words = \lyricmode { "" "" "" one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~
Re: skip of defined length in lyrics?
On Sat, 2023-10-14 at 17:04 +0200, Valentin Petzel wrote: > Hello Graham, > > there are multiple ways to solve the problem and having different > voice > contexts for different lyrics is surely one of the better ways to > handle it. > You can it do cleaner like this: > > % ~~ > instrumental = > #(define-music-function (m) (ly:music?) > #{ \context Voice = "instrumental" $m #}) > > notes = { > \instrumental \repeat unfold 8 c'4 > \repeat unfold 8 d'4 > } > > words = \lyricmode { > one two three four > } > > << > \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > > > > > % ~~ > > The issue with this is that this will cause trouble with engravers > sitting at > the voice level, so things like slurs and ties between these sections > will > fail. And in the real-life example (five parts, each with three verse...chorus sections) I was getting into all sorts of self-inflicted trouble with many instantiated Voices, and lyrics no longer attaching to the correct voice. I was even starting to read up on "Keeping contexts alive" -- desperate measures by my standards! > > One other way that does not have this issue would be to have the > Lyric > engraver believe that the instrumental notes are part of a melisma, > which > leads to the engraver ignoring them: > > % ~~ > notes = { > \set melismaBusy = ##t > \after 1*2 \unset melismaBusy > \repeat unfold 12 c'4 > } > > words = \lyricmode { > one two three four > } > > << > \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > > > > % ~~ > > If you have lyrics before this it would be wise to only do this after > the first > instrumental note and add a single "" to the Lyrics to avoid it > extending a > previous melisma, so instead of > > % ~~ > notes = { > 4 4( 4 4) > \set melismaBusy = ##t > \after 1*2 \unset melismaBusy > \repeat unfold 12 c'4 > } > > words = \lyricmode { > first text __ > one two three four > } > > << > \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > > > > % ~~ > > you’d get > > % ~~ > notes = { > 4 4( 4 4) > \after 4 \set melismaBusy = ##t > \after 1*2 \unset melismaBusy > \repeat unfold 12 c'4 > } > > words = \lyricmode { > first text __ > "" > one two three four > } > > << > \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > > > > % ~~ > > Cheers, > Valentin This is _very_ helpful. Thanks! I can now preserve a structure in my file, that better reflects the musical structure of the piece. I'm trying to alias the use of melismaBusy, to help avert my future confusion over the semantic overloading of melismas, so ... % ~~ % = % comments... explanation ... ref. to lilypond-user ... attribution. suppressLyrics = \after 4 \set melismaBusy = ##t \etc % ... not sure why \etc is needed there. reenableLyrics = \unset melismaBusy % = notes = { 4 4( 4 4) \suppressLyrics \after 1*2 \reenableLyrics \repeat unfold 12 c'4 } words = \lyricmode { first text __ "" % extra syllable (see \suppressLyrics) one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~
Re: skip of defined length in lyrics?
Hello Graham, there are multiple ways to solve the problem and having different voice contexts for different lyrics is surely one of the better ways to handle it. You can it do cleaner like this: % ~~ instrumental = #(define-music-function (m) (ly:music?) #{ \context Voice = "instrumental" $m #}) notes = { \instrumental \repeat unfold 8 c'4 \repeat unfold 8 d'4 } words = \lyricmode { one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~ The issue with this is that this will cause trouble with engravers sitting at the voice level, so things like slurs and ties between these sections will fail. One other way that does not have this issue would be to have the Lyric engraver believe that the instrumental notes are part of a melisma, which leads to the engraver ignoring them: % ~~ notes = { \set melismaBusy = ##t \after 1*2 \unset melismaBusy \repeat unfold 12 c'4 } words = \lyricmode { one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~ If you have lyrics before this it would be wise to only do this after the first instrumental note and add a single "" to the Lyrics to avoid it extending a previous melisma, so instead of % ~~ notes = { 4 4( 4 4) \set melismaBusy = ##t \after 1*2 \unset melismaBusy \repeat unfold 12 c'4 } words = \lyricmode { first text __ one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~ you’d get % ~~ notes = { 4 4( 4 4) \after 4 \set melismaBusy = ##t \after 1*2 \unset melismaBusy \repeat unfold 12 c'4 } words = \lyricmode { first text __ "" one two three four } << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> % ~~ Cheers, Valentin signature.asc Description: This is a digitally signed message part.
Re: skip of defined length in lyrics?
On Fri, 2023-10-13 at 17:52 +0200, David Kastrup wrote: > You can just use \skip \music but you have to forego rhythmic > alignment > using \lyricsto . Thanks David. That confirms what I feared.
Re: skip of defined length in lyrics?
On Fri, 2023-10-13 at 16:01 +0100, Graham King wrote: > I'm setting a verse anthem, in which certain voices are instrument- > only > until the chorus, at which point they are doubled by singers. > > How can I include a skip of defined duration in the lyrics? \skip > counts notes or syllables, but I'd like to count breves and minims, > to > avoid the lyrics-alignment containing a magic number that is > sensitive > to subsequent editing of the preceding music. > > I've seen a reference somewhere to #skip-of-length but can't find any > documentation. > > % ~~ > \version "2.25.7" > > notes = { \repeat unfold 12 c'4 } > > words = \lyricmode { > \repeat unfold 2 { \skip 1 } % Lyrics to start at bar 3. > one two three four > } > > { << \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > >> > } > % ~~ > > Grateful, as ever, for your insights. > -- Graham > I might have a solution, but I'm a bit wary of unforeseen consequences: % ~~ \version "2.25.7" notes = { \repeat unfold 8 c'4 } morenotes = { \repeat unfold 8 d'4 } words = \lyricmode { one two three four } { \notes << \new Voice = "cantor" \morenotes \new Lyrics \lyricsto cantor { \words } >> } % ~~ Better advice always welcome; otherwise, sorry for the noise.
Re: skip of defined length in lyrics?
Graham King writes: > I'm setting a verse anthem, in which certain voices are instrument-only > until the chorus, at which point they are doubled by singers. > > How can I include a skip of defined duration in the lyrics? \skip > counts notes or syllables, It doesn't. It corresponds to one syllable/note whatever the duration. > but I'd like to count breves and minims, to avoid the lyrics-alignment > containing a magic number that is sensitive to subsequent editing of > the preceding music. > > I've seen a reference somewhere to #skip-of-length but can't find any > documentation. You can just use \skip \music but you have to forego rhythmic alignment using \lyricsto . > % ~~ > \version "2.25.7" > > notes = { \repeat unfold 12 c'4 } > > words = \lyricmode { > \repeat unfold 2 { \skip 1 } % Lyrics to start at bar 3. > one two three four > } > > { << \new Voice = "cantor" \notes > \new Lyrics \lyricsto cantor { \words } > >> > } > % ~~ Check out % ~~ \version "2.25.7" notes = { \repeat unfold 12 c'4 } words = \lyricmode { \skip 1*2 % Lyrics to start at bar 3. one4 two three four } { << \new Voice = "cantor" \notes \new Lyrics \with { associatedVoice = "cantor" } { \words } >> } % ~~ Note that the associatedVoice may seem irrelevant when the timing isn't derived from it, but it is required for a few things like proper placement of syllable extenders. Also note how the syllable "one" gets an explicit length of a quarter. In real music, you'll get a lot more note lengths in the lyrics. This will look uglier in the source, but it tends to be quite more robust against music edits not affecting the syllable positions. And of course, skips become quite easier to accommodate. -- David Kastrup
skip of defined length in lyrics?
I'm setting a verse anthem, in which certain voices are instrument-only until the chorus, at which point they are doubled by singers. How can I include a skip of defined duration in the lyrics? \skip counts notes or syllables, but I'd like to count breves and minims, to avoid the lyrics-alignment containing a magic number that is sensitive to subsequent editing of the preceding music. I've seen a reference somewhere to #skip-of-length but can't find any documentation. % ~~ \version "2.25.7" notes = { \repeat unfold 12 c'4 } words = \lyricmode { \repeat unfold 2 { \skip 1 } % Lyrics to start at bar 3. one two three four } { << \new Voice = "cantor" \notes \new Lyrics \lyricsto cantor { \words } >> } % ~~ Grateful, as ever, for your insights. -- Graham