自编命令:分解和弦
lilypond没找到分解和弦的指令,特别是\chordmode下,只能打和弦本体,不能打分解和弦
所以试着设计了一下命令,由于不懂程序,摸索过程那叫一个昏天黑地……
直接讲结果::
一般模式下使用\ArpeggioChord
和弦模式下用\ArpeggioChordm
注意!这两项命令必须复制命令区的全部代码!
一般模式下性价比不高,更多是和弦模式好用……
先贴效果,再贴命令
\version "2.22.1" \language "english" %%%%%% 本文件设计了分解和弦的方法 %%%%%%%% %%%%%%%%%%%%% 以下是命令区,要使用该命令请复制全部内容 %%%%%%%%%%%%% %%%%%%%%%%%%% 基础指令区 %%%%%% #(define (get-elements mymusic) (ly:music-property mymusic 'elements) ) #(define (get-sequential-music mymusic) (ly:music-deep-copy mymusic) ) %%%%%%%%% 一般模式下的和弦 %%%%%%%% ArpeggioChord= #(define-music-function (mymusic) (ly:music?) (make-sequential-music (apply append (map get-elements (get-elements (get-sequential-music mymusic))))) ) %%%%%%%%% chordmode 需要额外增加这一条 %%%%%%% #(define (go-into-chordmode mymusic) (ly:music-property (ly:music-deep-copy mymusic) 'element) ) %%%%%%%%% chordmode 模式下 %%%%%%%% ArpeggioChordm= #(define-music-function (mymusic) (ly:music?) (make-sequential-music (apply append (map get-elements (get-elements (get-sequential-music (go-into-chordmode mymusic)))))) ) %%%%%%%%%% 命令区结束,复制到此为止 %%%%%%%%%%% %%%%%%%%%% 命令应用实例 %%%%%%%%%%%%%%%%%% \markup {"一般模式下的分解和弦"} MyMusic={ <c' e' g' c''>4 <d' f' a' d''> } \markup {"这是原位"} { \MyMusic } \markup {"这是分解"} { \ArpeggioChord \MyMusic } \markup {"chordmode下的分解和弦"} \markup {"这是原位"}
ChordList= \chordmode{ % 可往这里填和弦 c4:7 d4:7 e4:m7 g:maj7 }
{ \ChordList } \markup {"这是分解"} { \ArpeggioChordm \ChordList }