Unterminated slurs in multi-voice volta alternative ending

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Unterminated slurs in multi-voice volta alternative ending

Stephan Schöll
Hello everbody

The following example produces 2 compile warnings (cannot end slur,
unterminated slur). I'm missing the slur between dis in bar 3 and d in
bar 4, both in an additional temporary voice context.

It's a snippet from a SATB arrangement with 2 alto voices put in one
staff. In order to align the text to alto 1 I chose to add temporary
voice contexts for alto 2 (which is most of the time).

(The only alternative I could imagine is to
* write alto 2 in a completely separate voice, hiding notes during
"oneVoice" portions with invisible breaks (s)
* to combine the alto 1 voice and the alto 2 voice together in one
(multi-voice alto) staff,
* add the lyrics to alto 1 (alto 2 lyrics are identical to alto 1 lyrics).

BTW: Is there a way to combine/collapse breaks within one staff in
multi-voice scenarios?

Hints and advice are highly appreciated!

Thanks in advance,
Regards
Stephan

{code}
\version "2.19.83"

global = {
  \key g \major
  \time 4/4
}

\header {
  title = "Unterminated slur"
  subtitle = "Unterminated slur in 2nd voice after 2nd repeat alternative"
  subsubtitle = "2 Alto voices with same lyrics (within a SATB
arrangement / part of ChoirStaff)"
}

altoVoices = \relative c'' {
  \global
  \repeat volta 2 {
    <<
      {
        \voiceOne
        g4 g g g
      }
      \new Voice {
        \voiceTwo
        s2 d4 d
      }
    >>
  }
  \alternative {
    {
      <<
        {
          \voiceOne
          fis2 r2
        }
        \new Voice {
          \voiceTwo
          d2 r2
        }
      >>
    }
    {
      <<
        {
          \voiceOne
          g4 r fis2(
        }
        \new Voice {
          \voiceTwo
          d4 r dis2(
        }
      >>
    }
  }
  <<
    {
      \voiceOne
      g1)
    }
    \new Voice {
      \voiceTwo
      d1)
    }
  >>


}

altoLyrics = \lyricmode {
  \repeat volta 2 {
    This is a new
  }
  \alternative {
    {
      song.
    }
    {
      song, uuh, __
    }
  }

}

\score {
  \new Staff {
      \altoVoices
  }
  \addlyrics {
    \altoLyrics
  }
}
{code}

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Unterminated slurs in multi-voice volta alternative ending

Thomas Morley-2
Am Sa., 4. Mai 2019 um 23:30 Uhr schrieb [hidden email] <[hidden email]>:

>
> Hello everbody
>
> The following example produces 2 compile warnings (cannot end slur,
> unterminated slur). I'm missing the slur between dis in bar 3 and d in
> bar 4, both in an additional temporary voice context.
>
> It's a snippet from a SATB arrangement with 2 alto voices put in one
> staff. In order to align the text to alto 1 I chose to add temporary
> voice contexts for alto 2 (which is most of the time).
>
> (The only alternative I could imagine is to
> * write alto 2 in a completely separate voice, hiding notes during
> "oneVoice" portions with invisible breaks (s)
> * to combine the alto 1 voice and the alto 2 voice together in one
> (multi-voice alto) staff,
> * add the lyrics to alto 1 (alto 2 lyrics are identical to alto 1 lyrics).

Hi Stephan,

please try to break down the problem to a minimal.
Superfluous code obfuscates the problem and may prevent people to have
a deeper look at your request.

You may have arrived at:
\new Staff { \new Voice b( \new Voice b) }
Which reproduces the mentioned warnings.
Reason: two _new_ Voices are done in sequence, but they are not
related to each other, apart from being printed one after the other.
Thus the Slur does not work from one Voice to another.
You rather want to _continue_ the already started Voice. This is
possible with \context instead of \new
\new Staff { \new Voice b( \context Voice b) }
Though, in polyphonic cases this may fail again.
This can be cured by using named Voices:
\new Staff
  <<
    { \voiceOne d'2( d') }
    { \new Voice = "2" { \voiceTwo } b( \context Voice = "2" b) }
  >>

Albeit, using this approach in your example leads to the code below,
which is hard to read, with all those equal settings needed again and
again:

\version "2.19.83"

global = {
  \key g \major
  \time 4/4
}

altoVoices = \relative c'' {
  \global
  \repeat volta 2 {
    <<
      {
        \voiceOne
        g4 g g g
      }
      \new Voice = "down" {
        \voiceTwo
        s2 d4 d
      }
    >>
  }
  \alternative {
    {
      <<
        {
          \voiceOne
          fis2 r2
        }
        \context Voice = "down" {
          \voiceTwo
          d2 r2
        }
      >>
    }
    {
      <<
        {
          \voiceOne
          g4 r fis2(
        }
        \context Voice = "down" {
          \voiceTwo
          d4 r dis2(
        }
      >>
    }
  }
  <<
    {
      \voiceOne
      g1)
    }
    \context Voice = "down" {
      \voiceTwo
      d1)
    }
  >>
}

altoLyrics = \lyricmode {
  \repeat volta 2 {
    This is a new
  }
  \alternative {
    {
      song.
    }
    {
      song, uuh, __
    }
  }
}

\score {
  \new Staff {
      \altoVoices
  }
  \addlyrics {
    \altoLyrics
  }
}

I'd recommend to code the two Voices completely separate, putting them
together in \score

global = {
  \key g \major
  \time 4/4
}

one = \relative c'' {
  \repeat volta 2 {
    g4 g g g
  }
  \alternative {
    {
      fis2 r2
    }
    {
      g4 r fis2(
    }
  }
  g1)
}

two = \relative c' {
  \repeat volta 2 {
    s2 d4 d
  }
  \alternative {
    {
      d2 r2
    }
    {
      d4 r dis2(
    }
  }
  d1)
}

lyr = \lyricmode {
  \repeat volta 2 {
    This is a new
  }
  \alternative {
    {
      song.
    }
    {
      song, uuh, __
    }
  }
}

\new Staff
  <<
    \new Voice { \global \voiceOne \one }
    \new Voice { \global \voiceTwo \two }
  >>
\addlyrics \lyr

Looks much cleaner and easier to read.
Although one could simply remove the structure:
\repeat ... \alternative ...
in second Voice and Lyrics.
Additionally I'd go for \new Lyrics ... instead of \addlyrics for all
but most simple cases.
addlyrics is a shortcut, sometimes more "cut" than "short" ;)


I'm aware some people don't like entering Voices separately as I recommend.
Then  \parallelMusic may be the way to go:
http://lilypond.org/doc/v2.19/Documentation/notation-big-page#writing-music-in-parallel


>
> BTW: Is there a way to combine/collapse breaks within one staff in
> multi-voice scenarios?

Here I don't understand what you mean.


Cheers,
  Harm

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Unterminated slurs in multi-voice volta alternative ending

Stephan Schöll
Hi Thomas

Despite or thanks to the rather lenghty code example you have been able
to grasp and answer almost every aspect/problem I had in mind.

I decided for two separate voices and omitting repeats according to your
recommendation.

The single (better: double ;-) ) voice as well as the SAATB (ChoirStaff)
scores are absolutely suitable.

The only disadvantage: Having 3 separate female voices now makes the use
of \partcombine for the right hand of the piano reduction unusable.
Instead I went for a simple three-voice staff, which misses the optical
optimisations of \partcombine, but works for rehearsal purposes.

Thanks a lot!
Cheers, Stephan

Am 05.05.2019 um 11:23 schrieb Thomas Morley:

