Использовать Лилипонд, чтобы транспонировать узор вокруг круга пятых

Я хочу предоставить паттерн (например, мажорное арпеджио, C E G), и чтобы Лилипонд автоматически показывал его транспонированным (как один балл) во всех 12 шкалах.

Вот моя текущая попытка:

music = { c' e' g' s }

\new Staff {
  \transpose c c   { \music }
  \transpose c f   { \music }
  \transpose c bes { \music }
  \transpose c ees { \music }
  \transpose c aes { \music }
  \transpose c des { \music }
  \transpose c fis { \music }
  \transpose c b   { \music }
  \transpose c e   { \music }
  \transpose c a   { \music }
  \transpose c d   { \music }
  \transpose c g   { \music }
}

Я не знаю, как добавить текст над каждым шаблоном, указывающий ключ транспонирования (например, C, F, Bb и т. Д.). Я бы хотел, чтобы конечный продукт выглядел примерно так:

Примечание: я хотел бы, чтобы этот код работал независимо от длины шаблона (который может быть длиннее одной меры).

1 ответ

Решение

Если вам нужны автоматические названия нот, это может быть достигнуто путем транспонирования аккордов. Примерно так получается результат, аналогичный тому, что вы показываете. Это не просто и элегантно, но это автоматически в том смысле, что вам не нужно заранее знать аккорд назначения.

\version "2.19.31"

cOne=\chordmode {c1} 

mOne={ c'4 e' g' s }


<<
  \new ChordNames{
    \transpose c f {\transpose c f { \cOne }}
    \transpose c f { \cOne }
    \cOne  
    \transpose c g { \cOne }
    \transpose c g { \transpose c g { \cOne }}
    \transpose c g { \transpose c g { \transpose c g { \cOne }}}
  }

  \new Staff {
    \transpose c f,  {\transpose c f { \mOne }}
    \transpose c f { \mOne }
    \mOne
    \transpose c g { \mOne }
    \transpose c g, { \transpose c g { \mOne }}
    \transpose c g, { \transpose c g { \transpose c g { \mOne }}}
  }
>>

пример выходного сигнала лилии

Другие вопросы по тегам