2

对于手风琴乐谱符号,通常在括号中指定音高,例如(以下片段中括号中的 E)。这是我的目标:

括号中的间距

括号中的音高 (1) 不被弹奏,并且不应该在小节中占用额外的逻辑时间(它们是为了方便演奏者阅读乐谱时使用的),(2) 它们应该留在和弦附近。

我现在的 LilyPond 代码如下:

\version "2.18.2"
\include "deutsch.ly"
#(set-global-staff-size 20.0)

\relative c {
    \clef bass
    e8 <gis d' e>^7 h, q

    \override Stem.details.beamed-lengths = #'(0)  
    \grace \parenthesize  e
    \revert Stem.details

    e <gis d' e> gis, q

    \override Stem.details.beamed-lengths = #'(0)  
    \grace \parenthesize  e'
    \revert Stem.details
}

使用lilypond --pdf sample.ly我得到以下结果:

百合池输出

我在 LilyPond 中获得的结果有几个问题:(i)词干长度对装饰音没有影响,(ii)装饰音移动到下一个小节,理想情况下它应该靠近和弦,(iii)括号太小(虽然这是一个小评论)。

如何使用 LilyPond 达到预期的效果(即第一张图片)?

PS编辑:

我能够创建一个解决方法(见下文),这并不优雅,但可以完成工作:

\version "2.18.2"
\include "deutsch.ly"
#(set-global-staff-size 20.0)

\relative c {
  \clef bass
  e8 <gis d' e>^7 h, \afterGrace q 
  {
  \override Stem.thickness = #-1.0
  \parenthesize e4
  \revert Stem.thickness
  }
  e8 <gis d' e> gis,_B \afterGrace q
  {
  \override Stem.thickness = #-1.0
  \parenthesize e'4
  \revert Stem.thickness
  }
}

上述代码段的输出如下:

Lilypond 解决方法

有没有更好的方法来实现它?

4

1 回答 1

2

除了 using \override Stem.thickness = #-1.0,更优雅的解决方案是使用该stencil属性。此属性可用于省略词干、标志、音符头等。此外,\once \override <something>如果您只想覆盖单个音符/和弦并在其后自动恢复,则可以使用该语句。最后,您还可以定义一个音乐函数来自动处理所有这些,特别是如果您经常使用这种结构。在下面的这个例子中,参数是紧接在优雅音符之前的音符/和弦和优雅音符本身,请参阅:

\version "2.18.2"
\include "deutsch.ly"
#(set-global-staff-size 20.0)

accordionGrace = #(define-music-function
     (parser location firstNote secondNote)
     (ly:music? ly:music?)
      #{
        \afterGrace
        $firstNote
        {
          \once \override Stem.stencil = ##f
          \once \override Flag.stencil = ##f
          \parenthesize $secondNote
        }
      #}
     )

\relative c {
  \clef bass
  e8 <gis d' e>^7 h, 
  \accordionGrace q e8
  e8 <gis d' e> gis,_B 
  \accordionGrace q e'8
}
于 2017-04-11T11:30:40.340 回答