ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基本练习生成器v0.1

2022-05-11 02:31:19  阅读:268  来源: 互联网

标签:动机 上行 结尾 练习 生成器 下行 relative 模进 v0.1


设计基本练习生成器的初衷,是希望能按我们所习惯的语言顺序,将我们的需要自然地迁移到代码上,即:

将“动机”按指定“节奏型”,设定好“优先上/下行”的顺序,用指定的“模进方式”,沿着指定的“序列”,延伸“几个八度”,还可以在上下行的结尾设置“调整”,最后是配备相应的“指法”。

只是几句话的事情,却花费了大量的功夫,特别是从这个例子的up主得到的代码,在处理了节奏型问题的基础上,解决了许多细节上的问题。

现在,将下面这个文件下载后,在lilypond文件里用\include命令引用,就可以按着自己的要求生成基本练习了。

https://files.cnblogs.com/files/lilypondgaspard/commands-from-lilypondgaspard.zip

因为个人能力原因,这个生成器肯定还有许多问题,看看能不能综合一下各位读者的意见,以做出更多改进

---------------------

 

基本练习生成器,实质上是一个有多个参数设置的函数。我目前规定的语法是这样的:

\BasicExercise
%以下是参数
\relative c'{ c df c d }	        % 1. 动机
{}				        % 2. 下行时动机(可以缺省)
{c8. c16}			        % 3. 节奏型、连断等
#UP		    		        % 4. 先上行/下行
"Transpose"		             % 5. 模进方式
{c cs d ds e f g gs a bf b}	     % 6. 模进序列
#2				        % 7. 延伸几个八度
{}				        % 8. 上行结尾补充
{c'1}				     % 9. 下行结尾补充
{s8._3 s16_4}			     % 10. 指法            

换言之,设定了这些参数之后,就能自动生成一个完整的基本练习啦!

以下是一个例子

\version "2.22.1"
\language "english"

\include "D:\commands-from-lilypondgaspard.ly" 
% 双引号里面的文件就是解压后的文件,地址要全英文(像这个例子就放在D盘上),不然怕识别错误
\markup {"分解二度"} { \BasicExercise % 以下是参数 \relative c'{ c d } % 1. 动机 {} % 2. 下行动机(可缺省) {c2 } % 3. 节奏型、连断等 #UP % 4. 先下行/上行 "ModalTranspose" % 5. 模进方式 {c d e f g a b} % 6. 模进序列 #2 % 7. 延伸几个八度 {} % 8. 上行结尾补充 {c'1} % 9. 下行结尾补充 {s2-2 s-3} % 10. 指法 }

它的生成结果如下:

 

