LilyPond: группировка разделенных лучей для сложных тактовых размеров

Я пытаюсь написать барабанную партитуру 12/8 в Lilypond с большим количеством фразировок из 32-х нот, и группировка лучей по умолчанию выглядит немного уродливо:

группировка лучей по умолчанию 32nd note( Вот приведенный выше пример в LilyBin: http://lilybin.com/w0s4nh/2 )

Я бы хотел, чтобы он был разделен на группы восьмых нот, например:

введите описание изображения здесь

Как видно из ссылки на LilyBin, которую я вставил выше (строка 36), я попытался изменить параметр baseMoment в соответствии с документацией , но не имеет значения, что я установил, передача всегда остается неизменной.

Есть ли что-нибудь еще, что я должен делать здесь?

Э-э, просто любопытно, а разве вы не заставили его сиять так, как вы хотите, на второй картинке?
Ха-ха-ха, на самом деле я копирую лист ударных, чтобы он уместился на меньшем количестве страниц, используя lilypond, и исходное сияние кажется мне намного красивее. Второе изображение взято из оригинального PDF-файла, который я копирую =).
Ага. Спасибо. Вот что я получаю за то, что не уделяю должного внимания. :)

Ответы (1)

Вот хорошее начало.

\layout {
  \context {
    \DrumStaff
      drumStyleTable = #(alist->hash-table drum-table)
      subdivideBeams = ##t
      baseMoment = #(ly:make-moment 1/8)
      beatStructure = #'(3 3 3 3)
  }
}
top = \drummode {
  cymc8 \repeat unfold 5 { cymr }
  cymr16 \repeat unfold 8 { sn32 }
  \repeat unfold 6 { toml }
  \repeat unfold 8 { tomfl }
}
bot = \drummode {
  bd4 bd16 bd
  sn bd sn bd sn bd
  bd8 \repeat unfold 5 { hhp }
}
\score {
  \new DrumStaff <<
    \new DrumVoice {
      \voiceOne \time 12/8 \top
    }
    \new DrumVoice {
      \voiceTwo \time 12/8 \bot
    }
  >>
  \layout {}
}

введите описание изображения здесь

В конечном итоге это приводит к разделению вашего кода на более управляемые части: музыка — это просто музыка, макет — это просто макет, а партитура — это просто партитура. (Ну, по большей части). Таким образом, когда вам нужно внести изменения, вы можете гораздо быстрее определить, где это изменение должно произойти.

В таком случае вам может понадобиться временно смешать музыку и макет только для одного тембра:

\layout {
  \context {
    \DrumStaff
      drumStyleTable = #(alist->hash-table drum-table)
  }
}
top = \drummode {
  \set Voice.subdivideBeams = ##t
  \set Voice.baseMoment = #(ly:make-moment 1/8)
  \set Voice.beatStructure = #'(3 3 3 3)
  cymc8 \repeat unfold 5 { cymr }
  cymr16 \repeat unfold 8 { sn32 }
  \repeat unfold 6 { toml }
  \repeat unfold 8 { tomfl }
}
bot = \drummode {
  bd4 bd16 bd
  sn bd sn bd sn bd
  bd8 \repeat unfold 5 { hhp }
}
\score {
  \new DrumStaff <<
    \new DrumVoice {
      \voiceOne \time 12/8 \top
    }
    \new DrumVoice {
      \voiceTwo \time 12/8 \bot
    }
  >>
  \layout {}
}

введите описание изображения здесь

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

Спасибо! Всегда приятно иметь разделение интересов. Я вижу, что мне еще многое предстоит узнать о различных контекстах в LilyPond, это не первый раз, когда я запутался, пытаясь изменить определения Score, когда они на самом деле должны быть определениями Staff или Voice. Я обновил пример LilyBin ( lilybin.com/w0s4nh/3 ) для дальнейшего использования. Спасибо еще раз! знак равно