lilypond进阶——用scheme修改曲谱细节

2021年11月25日 阅读数:3
这篇文章主要向大家介绍lilypond进阶——用scheme修改曲谱细节,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

lilypond对曲谱内容的修改很是自由,用户能够自由根据须要作调整ide

调整通常都是用\override的命令,可是会比较冗长,码代码的时候比较麻烦函数

从新设置一个函数来归纳命令,调用的时候使用的代码更短、更舒心code

函数不只能够打包一系列操做,还能够留给用户设定更多参数,更加灵活blog

这里展现的只是一个很小的示例,因此说服力还不是很强,了解一下便可。展现的内容是:文档

1)用\override 命令调整音符颜色io

2)设置完\blueNote 命令以后,直接打\blueNote 就能实现音符变色function

3)设置完\colorNote 命令以后,还能够指定任意颜色,让音符变色。class

预览以下,后面是代码变量

 

 

 

 

\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' %记得要按函数里设定的顺序输入
}