@c M-x texinfo-all-menus-update
@c to automagically fill in these menus before saving changes
+@c FIXME: singular vs. plural: Beams/Beam
+
@macro refbugs
@strong{BUGS}
data-structures (music, context, graphical objects) permeates the entire
design of the program.
+@c FIXME: Note entry vs Music entry at top level menu is confusing.
@c . {Note entry}
@node Note entry
@section Note entry
* Notes::
* Pitches::
* Rests::
-* Skips::
+* Skips::
* Durations::
* Ties::
* Tuplets::
@subsection Rests
@cindex Rests
-Rests are entered like notes, with note name `@code{r}'. The grob is
-@code{Rest}. Whole bar rests centered in the bar are specified using
-@code{R}, see @ref{Multi measure rests}.
+A rest is entered like a note, with note name `@code{r}':
+
+@lilypond[singleline,verbatim]
+r1 r2 r4 r8
+@end lilypond
+
+The grob is @code{Rest}. Whole bar rests centered in the bar are
+specified using @code{R}, see @ref{Multi measure rests}.
@c . {Skips}
+@c FIXME: naming.
@node Skips
@subsection Skips
@cindex Skip
+@cindex Invisible rest
+@cindex Space note
+An invisible rest, or skip, can be entered like a note with note name
+`@code{s}':
+
+@lilypond[singleline,verbatim]
+a2 s4 a4 s1 a4
+@end lilypond
+
+Actually, this is a shorthand for the @code{\skip} command, and it is
+only available in Note mode and Chord mode.
+
+@c FIXME: in lyrics mode, we have " " and _
+
+In Lyrics mode, you can use `@code{" "}' and `@code{_}':
+@lilypond[singleline,verbatim]
+<
+ \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di }
+ \notes\relative c'' { a2 a4 a a2 a4 a }
+>
+@end lilypond
+
+The unabbreviated `@code{\skip} @var{duration}' also works outside of
+note mode:
+
+@lilypond[singleline,verbatim]
+\score {
+ \context Staff <
+ { \time 4/8 \skip 2 \time 4/4 }
+ \notes\relative c'' { a2 a1 }
+ >
+}
+@end lilypond
-@example
- \skip @var{duration}
- s@var{duration}
-@end example
-@cindex @code{\skip}
-Skips the amount of time specified by @var{duration}. If no other music
-is played, a gap will be left for the skipped time without any notes
-printed. The shorthand is only available in Note and Chord mode.
@c . {Durations}
@node Durations
@lilypond[singleline,verbatim]
\include "paper23.ly"
\score {
- \notes { c'2 e'4 f' | g'1 }
- \paper { \translator { \EasyNotation } }
+ \notes { c'2 e'4 f' | g'1 }
+ \paper { \translator { \EasyNotation } }
}
@end lilypond
-
+@c FIXME: Note entry vs Music entry at top level menu is confusing.
@c . {Music entry}
@node Music entry
@section Music entry
--- /dev/null
+\header {
+
+texidoc= "Using make-music, you can add various stuff to notes. Here
+is an example how to add staccato dots. Note: for this simple case
+one would not use scm constructs. See separate-staccato.ly first."
+
+}
+
+#(define (make-script x)
+ (let ((m (ly-make-music "Articulation_req")))
+ ;;(ly-set-mus-property m 'articulation-type 'staccato)
+ ;; urg
+ (ly-set-mus-property m 'articulation-type x)
+ (ly-set-mus-property m 'script x)
+ m))
+
+#(define (add-script m x)
+ (if (equal? (ly-music-name m) "Request_chord")
+ (ly-set-mus-property m 'elements
+ (cons (make-script x)
+ (ly-get-mus-property m 'elements)))
+
+ (let ((es (ly-get-mus-property m 'elements))
+ (e (ly-get-mus-property m 'element)) )
+ (map (lambda (y) (add-script y x)) es)
+ (if (music? e)
+ (add-script e x))))
+ m)
+
+#(define (add-staccato m)
+ (add-script m "staccato"))
+
+\score {
+ \notes\relative c'' {
+ a b \apply #add-staccato { c c }
+ a b \apply #add-staccato { c c }
+ }
+}
+
--- /dev/null
+\header {
+
+texidoc="You can enter notes and articulations separately, and merge
+them into one thread. Here is an example to add repeated staccato dots."
+
+}
+
+staccatos = \notes { s4-. s-. s-. s s }
+
+music = \notes\relative c' { c4 d e f g a b c d e }
+
+\score {
+ \context Thread=one <
+ \music
+ \repeat unfold 2 \staccatos
+ >
+}
<p><font size="-1">
This page was built from @PACKAGE_NAME@-@PACKAGE_VERSION@ by<br>
</font>
-<address><font size="-1">@GCOS@ <<a href="mailto:%s">@MAIL_ADDRESS@</a>>,
+<address><font size="-1">@GCOS@ <<a href="mailto:@MAILADDRESS@">@MAILADDRESS@</a>>,
@LOCALTIME@.</font></address>"""
def remove_self_ref (s):
self_url = abspath (os.getcwd () + '/' + f)
#sys.stderr.write ('url0: %s\n' % self_url)
- self_url = re.sub ('.*' + string.lower (package_name) + '[^/]*/',
+
+ # self_url = re.sub ('.*?' + string.lower (package_name) + '[^/]*/',
+ # '', self_url)
+ # URG - this only works when source tree is unpacked in `src/' dir
+ # For some reason, .*? still eats away
+ # /home/fred/usr/src/lilypond-1.5.14/Documentation/user/out-www/lilypond/
+ # instead of just
+ #
+ # /home/fred/usr/src/lilypond-1.5.14/
+ #
+ # Tutorial.html
+ self_url = re.sub ('.*?src/' + string.lower (package_name) + '[^/]*/',
'', self_url)
+
#sys.stderr.write ('url1: %s\n' % self_url)
#urg, ugly lily-specific toplevel index hack
s = re.sub ('@WEBMASTER@', webmaster, s)
s = re.sub ('@GCOS@', gcos, s)
s = re.sub ('@LOCALTIME@', localtime, s)
- s = re.sub ('@MAIL_ADDRESS@', mail_address, s)
+ s = re.sub ('@MAILADDRESS@', mail_address, s)
m = re.match ('.*?<!-- (@[a-zA-Z0-9_-]*@)=(.*?) -->', s, re.DOTALL)
while m: