2015-12-16 5 views
1

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

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

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, и т.д ...). Я хотел бы, чтобы конечный продукт, чтобы выглядеть примерно так:

enter image description here

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

ответ

2

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

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

sample lilypond output

+0

Спасибо, @Paco, это очень приятно. Единственная оставшаяся проблема заключается в том, чтобы заставить ее работать с шаблонами, длина которых превышает одно измерение. В настоящее время, если вы задаете 'cOne = \ chordmode {c1}' для двухмерного шаблона (например, 'mOne = {c'4 e 'g' g 'e' c 'ss}'), названия аккордов движутся быстрее, чем шаблон. Я хотел бы, чтобы имена и шаблоны аккордов были автоматически выровнены независимо от длины шаблона (т. Е. Я не хочу вводить 'cOne = \ chordmode {c1 s}' для двухмерного шаблона). – scaramouche