[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Automatization
From: |
Valentin Petzel |
Subject: |
Re: Automatization |
Date: |
Wed, 20 Jul 2022 11:19:35 +0200 |
Hello Vincent,
first of all you can achieve the same thing maybe slightly more transparently
like this, which also allows for modification of the stencil:
#(define (white-under grob) (grob-interpret-markup grob
(markup #:vcenter #:whiteout #:pad-x 1 (ly:grob-property grob 'text))))
inlineMMRNa = {
\once \override MultiMeasureRest.layer = #-2
\once \override MultiMeasureRestNumber.layer = #-1
\once \override MultiMeasureRestNumber.Y-offset = #0
\once \override MultiMeasureRestNumber.stencil = #white-under
}
inlineMMRNb = {
\once \override MultiMeasureRest.layer = #-2
\once \override MultiMeasureRestNumber.layer = #-1
\once \override MultiMeasureRestNumber.Y-offset = #ly:self-alignment-
interface::y-aligned-on-self
\once \override MultiMeasureRestNumber.self-alignment-Y = #CENTER
\once \override MultiMeasureRestNumber.whiteout = #10
}
<<
\new Staff
{
\compressEmptyMeasures
\inlineMMRNa R1*12
% overriding the MMNR stencil:
\inlineMMRNa \once\override MultiMeasureRestNumber.stencil =
#(grob-transformer 'stencil (lambda (grob orig) (circle-stencil orig 0.2
0.3)))
R1*12
% other way round
\once\override MultiMeasureRestNumber.stencil =
#(grob-transformer 'stencil (lambda (grob orig) (circle-stencil orig 0.2
0.3)))
\inlineMMRNa R1*12
}
\new Staff
{
\compressEmptyMeasures \inlineMMRNb R1*12
% overriding the MMNR stencil:
\inlineMMRNb \once\override MultiMeasureRestNumber.stencil =
#(grob-transformer 'stencil (lambda (grob orig) (circle-stencil orig 0.2
0.3)))
R1*12
% other way round
\once\override MultiMeasureRestNumber.stencil =
#(grob-transformer 'stencil (lambda (grob orig) (circle-stencil orig 0.2
0.3)))
\inlineMMRNb R1*12
}
>>
To get this to work for all MultiMeasureRests, simply replace the \once by a
\temporary and use \revert to get back to the original behaviour, like this:
inlineMMRNon = {
\once \override MultiMeasureRest.layer = #-2
\once \override MultiMeasureRestNumber.layer = #-1
\once \override MultiMeasureRestNumber.Y-offset = #ly:self-alignment-
interface::y-aligned-on-self
\once \override MultiMeasureRestNumber.self-alignment-Y = #CENTER
\once \override MultiMeasureRestNumber.whiteout = #10
}
inlineMMRNoff = {
\revert MultiMeasureRest.layer
\revert MultiMeasureRestNumber.layer
\revert MultiMeasureRestNumber.Y-offset
\revert MultiMeasureRestNumber.self-alignment-Y
\revert MultiMeasureRestNumber.whiteout
}
{
\compressEmptyMeasures
R1*12
\inlineMMRNon
R1*12
R1*12
\inlineMMRNoff
R1*12
\once\inlineMMRNon
R1*12
R1*12
}
Cheers,
Valentin
Am Mittwoch, 20. Juli 2022, 09:34:42 CEST schrieb Vincent Gay:
> Hello everyone,
>
> I use the inlineMMRN function below whenever I think of it to display
> the number of bars of rests IN the staff. I find that it gains in
> readability when the scores are a bit heavy with textual indications.
>
>
> The problem is in the "every time I think of it". Is there by any chance
> a way to automate this without having to call the function every time?
>
> Thanks in advance and have a nice day
>
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> #(define (white-under grob) (grob-interpret-markup grob
> (markup #:vcenter #:whiteout #:pad-x 1 (ly:grob-property grob 'text))))
>
> inlineMMRN = {
> \once \override MultiMeasureRest.layer = #-2
> \once \override MultiMeasureRestNumber.layer = #-1
> \once \override MultiMeasureRestNumber.Y-offset = #0
> \once \override MultiMeasureRestNumber.stencil = #white-under
> }
>
>
> { \compressEmptyMeasures \inlineMMRN R1*12 }
signature.asc
Description: This is a digitally signed message part.