lilypond 进阶—— 用scheme画图

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

lilypond的许多底层设定是经过scheme语言写的,特别是要写函数的时候。函数

因此了解一下scheme的做用很重要。code

不幸的是,不像lilypond自己的代码,scheme代码的结果是不会直接预览的,这个问题困扰我好久对象

直到这几天稍微摸索清楚了,把scheme里面和做图有关的一些命令整理以下,包括了如下内容:blog

1)用坐标的方式做图ci

2)图像的基本操做,如移动、复制、放缩、旋转等文档

 

 

 

 

\version "2.20.0"
\language "english"

\paper {
  #(set-paper-size "a6")
}

%这个文档讨论如何用scheme做图

%make-connected-path-stencil的命令,须要声明如下内容
%PS:sbh是“随便画”的意思 sbh= #(make-connected-path-stencil '((0 1) (1 1) (0 0) (-1 -1)) ;;做图路径 0.5 ;;厚度 4 ;;横向比例 3 ;;纵向比例 #t ;;是否闭合 #t ;;是否填充图形 )
%lilypond不会直接将scheme语言写好的结果的显示出来,因此用下面的命令预览最方便
%别忘了引用变量前加#,这是调用scheme语言的标志
\markup { "这是画出来的图" \stencil #sbh } %移动物品就使用ly:stencil-translate,其中要填上对象和移动坐标 sbhmove= #(ly:stencil-translate sbh ;;对象 (cons 20 0) ;;移动坐标 ) \markup { "这是移动后的图" \stencil #sbhmove } %ly:stencil-add将两个或多个对象合起来 %若是要复制对象,则须要先用ly;stencil-translate作移动 sbhTwo = #(ly:stencil-add sbh ;;对象1 (ly:stencil-translate sbh (cons 10 0) );;对象2 ) \markup { "这是合起来的两个图" \stencil #sbhTwo } % 放大缩小图像用ly:stencil-scale命令 sbhbig= #(ly:stencil-scale sbh ;;对象 2 ;;横向比例 3 ;;纵向比例 ) \markup { "这是放大了的图" \stencil #sbhbig } sbhrotate = #(ly:stencil-rotate sbh ;;对象 20 ;;旋转角度 0 ;;旋转中心x坐标 1 ;;旋转中心y坐标 ) \markup { "这是旋转后的图"\stencil #sbhrotate }