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" <waterho...@ultrasw.com>
To: "Lilypond-User Mailing List" <lilypond-user@gnu.org>
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 }