В 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 такта. Я не собираюсь делать это до конца, когда каждый раз появляется столько предупреждений. Есть ли лучший/более правильный способ подавления этого символа?
Если вы хотите, чтобы отпустить педаль сустейна, но не отображать ее символ:
Вместо ввода \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")
Рамильес
-l ERROR
.Джей Коминек