2

我想在 Lilypond 中创建一个函数,它接受一个注释作为输入并返回应用了一些标记的注释。具体来说,我想简化如下内容:

\relative c' { d^\markup{\hspace #2 \smaller +1}-\bendAfter #+1 }

类似于

\relative c' { \bend{d} }

目前我有以下片段:

mF = \markup{\hspace #2 \smaller +1}
bF = \bendAfter #+1

bendF = #(define-music-function (parser location note) (ly:music?)
        #{ $note^\mF-\bF #}
)

\relative c' { d^\mF-\bF }
\relative c' { \bendF{d} }

\version "2.16.2"

似乎数据类型ly:music?不正确,或者无法直接附加标记,我最终得到的解释器错误描述性不强。

达到这种效果的最佳方法是什么?

4

1 回答 1

2

这可能不是您正在寻找的解决方案,但您可以通过使用不带参数的事件函数而不是音乐函数来解决您的问题(从而解决 ly:music? 问题)。尝试:

\version "2.17.95"

mF = \markup{\hspace #2 \smaller +1}
bF = \bendAfter #+1

bendF = #(define-event-function 
     (parser location )
     ( )
      #{
        ^\mF-\bF
      #}   
)

\relative c' { d^\mF-\bF }
\relative c' { d\bendF }
于 2013-12-04T18:31:17.017 回答