基本练习通常是一个两个简单动作在不同位置上反复操练,所以打谱的时候用模进必不可少。

所谓模进,就是把一个片段平行地转移到其他音高上进行。比如

do re mi fa

可以把从do开始改成从so开始,那么就变成了

so la si do

lilypond的模进命令很管用,能节省大量时间。它的命令是:

%先声明片段
pianduan = \relative c'{
c d e f
} \score{
  %把片段从c模进到d
\transpose c d { \pianduan}
}

下面给出我做的例子

%声明好片段basicOne
basicOne = \relative c''{
d8-2~ c-1~ <d c>4
e8-3~ c-1~ <e c>4
f8-4~ c-1~ <f c>4
g8-5~ c,-1~ <g' c,>4
} %正式打谱
\score {
\relative c''{
\clef treble
\basicOne
\break
%模进到d
\transpose c d { \basicOne }
\break
%模进到e,下面类似
\transpose c e { \basicOne }
\break
\transpose c f { \basicOne }
\break
\transpose c g { \basicOne }
\break
\transpose c a { \basicOne }
\break

打完谱子基本上就长下面这样

\transpose是严格模进,也就是说,模进后的每个音符之间的音程关系和之前相同。

所以像这样

do re mi

从c模进到d之后,就会变成

re mi #fa

因为re mi是全音,所以这两个音模进后也必须保持全音,也就是mi #fa,而不会是mi fa

如果要让模进始终在原来的调性音阶上进行,这种模进一般被称作首调模进。

命令是\modalTranspose,与其配套的还要再声明一个模进用的音阶,示例如下:

%声明要模进的片段
pianduan = \relative c''{
c d e f
} %声明模进的音阶,就是片段只会在这些音上模进
scaleC = \relative c'{ c d e f g a b } \score{
\relative c'{
%将片段在指定音阶上从c模进到d
\modalTranspose c d \scaleC \pianduan
}
}

上面的练习就改成这样

scaleC = \relative c''{ c d e f g a b }

basicone = \relative c''{
d8-2~ c-1~ <d c>4
  e8-3~ c-1~ <e c>4
  f8-4~ c-1~ <f c>4
  g8-5~ c,-1~ <g' c,>4
} \score {
\relative c''{
\clef treble
\basicone
\break
\modalTranspose c d \scaleC \basicone
\break
\modalTranspose c e \scaleC \basicone
\break
\modalTranspose c f \scaleC \basicone
\break
\modalTranspose c g \scaleC \basicone
\break
\modalTranspose c a \scaleC \basicone
\break
\modalTranspose c b \scaleC \basicone
\break
\modalTranspose c c' \scaleC \basicone
}
}

效果如下

用lilypond实现模进的更多相关文章

  1. Open Yale course:Listening to Music

    一.Introductionhttps://app.yinxiang.com /Home.action?offer=www_menu#n=4b034a29-986d-4914-8220-eb99c2e ...

  2. AIR lame参数配置

    -Duser.name=Z.yu 固定码率的例子:=======================================================================固定码率 ...

  3. [转]linux下lame的使用

    找到這篇好文章,不得不说開源的Lame功能很強大 linux下lame的使用 % lame [参数] <输入文件名> [<输出文件名>] 如需查询更多参数,可输入下列命令: % ...

  4. 机器学习第7周-炼数成金-支持向量机SVM

    支持向量机SVM 原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser.Guyo ...

  5. zt 李鸿章听过《彩云追月》?

    ZT 李鸿章听过<彩云追月>? 2013-05-11 09:35:52 编辑 删除 归档在 观世上之音 | 浏览 1041 次 | 评论 1 条 尝试在网上找一点有关<彩云追月> ...

  6. PHP hex文件及bin文件读取

    背景:做物联网时经常会有软件上传这种操作,上传的软件包文件常见的是hex和bin这两种. 一 hex文件读取 1 首先我们需要了解hex文件内容格式 (图及下面说明来自网络,侵权必删) :(冒号)每个 ...

  7. poj2305-Basic remains(进制转换 + 大整数取模)

    进制转换 + 大整数取模一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串-&g ...

  8. poj2635(千进制取模+同余模定理)

    题目链接:https://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 题意:给出大数s (s<=10100) ,L (< ...

  9. poj 2305(指定进制,大数取模)

    题意:输入一个进制b,在输入两个基于b进制的大整数 x,y ,求x%y的b进制结果. http://162.105.81.212/JudgeOnline/problem?id=2305 函数: Str ...

随机推荐

  1. 请使用迭代查找一个list中最小和最大值,并返回一个tuple

    如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在Python中,迭代是通过for ... in来完成的,而很多语 ...

  2. Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract 报错解决

    java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract ----- ...

  3. 机器学习中K-means聚类算法原理及C语言实现

    本人以前主要focus在传统音频的软件开发,接触到的算法主要是音频信号处理相关的,如各种编解码算法和回声消除算法等.最近切到语音识别上,接触到的算法就变成了各种机器学习算法,如GMM等.K-means ...

  4. c#基础四

    写入一个XML文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  5. mysql重复数据下,删除一条重复数据

    delete from information where id in (select id from (select max(id) as id,count(*) as ccc from infor ...

  6. 页面的隐藏或显示:hidden与visibilityState

    我们在很多地方都需要判断用户是不是在当前页面,如果离开了当前页面我们需要捕捉到并进行一些操作. 例如:当视频处于播放状态时,我们需要判断用户是不是在当前页面以继续播放,如果离开了我们需要暂停播放. 有 ...

  7. idea-Java文件结构

    从项目目录来看 ,分级为project-module-package-classname.java 其中.java文件中包含至多一个publicclass.class文件和多个普通.class文件 . ...

  8. .NET项目迁移到.NET Core操作指南

    为什么要从.NET迁移到.NET Core? .NET Core提供的特性 .NET Core性能提升 .NET如何迁移到.NET Core? 迁移工作量评估(API兼容性分析) 迁移方案制定 通过类 ...

  9. 小心使用strcpy函数时越界

    strcpy()函数应该是我们用的比较常用的一个函数,基本功能是将一个字符串拷贝到我指定的内存空间.但是要复制的字符串长度超过这段内存空间的话,结果可能是未知的. 比如以下的程序: #include ...

  10. 关于Linux服务器配置java环境遇到的问题

    关于Linux服务器配置java环境遇到的问题 将下载好的JDK安装包解压到/etc/local/路径下,安装完后用vim/etc/profile文件,在文件末尾添加 export JAVA_HOME ...