LilyPond:没有茎的括号(手风琴符号)

时间:2017-04-10 09:03:48

标签: pitch lilypond music-notation

对于手风琴音乐表格,通常指定 括号中的音高,例如(以下摘录中的括号中的E)。这是我的目标:

http://iwant.sourceforge.net/ext-libs-in-wsdef.html

括号(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我得到以下结果:

pitch in parenthesis

我在LilyPond中获得的结果有几个问题:(i)词干长度对恩典音符没有影响,(ii)恩典音符被移动到下一个音符,理想情况下它应该保持在和弦附近,(iii)括号太小了(尽管这是一个小问题)。

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

P.S。编辑:

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

\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 output

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

1 个答案:

答案 0 :(得分:2)

更优雅的解决方案是使用\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
}