我收集了一些Lilypond文件,用于人声和吉他。我需要为其中一些做投诉警察课。我正在http://lilypond.1069038.n5.nabble.com/Newbie-Question-verse-and-chorus-td46241i20.html中使用Carl Sorensen-3答复中的代码来打印变调夹和弦。
这有效:
\version "2.18.2"
\include "predefined-guitar-fretboards.ly"
% Carl Sorensen-3's reply in
% http://lilypond.1069038.n5.nabble.com/Newbie-Question-verse-and-chorus-td46241i20.html
parenthesizeAll =
#(define-music-function (parser loc myMusic) (ly:music?)
(music-map
(lambda (ev)
(if (or (memq 'note-event (ly:music-property ev 'types))
(memq 'rest-event (ly:music-property ev 'types)))
(set! (ly:music-property ev 'parenthesize) #t))
ev)
myMusic)
myMusic)
theMelody = \relative g' { c1 }
theChords = \chordmode { c1 }
verseI = \lyricmode { See }
\score {
<<
\context ChordNames {
\set instrumentName = #"Capo 3"
\parenthesizeAll
\transpose c a { \theChords }
}
\new FretBoards { \transpose c a { \theChords } }
\new ChordNames { \theChords }
\new Staff {\context Voice = "voiceMelody" { \theMelody }
}
\new Lyrics = "lyricsI" { \lyricsto "voiceMelody" \verseI }
>>
\layout {
% make the "Capo x" show up
\context {
\ChordNames \consists Instrument_name_engraver
}
}
}
现在:我想将移调放到一个宏中(确保我在Fretboards上获得了移调设置,移调和弦相同)。
以此替换\ score块
% define once
tC = { \transpose c a }
\score {
<<
\context ChordNames {
\set instrumentName = #"Capo 3"
\parenthesizeAll
\tC { \theChords }
}
\new FretBoards { \tC { \theChords } }
\new ChordNames { \theChords }
\new Staff {\context Voice = "voiceMelody" { \theMelody } }
\new Lyrics = "lyricsI" { \lyricsto "voiceMelody" \verseI }
>>
\layout {
% make the "Capo x" show up
\context {
\ChordNames \consists Instrument_name_engraver
}
}
}
结果:
/home/wegscd/mup/CapoTest.ly:23:23: error: syntax error, unexpected '}'
tC = { \transpose c a
}
/home/wegscd/mup/CapoTest.ly:26:3: error: errors found, ignoring music expression
这是一件小事,但是我可以将此转置到宏中,这样我就可以定义一次?
答案 0 :(得分:0)
我有同样的问题,并且从http://lsr.di.unimi.it/LSR/Item?id=787那里得到了答案
我正在对其进行小的修改:
MyTranspose =
#(define-music-function (parser location m)
(ly:music?)
#{ \transpose c c $m #}) % transposing c to c does nothing. Adjust as needed.