FYI the example you give:
timing = { \compressMMRests s1*28 \bar "|." }
PartA = { R1*4 R1*24 }
PartAComplete = << \timing \PartA >>
\score{ \new Staff \new Voice \PartAComplete }
Does not compress the rests in any 2.19 version. There would seem to
be a number of reasons. The << >> brackets make parallel music, so
the compress command does not refer to PartA. The compress command
requires that the music to be compressed is a single music
expression, so if there is more than one rest, they must be enclosed
in braces { }.
PartA = { \compressMMRests { R1*4 R1*24 } }
PartAComplete = { \PartA }
\score{ \new Staff \new Voice \PartAComplete }
Works in both 2.19 and 2.21 versions, although I know it's not what
you want exactly.
--
Phil Holmes
----- Original Message ----- From: "Paul Scott" <address@hidden>
To: "Lilypond-User Mailing List" <address@hidden>
Sent: Saturday, May 02, 2020 9:02 PM
Subject: 2.21.1 change of behavior of \compressMMRests?
The following MWE is a variation of the first code example in 2.21.1
Notation manual 1,2,2 Full Measure
Rests:
% Rest measures contracted to single measure
\score{
\new Staff \new Voice
<< { \compressMMRests } { R1*4 R1*24 R1*4 b'2^"Tutti" b'4 a'4} >>
}
mmxtest.ly:13:25: error: syntax error, unexpected '}', expecting
\header
I believe this used to work In 2.19.xx.
How can I accomplish the following, i.e. have the structure common
to all parts in a single definition as I have been doing for many
years with Lily?
For example:
\version 2.20.0"
timing = { \compressMMRests s1*28 \bar "|." }
PartA = { R1*4 R1*24 }
PartAComplete = << \timing \PartA >>
\score{ \new Staff \new Voice \PartAComplete }