\version "2.19.0" #(define (Time_signature_markup_engraver context) (let ((time-sig '()) (time-sig-copy #f) (previous-was-grace #f)) ; to avoid printing twice at grace notes (make-engraver (acknowledgers ((time-signature-interface engraver grob source-engraver) (let* ((current-moment (ly:context-current-moment context)) (grace-nom (ly:moment-grace-numerator current-moment))) (if (not (eqv? 0 grace-nom)) (begin (set! previous-was-grace #t) (set! time-sig grob)) (if (and (eqv? 0 grace-nom) previous-was-grace) (begin (set! previous-was-grace #f) (set! time-sig '())) (set! time-sig grob)))))) ((process-acknowledged engraver) (and (not (null? time-sig)) (let* ((time-sig-copy (ly:engraver-make-grob engraver 'TextScript time-sig)) (copy-prop (lambda (prop) (ly:grob-set-property! time-sig-copy prop (ly:grob-property time-sig prop)))) (prop-list '(fraction style font-size))) (map copy-prop prop-list) (ly:grob-set-property! time-sig-copy 'stencil ly:time-signature::print) (ly:grob-set-parent! time-sig-copy Y time-sig) (ly:grob-set-parent! time-sig-copy X time-sig) (set! time-sig '()) ))) ((stop-translation-timestep engraver) (set! time-sig-copy #f))))) #(define (left-align-at-end grob) (and (and (ly:item? grob) (equal? (ly:item-break-dir grob) LEFT)) (ly:grob-set-property! grob 'self-alignment-X 1))) timeSignatures = { \tempo 4 = 80 \time 4/4 s1 \time 3/8 s4. \time 3/4 s2. \time 4/4 s1 \time 2/4 s2 } \score { \layout { \context { \Score \override MetronomeMark.break-align-symbols = #'(clef time-signature) \remove "Bar_number_engraver" } \context { \Staff \override MultiMeasureRest.spacing-pair = #'(clef . staff-bar) \remove "Time_signature_engraver" } \context { \Score } } << \new Dynamics \with { \consists "Axis_group_engraver" \consists "Time_signature_engraver" \override TimeSignature.stencil = ##f \override TimeSignature.font-size = #8 \numericTimeSignature \consists \Time_signature_markup_engraver \override TextScript.before-line-breaking = #left-align-at-end } { \timeSignatures } \new StaffGroup \with {} << \new Staff \with { \consists "Bar_number_engraver" } \relative c' { \textLengthOn \time 4/4 c4 ( _\markup \column { "← Objects failed to appear" "below the time signature" "when using \\textLengthOn" } \textLengthOff d4 e4 f4 ) \time 3/8 a'4 ( g8 ) \time 3/4 R2. \time 4/4 c1 \time 2/4 a8 ^\markup \column { "← Time signature appear twice" "when one staff has a grace note" "as the first note in a bar" } g8 f8 e8 } \new Staff \relative c' { \time 4/4 R1 \time 3/8 R4. \clef bass \time 3/4 a,2. \> \startTextSpan \break \time 4/4 c2 _\markup \column { " " "↑" "Harpin stops below the time signature" } ^\markup \column { "TextSpanner stops below the time signature" "↓" } e2 \! \stopTextSpan \clef treble \time 2/4 \acciaccatura f'8 a8 g8 f8 e8 } \new Staff \relative c' { \clef bass \time 4/4 R1 \time 3/8 R4. \time 3/4 R2. \time 4/4 c1 \time 2/4 a8 g8 f8 e8 } >> >> }