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

lilypond进阶——用scheme修改乐谱细节的更多相关文章

  1. lilypond 进阶—— 用scheme画图

    lilypond的许多底层设定是通过scheme语言写的,特别是要写函数的时候. 所以了解一下scheme的作用很重要. 不幸的是,不像lilypond本身的代码,scheme代码的结果是不会直接预览 ...

  2. CSS进阶内容——布局技巧和细节修饰

    CSS进阶内容--布局技巧和细节修饰 我们在之前的文章中已经掌握了CSS的大部分内容,但仍有一些内容我们没有涉略,这篇文章就是为了补充前面没有涉及的内容,为我们的知识做出补充并且介绍一些布局技巧 当然 ...

  3. 从零开始学Python第七周:面向对象进阶(需修改)

    一,类的属性 (1)示例 通过属性获取已经创建对象的个数 class Plane: pCount = 0 #类属性 def __init__(self,name,category): self.nam ...

  4. 我的Android进阶之旅------>修改Android签名证书keystore的密码、别名alias以及别名密码

    转载于:http://blog.k-res.net/archives/1229.html  和 http://blog.k-res.net/archives/1671.html ADT允许自定义调试用 ...

  5. 【Android Studio安装部署系列】二十七、Android studio修改项目名称和包名

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 实际项目开发中可能碰到项目名称写错了或者需要修改,而且包名可能也想要修改,那么如何操作呢. 本文是在Android Studio3. ...

  6. Android 进阶7:进程通信之 AIDL 的使用

    读完本文你将了解: AIDL 是什么 AIDL 支持的数据类型 AIDL 如何编写 AIDL 实例 创建 AIDL 编写服务端代码 编写客户端代码 运行结果 总结 代码地址 Thanks 记得 201 ...

  7. ios 全方位修改工程名

    本文针对于彻底修改iOS工程名,不需要另外建工程,会整理的跟新工程完全一样 1. 选中旧工程名,改为新的 然后选择rename 2. 依次选择黄色文件夹,修改名字,千万不要在Xcode外修改!!! 修 ...

  8. react-native修改xcode项目名

    目录 1. 选中旧工程名,改为新的工程名 2. 依次选择黄色文件夹,修改名字,千万不要在Xcode外修改!!! 3. 点击Find,点击Find and Replace in Project... 4 ...

  9. Redis入门--进阶详解

    Redis NoSql入门和概述 入门概述 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付,在那个时候, ...

随机推荐

  1. FastAPI 学习之路(二十七)安全校验

    你写API接口肯定你是希望是有权限的人才能访问,没有权限的人是不能访问的,那么我们应该如何去处理呢,我们可以用的验证方式有很多,我们这次分享的是用:OAuth2来认证.那么我们看下,需要怎么才能实现呢 ...

  2. C++的智能指针学习笔记(初)

    C++ primer plus 16.2节介绍了auto_ptr,该模板类在C++11中已弃用,目前已被shared_ptr代替. auto_ptr又叫做智能指针,用于管理动态内存分配的用法. 为什么 ...

  3. javascript-jquery插件

    1.jquery创建插件 jQuery.extend({插件名:函数体,插件名:函数体}): html部分 <div id="div1">开始动画</div> ...

  4. T-SQL——关于XML类型

    目录 0. 将结果集转化为XML格式 1. 列值拼接为字符串 2. 字符串转换为列值 3. 一些说明 参考 志铭-2021年10月23日 10:43:21 0. 将结果集转化为XML格式 测试数据 I ...

  5. Vue接收后端传过来excel表格的文件流并下载

    题外话:当接收文件流时要确定文件流的类型,但也有例外就是application/octet-stream类型,主要是只用来下载的类型,这个类型简单理解意思就是通用类型类似 var .object.ar ...

  6. spring cloud zuul的回退

    当我们使用 @EnableZuulProxy 注解来开启zuul的路由时,默认在@EnableZuulProxy注解上就包含了@EnableCircuitBreaker注解,即开启了断路器功能.那么在 ...

  7. 学习手册 | MySQL篇 · 其一

    InnoDB关键特性 插入缓冲(Insert Buffer) 问题:   在InnoDB插入的时候,由于记录通常都是按照插入顺序,也就是主键的顺序进行插入的,因此,插入聚集索引是顺序的,不需要随机IO ...

  8. GT考试

    比较神仙的$dp+KMP+Matrix$综合题目,比较值得一写 $0x00$:首先我打了一个爆搜 不过对正解并无任何启发...(逗比发言请忽略) $0x01$:基础$dp$ 状态还是比较好设的, 考虑 ...

  9. 21.10.9 test

    T1 购票方案 \(\color{green}{100}\) 对于每个时间节点维护它作为每种票所能包含的最后一个点时,这种票的起始点位置,由于这个位置是单调的,所以类似双指针维护,\(O(KN)\) ...

  10. EasyX安装教程

    Easyx是什么 就是一款可以在Windows里让你的C++程序里显示图片等的工具. 注意:EasyX不支持Linux.MacOS.不过还有Qt等可以选择. 安装VC/VS Easyx只支持Visua ...