Hi Jan-Peter,
On Fri, Dec 23, 2016 at 5:52 AM, Jan-Peter Voigt <[email protected]> wrote:
> Hello list,
>
> in my current scores I have to deal with a lot of MultiMeasureRests. I am
> facing the following layout-problem:
>
> If there is one line filled with (for example) a three measure long mm-rest
> (and maybe one bar with a few cue-notes) the measure-symbol consisting of
> two or the rectangles is spreading quite widely:
>
> %%%%%
> \paper {
> ragged-last = ##f
> }
> { \compressFullBarRests R1*3 }
> %%%%%
>
> (mmrest1.png)
>
> But I would like to space it like in mmrest2.png, the default spacing.
>
> I looked for an override, but didn't find one suitable.
> Anybody knows how to deal with it?
>
The default is actually to allow the components of the church rest to
expand to fill the available space within the measure. The symbols
making up the rest are assigned a padding value proportional to the
visual size of the measure.
I think what you're after is some means to limit this expansion. I've
attached a patch which creates a property ("no-stretch") which keeps
internal padding at its minimum value -- 1 staff space. Note also the
test file. I haven't tested it beyond what you see there.
It might be nice to allow a maximum padding. (I find 1.0 for padding
a little close.) That would be easily done.
Sorry that this is a patch you need to apply. Putting this in Scheme
would require extensive recoding.
HTH,
David
From 2db13e3ab86920886574585bf9130a0bebdfd096 Mon Sep 17 00:00:00 2001
From: David Nalesnik <[email protected]>
Date: Fri, 23 Dec 2016 10:39:12 -0600
Subject: [PATCH] Implement no-stretch for MultiMeasureRest
Ordinarily, church rests expand to fill the measure. This patch
implements the property "no-stretch," a boolean which when #t prevents
the default behavior.
---
lily/multi-measure-rest.cc | 15 +++++++++++++--
scm/define-grob-interfaces.scm | 2 +-
scm/define-grob-properties.scm | 2 ++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc
index 7f2a720..478192a 100644
--- a/lily/multi-measure-rest.cc
+++ b/lily/multi-measure-rest.cc
@@ -321,7 +321,8 @@ Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measure_cou
Real outer_padding_factor = 1.5;
Real inner_padding = (space - symbols_width)
/ (2 * outer_padding_factor + (symbol_count - 1));
- if (inner_padding < 0)
+ bool no_stretch = to_boolean (me->get_property("no-stretch"));
+ if (inner_padding < 0 || no_stretch)
inner_padding = 1.0;
Stencil mol;
@@ -329,7 +330,17 @@ Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measure_cou
mol.add_at_edge (X_AXIS, LEFT, *unsmob<Stencil> (scm_car (s)),
inner_padding);
mol.align_to (X_AXIS, LEFT);
- mol.translate_axis (outer_padding_factor * inner_padding, X_AXIS);
+
+ if (no_stretch)
+ {
+ mol.translate_axis (max (outer_padding_factor * inner_padding,
+ (space - symbols_width - (inner_padding * (symbol_count - 1))) / 2),
+ X_AXIS);
+ }
+ else
+ {
+ mol.translate_axis (outer_padding_factor * inner_padding, X_AXIS);
+ }
return mol;
}
diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm
index d5f2311..5ee78a3 100644
--- a/scm/define-grob-interfaces.scm
+++ b/scm/define-grob-interfaces.scm
@@ -209,7 +209,7 @@ accidentals)."
(ly:add-interface
'multi-measure-interface
"Multi measure rest, and the text or number that is printed over it."
- '(bound-padding))
+ '(bound-padding no-stretch))
(ly:add-interface
'note-name-interface
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index 0635898..48da9da 100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -667,6 +667,8 @@ syllable following an extender).")
object.")
(no-stem-extend ,boolean? "If set, notes with ledger lines do not
get stems extending to the middle staff line.")
+ (no-stretch ,boolean? "If set, church rests will not spread to fill
+available space.")
(non-break-align-symbols ,list? "A list of symbols that determine
which NON-break-aligned interfaces to align this to.")
(non-default ,boolean? "Set for manually specified clefs and keys.")
--
2.1.4
\version "2.19.54"
\paper {
ragged-last = ##f
}
\markup \bold \huge "DEFAULT"
{
\compressFullBarRests R1*3
\break
R1*9
\break
R1*12
\break
R1*3
R1*9
R1*12
\break
\repeat unfold 8 { R1*3 }
}
\markup \bold \huge "NO STRETCH"
\markup \concat { "Church rests do not expand with increased measure size, " \italic "but rests drawn as lines are" }
{
\override Staff.MultiMeasureRest.no-stretch = ##t
\compressFullBarRests R1*3
\break
R1*9
\break
R1*12
\break
R1*3
R1*9
R1*12
\break
\repeat unfold 8 { R1*3 }
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user