1\version "2.21.0"
2
3\header {
4  texidoc = "Test for merging rests in different voices."
5}
6
7\paper {
8  ragged-right = ##f
9}
10
11voiceA = \relative {
12  % no rest merges
13  c''4 r c c |
14
15  % does not combine differently written rests
16  c4 r r2 |
17
18  % all rests merged
19  r2^"Up" r4 r8 r16 r32 r64 r128 r |
20
21  % multi-measure rests are combined
22  R1^"Upper text" |
23
24  % compressed multi-measure rests are combined
25  R1*3 |
26
27  % multi-measure rests longer than semi-breve
28  % are merged at the correct vertical position
29  \time 4/2
30  R\breve
31
32  % combining between beams, slurs
33  \time 4/4
34  c8[( r c]) r c16[( r c] r c[ r c]) r |
35
36  % combining in tuplets
37  \tuplet 3/2 { c8 r r } r4 \tuplet 3/2 { c4 r r } |
38
39  % accents on rest, dynamics still aligned
40  r4->\f\> r-. r r\! |
41
42  % Non-multimeasure whole rests merged at the correct vertical position
43  \time 8/4
44  r1 r1
45
46  % Ensure when suspending merging rests are in their usual positions
47  \time 4/4
48  \set Staff.suspendRestMerging = ##t
49  r4 r8
50  \set Staff.suspendRestMerging = ##f
51  r8 r2 |
52
53  % Don't merge pitched rests
54  c4\rest d\rest e\rest f\rest |
55
56  % Merged dotted rests get only one dot, don't kill dots if merging rests is
57  % suspended
58  r4. r8
59  \set Staff.suspendRestMerging = ##t
60  r4. r8 |
61  \set Staff.suspendRestMerging = ##f
62  r4 r4 r4 r4
63}
64
65voiceB = \relative {
66  r2 c'4 r |
67  c4 r r r |
68  r2_"Down" r4 r8 r16 r32 r64 r128 r |
69  R1_"Lower text" |
70  R1*3 |
71  R\breve |
72  c8[( r c]) r c16[( r c] r c[ r c]) r |
73  \tuplet 3/2 { c8 r r } r4 \tuplet 3/2 { c4 r r } |
74  r4-> r-. r r |
75  r1 r1 |
76  r4 r8 r r2 |
77  r4 r r r |
78  r4. r8 r4. r8 |
79  r4. r8 r4. r8 |
80}
81
82voiceC = \relative {
83  s1*2 |
84  r2 r4 r8 r16 r32 r64 r128 r | % Combines rests from more than 2 voices
85  s1*13
86  r4. r8 r4. r8 |
87  r4. r8 r4. r8 |
88}
89
90\score {
91  \new Staff \with {
92      \consists "Merge_rests_engraver"
93  } <<
94    \compressEmptyMeasures
95    \new Voice { \voiceOne \voiceA }
96    \new Voice { \voiceTwo \voiceB }
97    \new Voice { \voiceThree \voiceC }
98  >>
99}
100