> Am Sa., 4. Mai 2019 um 23:30 Uhr schrieb [hidden email] <[hidden email]>:
>>
>> Hello everbody
>>
>> The following example produces 2 compile warnings (cannot end slur,
>> unterminated slur). I'm missing the slur between dis in bar 3 and d in
>> bar 4, both in an additional temporary voice context.
>>
>> It's a snippet from a SATB arrangement with 2 alto voices put in one
>> staff. In order to align the text to alto 1 I chose to add temporary
>> voice contexts for alto 2 (which is most of the time).
>>
>> (The only alternative I could imagine is to
>> * write alto 2 in a completely separate voice, hiding notes during
>> "oneVoice" portions with invisible breaks (s)
>> * to combine the alto 1 voice and the alto 2 voice together in one
>> (multi-voice alto) staff,
>> * add the lyrics to alto 1 (alto 2 lyrics are identical to alto 1 lyrics).
>
> Hi Stephan,
>
> please try to break down the problem to a minimal.
> Superfluous code obfuscates the problem and may prevent people to have
> a deeper look at your request.
>
> You may have arrived at:
> \new Staff { \new Voice b( \new Voice b) }
> Which reproduces the mentioned warnings.
> Reason: two _new_ Voices are done in sequence, but they are not
> related to each other, apart from being printed one after the other.
> Thus the Slur does not work from one Voice to another.
> You rather want to _continue_ the already started Voice. This is
> possible with \context instead of \new
> \new Staff { \new Voice b( \context Voice b) }
> Though, in polyphonic cases this may fail again.
> This can be cured by using named Voices:
> \new Staff
>   <<
>     { \voiceOne d'2( d') }
>     { \new Voice = "2" { \voiceTwo } b( \context Voice = "2" b) }
>   >>
>
> Albeit, using this approach in your example leads to the code below,
> which is hard to read, with all those equal settings needed again and
> again:
>
> \version "2.19.83"
>
> global = {
>   \key g \major
>   \time 4/4
> }
>
> altoVoices = \relative c'' {
>   \global
>   \repeat volta 2 {
>     <<
>       {
>         \voiceOne
>         g4 g g g
>       }
>       \new Voice = "down" {
>         \voiceTwo
>         s2 d4 d
>       }
>     >>
>   }
>   \alternative {
>     {
>       <<
>         {
>           \voiceOne
>           fis2 r2
>         }
>         \context Voice = "down" {
>           \voiceTwo
>           d2 r2
>         }
>       >>
>     }
>     {
>       <<
>         {
>           \voiceOne
>           g4 r fis2(
>         }
>         \context Voice = "down" {
>           \voiceTwo
>           d4 r dis2(
>         }
>       >>
>     }
>   }
>   <<
>     {
>       \voiceOne
>       g1)
>     }
>     \context Voice = "down" {
>       \voiceTwo
>       d1)
>     }
>   >>
> }
>
> altoLyrics = \lyricmode {
>   \repeat volta 2 {
>     This is a new
>   }
>   \alternative {
>     {
>       song.
>     }
>     {
>       song, uuh, __
>     }
>   }
> }
>
> \score {
>   \new Staff {
>       \altoVoices
>   }
>   \addlyrics {
>     \altoLyrics
>   }
> }
>
> I'd recommend to code the two Voices completely separate, putting them
> together in \score
>
> global = {
>   \key g \major
>   \time 4/4
> }
>
> one = \relative c'' {
>   \repeat volta 2 {
>     g4 g g g
>   }
>   \alternative {
>     {
>       fis2 r2
>     }
>     {
>       g4 r fis2(
>     }
>   }
>   g1)
> }
>
> two = \relative c' {
>   \repeat volta 2 {
>     s2 d4 d
>   }
>   \alternative {
>     {
>       d2 r2
>     }
>     {
>       d4 r dis2(
>     }
>   }
>   d1)
> }
>
> lyr = \lyricmode {
>   \repeat volta 2 {
>     This is a new
>   }
>   \alternative {
>     {
>       song.
>     }
>     {
>       song, uuh, __
>     }
>   }
> }
>
> \new Staff
>   <<
>     \new Voice { \global \voiceOne \one }
>     \new Voice { \global \voiceTwo \two }
>   >>
> \addlyrics \lyr
>
> Looks much cleaner and easier to read.
> Although one could simply remove the structure:
> \repeat ... \alternative ...
> in second Voice and Lyrics.
> Additionally I'd go for \new Lyrics ... instead of \addlyrics for all
> but most simple cases.
> addlyrics is a shortcut, sometimes more "cut" than "short" ;)
>
>
> I'm aware some people don't like entering Voices separately as I recommend.
> Then  \parallelMusic may be the way to go:
> http://lilypond.org/doc/v2.19/Documentation/notation-big-page#writing-music-in-parallel
>
>
>>
>> BTW: Is there a way to combine/collapse breaks within one staff in
>> multi-voice scenarios?
>
> Here I don't understand what you mean.
>
>
> Cheers,
>   Harm
>

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user