lilypond进阶——用scheme修改乐谱细节
lilypond对乐谱内容的修改非常自由,用户可以自由根据需要做调整
调整一般都是用\override的命令,但是会比较冗长,码代码的时候比较麻烦
重新设置一个函数来概括命令,调用的时候使用的代码更短、更舒心
函数不仅可以打包一系列操作,还可以留给用户设定更多参数,更加灵活
这里展示的只是一个很小的示例,所以说服力还不是很强,了解一下即可。展示的内容是:
1)用\override 命令调整音符颜色
2)设置完\blueNote 命令之后,直接打\blueNote 就能实现音符变色
3)设置完\colorNote 命令之后,还可以指定任意颜色,让音符变色。
预览如下,后面是代码
\version "2.20.0" \language "english" \paper { #(set-paper-size "a6") } %这个文档讨论用scheme编写函数来改变乐谱元素 {c'} %用override命令可以修改音符的颜色 \markup {"用\override把音符修改成红色,但是命令比较长"} { \override NoteHead.color = #red c' } % \override命令太长,不直观 % 所以干脆设定一个\blueNote命令,这样用的时候不用打那么长的代码 blueNote = #(define-music-function (my-music) ;;引用变量,自由设名字,数量不限 (ly:music?) ;;变量类型,要和前面的变量对应 ;;以下是函数的执行 ;;在scheme里使用lilypond语言,需要加上括号#{和#} #{ \override NoteHead.color = #blue $my-music % “$”表示引用 #}) \markup {"设置完\blueNote命令后,实现的代码变简单了"} % 看看下面,是不是比\override命令简短多了? { \blueNote c' } %更复杂的功能当然也能实现,比如由用户指定颜色 colorNote = #(define-music-function (my-color my-music) ;;先颜色还是先音符,可以自己定,但是调用时要注意保持顺序 (color? ly:music?) #{ \override NoteHead.color = #my-color % 到时候输入什么颜色,就变成什么颜色 $my-music #}) \markup {"设置完\colorNote命令,可以指定任意颜色,比如绿色"} { \colorNote #green c' %记得要按函数里设定的顺序输入 }