Использовать Лилипонд, чтобы транспонировать узор вокруг круга пятых
Я хочу предоставить паттерн (например, мажорное арпеджио, 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 }}}
}
>>