Как создать паузу такой же длины, как музыкальный блок?

Я набираю музыку (набор стихов и ответов), некоторые из которых сопровождаются, а некоторые нет, и я использую некоторые пользовательские функции Scheme для параллельного сбора фрагментов (и автоматической вставки общих элементов).

Для куплетов без аккомпанемента я хотел написать функцию Scheme, которая генерировала бы паузу той же длины, что и блок вокальной музыки (чтобы позже все было выровнено в аккомпанементе), но я не могу понять, как это сделать. . Я пытаюсь make-music 'RestEvent, но ничто из того, что я пробовал, не будет работать для параметра продолжительности:

  • музыкальный блок не имеет durationсвойства получать
  • пример в документации (просто передача заметки непосредственно в конструктор) не работает для блока (вероятно, это то же самое, что и выше)
  • ly:music-lengthвозвращает момент , и я не могу найти способ преобразовать момент в продолжительность

Есть ли какой-нибудь управляемый способ создать паузу той же длины, что и общий ly:music?объект?

Помогает ли приведенный здесь пример --- lilypond.org/doc/v2.18/Documentation/notation/… ---?

Ответы (1)

Попробуйте функции Scheme mmrest-of-lengthили, что более вероятно, skip-of-lengthкоторые принимают музыку в качестве аргумента и возвращают музыкальное выражение, которое представляет собой многотактовую паузу или простой пропуск соответственно.

Вы можете написать что-то вроде $(skip-of-length myMusic)музыкального выражения, предполагая, что myMusicэто музыкальная переменная с нужной длиной.

Это то, что мне было нужно! Он спрятан в документах «каденции», и я не устанавливаю каденцию, но это та же ситуация (выбросить часть, пока происходит что-то еще).