Search code examples
lilypond

How to reliably display a delayed turn?


I'm trying to typeset a short piano piece, 'Nocturne n°5' by John Field. My main problem occurs on bars 14, 17 and 38 where a gruppetto is rendered as a delayed turn with a natural sign.

This is how it looks like in one of the editions you can find on the Internet:

enter image description here

This what I can achieve myself:

enter image description here

This is the code that I have tried:

\version "2.8.12"

upper = \relative c'' {
  \key bes \major
  \time 12/8

%bar 14

    d4.-> c2. 
    <<
    {
      c4.( f4. ees4 c8 bes4. c4.
      des2.~\sf des4.)
    }
    \\
    {
      % we create the following sequence: { r8 d16 c16 b16 c16 }

      s8
      \single \hideNotes d16
      \single \hideNotes c16
      \single \hideNotes \once \set suggestAccidentals = ##t
      \single \hideNotes \once \override AccidentalSuggestion #'outside-staff-priority = ##f
      \single \hideNotes \once \override AccidentalSuggestion #'avoid-slur = #'inside
      \single \hideNotes \once \override AccidentalSuggestion #'font-size = #-3
      \single \hideNotes \once \override AccidentalSuggestion #'script-priority = #-1
      \single \hideNotes b16-\turn

      \single \hideNotes c16

      % those spaces are to align with the second voice
      % kept in the for the duration of the phrasing slur

      s2. s2.
      s2. s4.
    }
    >>  
}

lower = \relative c {
  \key bes \major
  \time 12/8

%bar14

  e8[( \sustainOn c'8 bes8 g'8 c,8 bes8]
  e,8[ g'8 bes,8]
  ees,8[ \sustainOn f'8 a,8])

  d,8[( \sustainOn f'8 bes,8]
  ees,8[ \sustainOff c'8 g8] 
  f8[ d'8 bes8]
  f8[ ees'8 a,8])

}

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

You'll notice that I chose to create a temporary polyphonic passage and I have a choice to hide either the upper or the lower voice. I have experimented with both but it seems more logical to keep the rendered voice on the upper side and keep the lower voice hidden. However, this make the turn appear on the lower part of the staff.

Edit

I have updated the question with a snippet that should now compile for others to try. My main problem is that the delayed turn happens during a passage that must span a phrasing slur. Since I could not find a way to have a slur span across single-voice and multi-voice passages, I need to keep the polyphonic passage for longer than just the delayed turn part.

How can I improve on the placement of the turn and the accidental.


Solution

  • In your updated example, the problem is different so I'm adding a new answer. You are using the double backslash construct in the temporary polyphonic passage and the turn displays below the staff. This happens because you never define the voices explicitely. In the Notation Reference 1.5.2:

    The << {…} \ {…} >> construct, where the two (or more) expressions are separated by double backslashes, behaves differently to the similar construct without the double backslashes: all the expressions within this construct are assigned to new Voice contexts. These new Voice contexts are created implicitly..

    So LilyPond will assign \voiceOne to the first voice and \voiceTwo to the second voice. In \voiceTwo the \turn and other similar objects are displayed below the staff. I recommend reading Explicitly instantiating voices.

    Solution: either remove the \\ or add \voiceThree in the second voice of the temporary polyphonic passage (\voiceOne is implicitely used in the first voice of the passage and if you use it in the second you'll have a collision with the slur; that's why you need \voiceThree).