[prev in list] [next in list] [prev in thread] [next in thread]
List: lilypond-devel
Subject: PATCH: Doc: Clarify \relative inside \repeat issue.
From: Mark Polesky <markpolesky () yahoo ! com>
Date: 2010-04-28 6:39:27
Message-ID: 167138.20962.qm () web83405 ! mail ! sp1 ! yahoo ! com
[Download RAW message or body]
It struck me that there are more options for dealing with
the "\relative inside \repeat" issue. Can someone look over
this to make sure I'm not doing anything sacrililygious?
- Mark
["0001-Doc-Clarify-relative-inside-repeat-issue.patch" (text/x-diff)]
From c3fad3258734b7632d9e7cde7bb414ca07d593fe Mon Sep 17 00:00:00 2001
From: Mark Polesky <markpolesky@yahoo.com>
Date: Tue, 27 Apr 2010 23:33:04 -0700
Subject: [PATCH] Doc: Clarify \relative inside \repeat issue.
---
Documentation/notation/repeats.itely | 58 ++++++++++++++++++++++++++++++++++
Documentation/usage/running.itely | 14 ++------
2 files changed, 62 insertions(+), 10 deletions(-)
diff --git a/Documentation/notation/repeats.itely b/Documentation/notation/repeats.itely
index 9e2b53e..c2f0d2b 100644
--- a/Documentation/notation/repeats.itely
+++ b/Documentation/notation/repeats.itely
@@ -59,6 +59,7 @@ Repeat signs can also be controlled manually.
* Normal repeats::
* Manual repeat marks::
* Written-out repeats::
+* Long repeats and relative mode::
@end menu
@cindex volta
@@ -395,6 +396,63 @@ Internals Reference:
@rinternals{UnfoldedRepeatedMusic}.
+@node Long repeats and relative mode
+@unnumberedsubsubsec Long repeats and relative mode
+
+
+If a @code{\relative} command is placed inside a @code{\repeat}
+command, two staves result, the second offset from the first,
+because the @code{\repeat} command generates two @code{\relative}
+blocks, which each implicitly create @code{Staff} and @code{Voice}
+blocks.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 {
+ \relative c' { c2 d }
+}
+@end lilypond
+
+The simplest solution is to move the @code{\relative} command to
+the outside of the @code{\repeat} command:
+
+@lilypond[quote,verbatim]
+\relative c' {
+ \repeat unfold 2 { c2 d }
+}
+@end lilypond
+
+However, this only works if the entire section to be repeated uses
+only one @code{\relative} command. If you prefer using multiple
+@code{\relative} blocks sequentially (which can make complex
+scores easier to manage), you'll need to instantiate the
+@code{Staff} context explicitly (with the @code{\context} command)
+to accommodate the @code{\repeat} command. Note that
+@samp{\new Staff} will not work here, since that would create a
+new staff with each repeat:
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \context Staff {
+ \relative c' { c2 d }
+ \relative d' { d2 c }
+}
+@end lilypond
+
+Notational elements that span from one @code{\relative} block to
+another require explicitly instantiated voices. And as before,
+@code{\context} is needed instead of @code{\new} to ensure the
+continuity of the spanned elements:
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \context Staff {
+ \context Voice \relative c' { c2 d( }
+ \context Voice \relative e' { e2) c~ }
+}
+@end lilypond
+
+Many situations will also require these contexts to be
+named, especially when polyphony is involved.
+
+
@node Short repeats
@subsection Short repeats
diff --git a/Documentation/usage/running.itely b/Documentation/usage/running.itely
index 93c0c3a..071e1b0 100644
--- a/Documentation/usage/running.itely
+++ b/Documentation/usage/running.itely
@@ -680,25 +680,19 @@ correct code to color all note heads red is
@end lilypond
As a second example, if a @code{\relative} command is placed inside
-a @code{\repeat} command two staves result, the second offset from
+a @code{\repeat} command, two staves result, the second offset from
the first, because the @code{\repeat} command generates two
@code{\relative} blocks, which each implicitly create @code{Staff}
and @code{Voice} blocks.
@lilypond[quote,verbatim]
\repeat unfold 2 {
- \relative c' { c d e f }
+ \relative c' { c2 d }
}
@end lilypond
-The correct way is to reverse the @code{\repeat} and
-@code{\relative} commands, like this:
-
-@lilypond[quote,verbatim]
-\relative c' {
- \repeat unfold 2 { c d e f }
-}
-@end lilypond
+There are several ways of addressing this, depending on the
+situation. See @ruser{Long repeats and relative mode}.
@node Apparent error in ../ly/init.ly
--
1.6.3.3
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic