如何可靠地显示延迟转弯?

How to reliably display a delayed turn?

我正在尝试排版 John Field 的 'Nocturne n°5' 钢琴短曲。我的主要问题出现在第 14、17 和 38 小节,其中 gruppetto 呈现为带有自然符号的延迟转弯。

这是您可以在 Internet 上找到的其中一个版本的样子:

这是我自己可以实现的:

这是我试过的代码:

\版本“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 { }
}

您会注意到我选择了创建一个临时的复音段落并且我可以选择隐藏高音或低音。我对两者都进行了试验,但将渲染的声音保持在上方并隐藏下方的声音似乎更合乎逻辑。但是,这会使转弯出现在工作人员的下部。

编辑

我已经用一个片段更新了问题,现在应该编译供其他人尝试。我的主要问题是延迟转弯发生在一段必须跨越措辞连贯的段落中。由于我找不到在单声部和多声部段落之间进行连线跨度的方法,因此我需要将复音段落保留的时间比延迟的转弯部分更长。

如何改进转牌和意外牌的位置。

你不应该在 \markup 块中使用 \turn;相反,立即将其附加到注释中:

\once \hideNotes b16-\turn

顺便说一句,这是 the example in the lilypond documentation

我无法编译你的片段所以我从头开始重新创建它(免责声明:我不会弹钢琴并且我的音乐知识有限)但我觉得它很好:

\version "2.19.40"

global = {
  \key bes \major
  \numericTimeSignature
  \time 12/8
}

right = \relative c'' {
  \global
  % bar 14
  <<
    { d4.-> c2. c4.-2( | }
    {
      s1 s4
      \once \set suggestAccidentals = ##t
      \once \override AccidentalSuggestion.outside-staff-priority = ##f
      \once \override AccidentalSuggestion.avoid-slur = #'inside
      \once \override AccidentalSuggestion.font-size = -3
      \once \override AccidentalSuggestion.script-priority = -1
      \single \hideNotes
      b4-\turn
    }
  >>
  f'4.-5) ees4-3
}

left = \relative c {
  \global
  % bar 14
  e8\sustainOn([ c' bes g' c, bes] e, g' bes, ees,\sustainOn f' a,) |
  ees8\sustainOn f' bes,-2 f-5\sustainOff
}

\score {
  \new PianoStaff
  <<
    \new Staff = "right" \right
    \new Staff = "left" { \clef bass \left }
  >>
  \layout { }
}

在您更新的示例中,问题有所不同,因此我添加了一个新答案。 您在临时复音段落中使用了双反斜杠结构,转折显示在五线谱下方。发生这种情况是因为您从未明确定义声音。在符号参考 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..

所以LilyPond会将\voiceOne分配给第一个语音,\voiceTwo分配给第二个语音。在 \voiceTwo 中,\turn 和其他类似的对象显示在五线谱下方。我推荐阅读 Explicitly instantiating voices.

解决方法:在临时和弦段落的第二声部去掉\或添加\voiceThree(\voiceOne隐含在第一声部段落的声音,如果你在第二个使用它,你会与连线发生冲突;这就是为什么你需要 \voiceThree).