Отображение тактового размера в виде одного числа над нотоносцем

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

Пример

Я знаю, что этого можно добиться в LilyPond, скрыв обычные тактовые размеры и отобразив числа вручную. Можно ли сделать это, изменив вместо этого гравер тактового размера?

Ответы (1)

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

\version "2.18.2"

\score {
  <<
  \new Dynamics {
    \time 2/4 s2
    \time 3/4 s2.
    \time 4/4 s1
  }
  \new Staff \relative c' {
    \key es \major
    \clef treble
    << { g'8[-3^\markup { \italic "sempre legato" } a b] s } \\ 
       { es,[-3\pp f g <b, d>] } >>
    << { es[-2 f-1 g a <g-1 b-4> <as-2 c-5>] } \\
       { c,[-4 d es f] s s } >>
    << { s es[-2 f g-1 a b c d]-5 } \\
       { <b,-5 d>[ c d es f g-3 a b] } >>
  } 
  >>

  \layout {
    \context {
      \Score
      \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/32) 
    }
    \context {
      \Dynamics
      \consists "Time_signature_engraver"
      \override TimeSignature.style = #'single-digit
      \override TimeSignature.break-align-symbol = ##f
      \override TimeSignature.X-offset = #ly:self-alignment-interface::x-aligned-on-self
      \override TimeSignature.self-alignment-X = #CENTER
      \override TimeSignature.after-line-breaking = #shift-right-at-line-begin
    }
    \context {
       \Staff
       \remove "Time_signature_engraver"
    }
  }
}

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

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


Если вы хотите изменить только один контекст Dynamics, вы также можете использовать

[...]

  \new Dynamics \with {
    \consists "Time_signature_engraver"
    \override TimeSignature.style = #'single-digit
    \override TimeSignature.break-align-symbol = ##f
    \override TimeSignature.X-offset = #ly:self-alignment-interface::x-aligned-on-self
    \override TimeSignature.self-alignment-X = #CENTER
    \override TimeSignature.after-line-breaking = #shift-right-at-line-begin
  } {
    \time 2/4 s2
    \time 3/4 s2.
    \time 4/4 s1
  }

[...]

И удалить материал из \layout.

Это здорово, но настройки в \layout { \context { \Dynamics } } влияют на каждый контекст Dynamics в этом блоке результатов. Что нужно сделать, чтобы получить этот эффект, если есть другой контекст, не связанный с динамикой, например, содержащий динамику или содержащий педалирование пианино?
Ты прав. Вы можете напрямую поместить направления в соответствующий контекст Dynamics с помощью \with. Смотрите мою правку.