可以尝试调整参数。例如在第3项那里改变节奏型(在节奏型那里,音高只是形式音高,本身不输出),像这样(红色部分是改动的地方):

  \BasicExercise
  % 以下是参数
  \relative c'{ c d }	% 1. 动机
  {}			% 2. 下行动机(可缺省)
  {c2. c4 }		% 3. 节奏型、连断等
  #UP			% 4. 先下行/上行
  "ModalTranspose"	% 5. 模进方式
  {c d e f g a b}	% 6. 模进序列
  #2			% 7. 延伸几个八度
  {}			% 8. 上行结尾补充
  {c'1}			% 9. 下行结尾补充
  {s2.-2 s4-3}		% 10. 指法

注意指法那里要相应地改变时值,不然会对不齐。结果如下:

 

可以增加一点连断(红色为变动部分)

  \BasicExercise
  % 以下是参数
  \relative c'{ c d }	% 1. 动机
  {}			% 2. 下行动机(可缺省)
  {c2.( c4-.) }		% 3. 节奏型、连断等
  #UP			% 4. 先下行/上行
  "ModalTranspose"	% 5. 模进方式
  {c d e f g a b}	% 6. 模进序列
  #2			% 7. 延伸几个八度
  {}			% 8. 上行结尾补充
  {c'1}			% 9. 下行结尾补充
  {s2.-2 s4-3}		% 10. 指法

结果如下:

还是比较方便的。

下面提供几种例子

\markup "例子一:短琶音"
{
  \BasicExercise
  \relative c'{c e g c}			% 1. 动机
  {}					% 2. 下行动机(缺省)
  {c4}					% 3. 节奏型
  #UP					% 4. 先上行
  "ModalTranspose"			% 5. 调内模进
  {c e g}				% 6. 模进序列(这里相当于转位序列)
  #2					% 7. 延伸2个八度
  \relative c'''{c4 e g e}		% 8. 上行结尾补充
  \relative c''{c4 g e g c,1}		% 9. 下行结尾补充
  {s4_1 s_2 s-3 s-5
   s_1 s_2 s-4 s-5
   s_1 s_2 s-3 s-5}			% 10. 指法
}

 

\markup "例子二:哈农第一首"
{
\BasicExercise
  %以下是参数
  \relative c'{ c e f g a g f e }	% 1. 动机
  \relative c''{ g e d c b c d e }	% 2. 下行动机
  {c8}					% 3. 节奏型
  #UP					% 4. 先上行		
  "ModalTranspose"			% 5. 调内模进
  {c d e f g a b}			% 6. 模进序列
  #1					% 7. 延伸1个八度
  {}					% 8. 上行结尾补充
  \relative c'{ g'8 e d c b c d e c1}	% 9. 下行结尾补充
  {s8_1 s_2 s_3 s_4 s_5 s_4 s_3 s_2
   s1*13
   s8-5 s-4 s-3 s-2 s-1 s-2 s-3 s-4}	% 10. 指法
}

 

 

\markup "例子三:分解小三度练习"
{
  \BasicExercise
  \relative c'{ c ef }		% 动机
  {}				% 下行时动机
  {c8}				% 节奏型、连断等
  #UP				% 先上行/下行
  "Transpose"			% 严格模进
  {c cs d ds e f g gs a bf b}	% 模进序列
  #2				% 延伸几个八度
  {}				% 上行结尾补充
  {c'1}				% 下行结尾补充
  {
    s8_1 s_3 s_2 s_4 s_1 s_5 s_2 s_3
    s_1 s_4 s_1 s_3 s_2 s_4 s_1 s_3
    s_2 s_4 s_1 s_5 s-2 s-3 s-1 s-4
    s1*3
    s8^3 s^1 s^4 s^1 s^3 s^2 s^4 s^1
    s^4 s^2 s^3 s^1 s^4 s^2 s^3 s^1
    s^4 s^1 s^3 s^2 s^5 s^1 s^4 s^2
    s^3 s^1 s^4 s^1
  }			% 指法
}

 半音阶在上行转下行时有点问题,这个bug需要后面去修复

关于模进序列有一个要补充的是,\include的文件里有自动生成调性音阶的函数\scaleOnNote ,它的功能是指定了音符和调式之后,能直接从音符开始生成调式音阶。

\markup{"f小调音阶"}
\scaleOnNote f' \minor

\markup {"B大调音阶"}
\scaleOnNote b \major

输出结果如下

 

 

 按照这个路线也可以设计出相应的模式来,例如

\markup {"f小调旋律三度"}
{
  \key f \minor
  \BasicExercise
  % 以下是参数
  \relative c'{ f af }	% 1. 动机
  {}			% 2. 下行动机(可缺省)
  {c2 }			% 3. 节奏型、连断等
  #UP			% 4. 先下行/上行
  "ModalTranspose"	% 5. 模进方式
  \scaleOnNote f \minor	% 6. 模进序列
  #2			% 7. 延伸几个八度
  {}			% 8. 上行结尾补充
  {f'1}			% 9. 下行结尾补充
  {s2-2 s-4}		% 10. 指法
}

 

标签:动机,上行,结尾,练习,生成器,下行,relative,模进,v0.1
来源: https://www.cnblogs.com/lilypondgaspard/p/16255835.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有