7

I am writing down the lovely Old Castle from Mussorgsky. And from the beginning there is a tie linking polyphonic voices. What I want to achieve is this:

tie for several voices

but what I get is

No tie

Even if I put a tie, nothing happens. My code looks like:

\language "italiano"
\header {
  title = "Il Vecchio Castello from Pictures at an Exhibition"
  composer = "Modest Mussorgsky"
 }
upper = \relative do' {
  \clef treble
  \key si \major %enter preformatted text here
  \time 6/8
  R3 R3 R3
 }

lower = \relative do {
  \clef bass
  \key si \major
  \time 6/8
  <sold red'>2.~<<{red'4 red8 red^. red^. red^.} \\ {sold,4. sold} >> <<{red'8.[( mi16) red8^.] fad^.( mi^. red^.)} \\ {sold,4. sold} >>  }

 \score {
 \new PianoStaff <<
  \new Staff = "upper" \upper
   \new Staff = "lower" \lower
>>  
\layout { }
\midi {  \tempo 4 = 120 }
}

Any hint on how to tie?

2 Answers 2

7

I recommend starting the polyphonic construction immediately in the first measure. This will cause the opening G♯ to be stem down, so a quick \once \stemUp will move the stem up to match the notation you're looking for.

I also changed your R3 to R2. to accurately reflect the meter.

\version "2.20.0"
\language "italiano"

upper = \relative do' {
  \clef treble
  \key si \major %enter preformatted text here
  \time 6/8
  R2. R R
 }

lower = \relative do {
  \clef bass
  \key si \major
  \time 6/8
  <<
    {
      red2.~ |
      red4 red8 red-. red-. red-. |
      red8.[( mi16) red8^.] fad^.( mi^. red^.)
    } 
    \\ 
    {
      \once \stemUp sold,2.~ |
      sold4. sold |
      sold sold |
    } 
  >>
}

\score {
  \new PianoStaff <<
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
  >>
  \layout { }
}

enter image description here

2
  • 1
    Indeed @Richard, I figured out that extending the polyphonic constructions solves, but your solutions is really more elegant. Thank you! Also thank you for the R2. hint, I received lilypond warnings for this with no clue on how to solve it!
    – Juan Chô
    Sep 4, 2021 at 16:22
  • 1
    Oh and I missed the steam up, thank you again!
    – Juan Chô
    Sep 4, 2021 at 16:25
3

A suggestion to change your code practice:

Instead of this:

music = {
  ...
  <<{ ... }\\{ ... }>>
  ...
  <<{ ... }\\{ ... }>>
  ...
}
\score {
  \new Staff { \music }
}

Try doing this:

music_upper = {
  \oneVoice
  ...
  \voiceOne ... \oneVoice
  ...
  \voiceOne ... \oneVoice
  ...
}
music_lower = {
  \voiceTwo
  s
  ...
  s
  ...
  s
}
music = <<{ \music_upper }\\{ \music_lower }>>
\score {
  \new Staff { \music }
}

That is, instead of using <<{}\\{}>> multiple times within one context, use it once, and use the combination of \voiceOne, \voiceTwo, and \oneVoice to change voice directions.

The rationale:

According to the bug thread here, there’s apparently a common misconception about using the <<{}\\{}>> construct. I didn’t realize it until I’d typeset several hundred short pieces, but each time <<{}\\{}>> is invoked, two additional Voice contexts are created. That means that if you make use of that construct several times, you might end up with the compiled equivalent of a \score {} with dozens upon dozens of \new Voice {} contexts.

In my case, this caused a huge slow-down, and led to compile failures. The proposed solution was to use fewer contexts and make use of \voiceOne, \voiceTwo, and \oneVoice. Using \voice... will automatically control certain aspects of the notation, such as stem direction and articulation direction. (\oneVoice neutralizes these.)

Think of the differences this way:

RH = \relative c'' {
  red
  <<{ yellow }\\{ blue }>> red
  red
  <<{ green }\\{ cyan }>>
  red
}

awful

and this:

RH_upper = \relative c'' {
  red
  \voiceOne red \oneVoice red
  red
  \voiceOne red \oneVoice
  red
}
RH_lower = \relative c'' {
  s
  blue s
  s
  blue
  s
}
RH = <<{ \RH_upper }\\{ \RH_lower }>>

better

Five voices in five measures in the first example; two voices in the second example. It can feel a bit more cumbersome to begin with, but I think it helps in the long run, especially if you are going to typeset pieces longer than a few measures.

Using this method specifically, how to make a polyphonic tie:

RH_upper = \relative c' {
  \oneVoice
  R2. R
}
RH_lower = \relative c' {
  s2. s
}
LH_upper = \relative c {
  \oneVoice
  <gis dis'>2.^~
  \voiceOne dis'4 dis8 dis dis dis
}
LH_lower = \relative c {
  \voiceTwo
  \once \hideNotes
  <gis dis'>2.~
  gis4. gis
}
pianoRH = <<{ \RH_upper }\\{ \RH_lower }>>
pianoLH = <<{ \LH_upper }\\{ \LH_lower }>>

Incidentally, you will notice that certain notation elements, such as the . on the first note, are correctly moved above the staff line. They will not be in the other method unless you manually correct them.

1
  • Hello Neal, indeed your suggestion looks cumbersome and I dont fully understand it. Still your suggestion is interesting as, in this piece Mussorgsky wrote for the F key almost entirely two voices and for the G key two voices in several places.So my notation and code starts to look really cumbersome as well. I am going to study your example ( switching to onevoice is what was blocking me)
    – Juan Chô
    Sep 6, 2021 at 8:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.