新命令:沿着一条音阶做模进

2021/12/25 6:07:37

本文主要是介绍新命令:沿着一条音阶做模进,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在用lilypond实现模进 - lilypond手残粉 - 博客园 (cnblogs.com)里,我知道了有调内模进的命令\modalTranspose

但实际写基本练习的时候,调内模进通常是连续进行的,而做一次模进就要调用一次\modalTranspose的命令,实在是麻烦,代码也不漂亮

所以沿着一条音阶一直模进就成了我的心愿。

在新的\modalTransposeScale命令下,只需要提供一个音阶,就能让系统自动完成一系列的模进。效果见图,代码在下面,要使用命令请复制命令区

 

 

 

MyScale={
  c' d' e' f' g' a' b'
}

MyNotes={
  c' d' f' e'
}

%%%%%%%%%%%%%% 命令区 %%%%%%%%%%%%%%%

modalTransposeScale=
#(define-music-function (myscale mymusic) (ly:music? ly:music?)
   (let ( (firstnote (car (ly:music-property myscale 'elements))) )
    (make-music 'RelativeOctaveMusic 'element
      (make-sequential-music
        (apply append
          (map (lambda (x)
              (ly:music-property
                #{ \modalTranspose
                  $(ly:music-property firstnote 'pitch)
                  $(ly:music-property x 'pitch)
                  $myscale
                  $mymusic #}
              'elements))
          (ly:music-property myscale 'elements))
      )))))

%%%%%%%%%%%%%%%% 命令区结束 %%%%%%%%%%%%%%%%%%



\markup{
  "这是准备做模进的片段"
}

{
  \MyNotes
}

\markup{
  "这是准备做模进的音阶,片段会沿着音阶的顺序做模进"
}

{
  \MyScale
}

\markup{
  "这是使用了新命令modalTransposeScale的结果"
  
}
{
  \modalTransposeScale \MyScale \MyNotes
}

 



这篇关于新命令:沿着一条音阶做模进的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程