Lilypond:定义一个包含 TRANSPOSE 的宏



我有一些Lilypond文件,我把它们放在一起,用于人声和吉他;我需要为他们中的一些人做变调。我正在使用Carl Sorensen-3的回复中的代码来打印变调和弦 http://lilypond.1069038.n5.nabble.com/Newbie-Question-verse-and-chorus-td46241i20.html。

这有效:

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
    }
  }
}

现在:我想将转置放入宏中(保证我在指板上获得相同的转置设置和转调)。

将 \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

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

我有同样的问题,并从 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.

相关内容

  • 没有找到相关文章

最新更新