lilypond:定义一个包含\ transpose的宏?

时间:2019-01-18 15:42:24

标签: lilypond

我收集了一些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

这是一件小事,但是我可以将此转置到宏中,这样我就可以定义一次?

1 个答案:

答案 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.