Правильный способ скрыть/подавить символ SustainOff?

В Lilypond я гравирую фрагмент фортепианной музыки, используя Ped. символ, но не использует соответствующий * для прекращения вращения педалей.

Вот кусок кода, который дает правильный визуальный результат:

\version "2.18.2"
upper = \relative c'' {
  \clef treble
  a4 b c d
}
lower = \relative c {
  \clef bass
  a2 c
}
pedal = {
 s4\sustainOn s s s\sustainOff 
}
\score {
  \new PianoStaff <<
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
    \new Dynamics = "pedal" \with {
      pedalSustainStrings = #'("Ped." "*Ped." "")
    } \pedal
  >>
  \layout { }
}

Пед но нет *

Обратите внимание на #'("Ped." "*Ped." "")бит.

Но это также выдает предупреждение:

warning: SustainPedal has empty extent and non-empty stencil.

У меня есть 7 страниц музыки с педалированием каждые 2-3 такта. Я не собираюсь делать это до конца, когда каждый раз появляется столько предупреждений. Есть ли лучший/более правильный способ подавления этого символа?

Почему нельзя просто игнорировать предупреждения? В конце концов, это всего лишь предупреждения : они указывают на то, что что-то может быть не так, но здесь это явно ваше намерение. Если вы боитесь, что вас завалят предупреждениями, запустите Lilypond с помощью команды switch -l ERROR.
Горстка не будет проблемой, но десятки затруднят прокрутку в окне журнала Фрескобальди, что немного усложнит мне жизнь во время работы над этой частью. Кроме того, Lilypond достаточно близок к программированию, поэтому у меня проявляется отвращение к предупреждениям компилятора. :)

Ответы (3)

Если вы хотите, чтобы отпустить педаль сустейна, но не отображать ее символ:
Вместо ввода \sustainOffиспользуйте \hide\sustainOff.

NB: вам не понадобится это \with ...заявление

РЕДАКТИРОВАТЬ
Использование \omit, вероятно, лучше, чем \hide.

Это связано с тем, что \omitвообще ничего не печатается, тогда как \hideэффективно печатается невидимый символ и, следовательно, вносятся изменения интервалов, которые были бы необходимы, как если бы символ был видимым.

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

pedalSustainStrings = #'("Ped." "*Ped." #f)

То есть a #fдля «false» вместо строки нулевой длины "". Кажется, это все еще дает визуальный результат, который я хочу, без каких-либо предупреждений. Я понятия не имею, является ли это ожидаемым поведением от Lilypond.

Это не ответ на ОП, а ответ на комментарий, который слишком велик для размещения там.

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

% ly:expect-warning only works to suppress once.  This function allows
% you to specify the number of times a warning appears.
#(define ly:expect-warning-times (lambda args
   (for-each (lambda _ (apply ly:expect-warning (cdr args)))
         (iota (car args)))))

#(ly:expect-warning-times 33 "omitting tuplet bracket")