Не могу закончить свое крещендо, если бы я этого хотел с Лилипонд

Я пытаюсь воспроизвести отсканированную партитуру с помощью Lilypond. Оригинал (по крайней мере, интересующая часть) выглядит так:

Как видите, крещендо начинается в начале 3-го такта и заканчивается в конце 4-го такта.

Мой код Lilypond следующий (я помещаю крещендо в верхний нотоносец):

%%%%%%%%%%
%% VERSION
%%%%%%%%%%

\version "2.20.0.3"


%%%%%%%%%%%
%% PIANO UP
%%%%%%%%%%%

pianoUpper = \relative c' {
    \clef "treble"
    \time 3/4
    \key c \major

    f4-. \p a-. c-. |
    e,-. g-. c-. |
    a( \< b c) |
    <b d>2.\fermata \! \bar "||"

    \time 6/8

    <e, g>8.( \p <f a>16 <e g>8 <c e>4.) | 
}


%%%%%%%%%%%%
%% PIANO LOW
%%%%%%%%%%%%

pianoLower = \relative c {
    \clef "bass"
    \time 3/4
    \key c \major

    <f a c>2. |
    <g c> |
    <d a' c> |
    <g b>\fermata \bar "||" 

    \time 6/8

    <c, e g>4 <c e g>8 <c e g>4. |
}


%%%%%%%%
%% SCORE
%%%%%%%%

\score {
    <<
        \new PianoStaff <<
            \new Staff = "upper" \pianoUpper
            \new Staff = "lower" \pianoLower
        >>
    >>
}

И это дает следующий результат:

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

Что огорчает, потому что мне бы очень хотелось, чтобы крещендо заканчивалось сразу после аккорда 4-го такта. Я пробовал размещать \!в разных местах, но без удовлетворительного результата.

Есть ли у кого-нибудь идея, как сделать так, чтобы крещендо заканчивалось в конце 4-го такта, как в моей исходной отсканированной партитуре?

Ответы (2)

Шпилька, оканчивающаяся на первой доле такта, останавливается на такте. Чтобы изменить это, переопределите свойство to-barlineна false.

...

f4-. \p a-. c-. |
e,-. g-. c-. |
\once \override Hairpin.to-barline = ##f
a( \< b c) |
<b d>2.\fermata \! \bar "||"

...

См. здесь: http://lsr.di.unimi.it/LSR/Item?id=595

Если вы хотите, чтобы шпилька шла дальше, используйте масштабированную длительность и паузы-спейсеры, чтобы обмануть шпильку так, чтобы она заканчивалась на невидимой ноте на третьей доле такта.

...

f4-. \p a-. c-. |
e,-. g-. c-. |
\once \override Hairpin.to-barline = ##f
a( \< b c) |
<b d>2.*1/3 \fermata s4 s \! \bar "||"

...

См. здесь о продолжительности масштабирования: http://lilypond.org/doc/v2.20/Documentation/notation/writing-rhythms#scaling-durations

Вы также можете позволить шпильке закончиться на пустом аккорде, используя <>\!. Таким образом, вам не нужно вставлять проставки.
@JasperHabicht как так? Я новичок в Lilypond, поэтому пытался найти соответствующую документацию, но безуспешно. И между вашим предложением и решением TiagoPC, какое из них на самом деле лучше / более рекомендуется / лучшая практика?
@JambonSama Я добавил свой комментарий как новый ответ. На самом деле, нет «лучшего» ответа на ваш подход. Возможно, я бы не обязательно масштабировал продолжительность, потому что я думаю, что это довольно хакерское решение и может иметь некоторые негативные последствия для размещения заметок, но я думаю, что решение с переопределением свойства шпильки на самом деле является одним из предполагаемых способов решения вашей to-barlineпроблемы .

Вы можете ввести пустой аккорд с <>и позволить шпильке закончиться на нем. Таким образом, вам не нужно вводить \overrideили масштабировать продолжительность.

\new Voice {
  \time 3/4
  \relative c' { a'4(\< b c) | <b d>2.\fermata <>\! \bar "||" }
}

Приведенный выше код должен отображаться как:

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

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