Re: ****SPAM:5.7**** Re: skip of defined length in lyrics?

2023-10-20 Thread Graham King
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?

2023-10-17 Thread David Wright
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?

2023-10-15 Thread Graham King
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?

2023-10-14 Thread Graham King
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?

2023-10-14 Thread Valentin Petzel
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?

2023-10-13 Thread Graham King
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?

2023-10-13 Thread Graham King
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?

2023-10-13 Thread David Kastrup
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?

2023-10-13 Thread Graham King
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