[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Center align Bar numbers to first note in first measures on new line
From: |
Jean Abou Samra |
Subject: |
Re: Center align Bar numbers to first note in first measures on new lines |
Date: |
Tue, 20 Apr 2021 21:26:15 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 |
Le 20/04/2021 à
14:22, F M a écrit :
I also found these two snippets in the repository, perhaps
they could be adapted to centering bar numbers over note
columns. Thank you for your time and interest.
Hello,
Something like this, then?
Best,
Jean
\version "2.23.3"
#(define (group-extent grobs refpoint axis)
(reduce interval-union
empty-interval
(map
(lambda (grob)
(ly:grob-extent grob refpoint axis))
grobs)))
#(define fake-musical-when-first
(grob-transformer 'after-line-breaking
(lambda (bar-number dummy)
(let* ((sys (ly:grob-system bar-number))
(columns (ly:grob-object sys 'columns))
(break-alignment (ly:grob-parent bar-number X))
(bar-number-column (ly:grob-parent break-alignment
X))
(first-column (ly:grob-array-ref columns 0))
(first-musical-column (ly:grob-array-ref columns 1))
(is-first (eq? bar-number-column first-column)))
(if is-first
(let* ((refpoint (ly:grob-common-refpoint bar-number
first-musical-column X))
(musical-elements (ly:grob-object
first-musical-column 'elements))
(element-list (ly:grob-array->list
musical-elements))
(note-columns (filter (lambda (g)
(grob::has-interface g
'note-column-interface))
element-list)))
(ly:grob-translate-axis!
bar-number
(- (interval-center
(group-extent note-columns refpoint X))
(interval-center (ly:grob-extent bar-number
refpoint X)))
X)))))))
\layout {
\context {
\Score
\override BarNumber.after-line-breaking =
#fake-musical-when-first
\override BarNumber.break-visibility = ##(#f #t #t)
\override BarNumber.outside-staff-priority = 1000
}
}
<<
\set Score.currentBarNumber = 50000
{
c'1
\break
<c''' d'''>4_"Marcato" e' f' g'
a' b' c' d'
\break
<g' a' b' c' d' e'> g' g' g'
}
{
c'1
1
1
1
}
>>