+2005-05-26 Graham Percival <gperlist@shaw.ca>
+
+ * Documentation/user/lilypond.tely, advanced-notation.itely,
+ basic-notation.itely, instrument-notation.itely, global.itely,
+ introduction.itely, tutorial.itely: rearranging, editing,
+ clean-up.
+
2005-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
* lily/pfb.cc (LY_DEFINE): progress indication for opening ttf and
* Contemporary notation::
* Educational use::
* Automatic notation::
-* Other::
@end menu
@end lilypond
@noindent
+See @ref{Overview of text markup commands} for a list of all
+commands.
+
@code{\markup} is primarily used for @internalsref{TextScript}s,
but it can also be used anywhere text is called in lilypond
@seealso
+This manual: @ref{Overview of text markup commands}.
+
Program reference: @internalsref{TextScript}.
Init files: @file{scm/@/new@/-markup@/.scm}.
@menu
* Polymetric notation::
+* Time administration::
* Clusters::
* Special fermatas::
* Special noteheads::
aligned vertically, but bar lines distort the regular spacing.
+@node Time administration
+@subsection Time administration
+
+@cindex Time administration
+
+Time is administered by the @internalsref{Time_signature_engraver},
+which usually lives in the @internalsref{Score} context. The
+bookkeeping deals with the following variables
+
+@table @code
+@item currentBarNumber
+The measure number.
+
+@item measureLength
+The length of the measures in the current time signature. For a 4/4
+time this is@tie{}1, and for 6/8 it is 3/4.
+
+@item measurePosition
+The point within the measure where we currently are. This quantity
+is reset to@tie{}0 whenever it exceeds @code{measureLength}. When that
+happens, @code{currentBarNumber} is incremented.
+
+@item timing
+If set to true, the above variables are updated for every time
+step. When set to false, the engraver stays in the current measure
+indefinitely.
+@end table
+
+Timing can be changed by setting any of these variables explicitly.
+In the next example, the 4/4 time signature is printed, but
+@code{measureLength} is set to 5/4. After a while, the measure is
+shortened by 1/8, by setting @code{measurePosition} to 7/8 at 2/4
+in the measure, so the next bar line will fall at 2/4 + 3/8. The
+3/8 arises because 5/4 normally has 10/8, but we have manually
+set the measure position to be 7/8 and 10/8 - 7/8 = 3/8.
+
+@lilypond[quote,raggedright,verbatim,relative,fragment]
+\set Score.measureLength = #(ly:make-moment 5 4)
+c1 c4
+c1 c4
+c4 c4
+\set Score.measurePosition = #(ly:make-moment 7 8)
+b8 b b
+c4 c1
+@end lilypond
+
+
@node Clusters
@subsection Clusters
-@node Other
-@section Other
-
-FIXME:
-It's the dreaded ``what on earth should I do with this stuff'' section! Yay!
-
-@menu
-* Time administration::
-@end menu
-
-
-@node Time administration
-@subsection Time administration
-
-Time is administered by the @internalsref{Time_signature_engraver},
-which usually lives in the @internalsref{Score} context.
-The bookkeeping deals with the following variables
-
-@table @code
-@item currentBarNumber
-The measure number.
-
-@item measureLength
-The length of the measures in the current time signature. For a 4/4
-time this is@tie{}1, and for 6/8 it is 3/4.
-
-@item measurePosition
-The point within the measure where we currently are. This quantity
-is reset to@tie{}0 whenever it exceeds @code{measureLength}. When that
-happens, @code{currentBarNumber} is incremented.
-
-@item timing
-If set to true, the above variables are updated for every time
-step. When set to false, the engraver stays in the current measure
-indefinitely.
-@end table
-
-Timing can be changed by setting any of these variables explicitly.
-In the next example, the 4/4 time signature is printed, but
-@code{measureLength} is set to 5/4. After a while, the measure is
-shortened by 1/8, by setting @code{measurePosition} to 7/8 at 2/4
-in the measure, so the next bar line will fall at 2/4 + 3/8. The
-3/8 arises because 5/4 normally has 10/8, but we have manually
-set the measure position to be 7/8 and 10/8 - 7/8 = 3/8.
-
-@lilypond[quote,raggedright,verbatim,relative,fragment]
-\set Score.measureLength = #(ly:make-moment 5 4)
-c1 c4
-c1 c4
-c4 c4
-\set Score.measurePosition = #(ly:make-moment 7 8)
-b8 b b
-c4 c1
-@end lilypond
-
-
-
@lilypond[quote,verbatim,fragment,linewidth=8.0\cm]
\unfoldRepeats {
\repeat tremolo 8 {c'32 e' }
- \repeat percent 4 { c''8 d'' }
+ \repeat percent 2 { c''8 d'' }
\repeat volta 2 {c'4 d' e' f'}
\alternative {
{ g' a' a' g' }
@menu
* Paper output::
* Sound output::
-* LilyPond files::
@end menu
the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
instrument is used.
-
-
-@node LilyPond files
-@section LilyPond files
-
-@menu
-* File structure::
-* Including LilyPond files::
-@end menu
-
-
-@node File structure
-@subsection File structure
-
-The major part of this manual is concerned with entering various
-forms of music in LilyPond. However, many music expressions are not
-valid input on their own, for example, a @code{.ly} file containing
-only a note
-@example
-c'4
-@end example
-
-@noindent
-will result in a parsing error. Instead, music should be inside other
-expressions, which may be put in a file by themselves. Such
-expressions are called toplevel expressions. This section enumerates
-them all.
-
-A @code{.ly} file contains any number of toplevel expressions, where a
-toplevel expression is one of the following
-
-@itemize @bullet
-@item
-An output definition, such as @code{\paper}, @code{\midi}, and
-@code{\layout}. Such a definition at the toplevel changes the default
-settings for the block entered.
-
-@item
-A @code{\header} block. This sets the global header block. This
-is the block containing the definitions for book-wide settings, like
-composer, title, etc.
-
-@item
-An @code{\addquote} statement. See @ref{Quoting other voices}
-for more information.
-
-@item
-A @code{\score} block. This score will be collected with other
-toplevel scores, and combined as a single @code{\book}.
-
-This behavior can be changed by setting the variable
-@code{toplevel-score-handler} at toplevel. The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-@item
-A @code{\book} block logically combines multiple movements
-(i.e., multiple @code{\score} blocks) in one document. A number of
-@code{\scores} creates a single output file, where all movement are
-concatenated.
-
-This behavior can be changed by setting the variable
-@code{toplevel-book-handler} at toplevel. The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-@item
-A compound music expression, such as
-@example
-@{ c'4 d' e'2 @}
-@end example
-
-This will add the piece in a @code{\score} and format it in a
-single book together with all other toplevel @code{\score}s and music
-expressions.
-
-This behavior can be changed by setting the variable
-@code{toplevel-music-handler} at toplevel. The default handler is
-defined in the init file @file{scm/@/lily@/.scm}.
-
-@item
-A markup text, a verse for example
-@example
-\markup @{
- 2. The first line verse two.
-@}
-@end example
-
-Markup texts are rendered above, between or below the scores or music
-expressions, wherever they appear.
-
-@item
-An indentifier, such as
-@example
-foo = @{ c4 d e d @}
-@end example
-
-This can be used later on in the file by entering @code{\foo}. The
-name of an identifier should have alphabetic characters only; no
-numbers, underscores or dashes.
-
-@end itemize
-
-The following example shows three things that may be entered at
-toplevel
-
-@example
-\layout @{
- % movements are non-justified by default
- raggedright = ##t
-@}
-
-\header @{
- title = "Do-re-mi"
-@}
-
-@{ c'4 d' e2 @}
-@end example
-
-
-At any point in a file, any of the following lexical instructions can
-be entered:
-
-@itemize @bullet
-@item @code{\version}
-@item @code{\include}
-@item @code{\renameinput}
-@end itemize
-
-
-@node Including LilyPond files
-@subsection Including LilyPond files
-
-@cindex @code{\include}
-@cindex including files
-
-A large project may be split up into separate files. To refer to another
-file, use
-
-@example
-\include "otherfile.ly"
-@end example
-
-For example, you may write separate files for each instrument part and
-create a ``full score'' file which brings together the individual
-instrument files.
-
next one. Such a line is called an extender line, and it is entered as
`@code{__}'.
-@ignore
-FIXME: check that this compiles and displays correctly. I don't want
-to commit this part blindly.
-
In tighly engraved music, hyphens can be removed. In some languages
(e.g. German and Hungarian), hyphens should not disappear, since
spelling depends on hyphenation. For that purpose, hyphens can be
forced to remain by overriding @code{minimum-length} of
the @code{LyricHyphen} grob.
-(code from 2.2)
+@lilypond[quote,verbatim,raggedright]
\score {
-<< \notes \new Staff \relative c'' { \time 1/4 c16[ c c c]
-\time 1/4
-c16[ c c c]
-\time 1/4
-c16[ c c c]
-
-}
- \lyrics \new Lyrics \with {
- % Otherwise lyrics are so far apart that hyphens don't disappear
- \override SeparationItem #'padding = #0.0
- }{ bla -- bla -- bla -- bla --
- bla -- bla -- bla -- bla --
-
- \override LyricHyphen #'minimum-length = #0.7
- \override LyricHyphen #'spacing-procedure =
- #Hyphen_spanner::set_spacing_rods
-
- bla -- bla -- bla -- bla
- }>>
- \paper {
- indent = 0.0 \cm
- linewidth = 3.4 \cm
-
- \context {
- \StaffContext \remove "Time_signature_engraver"
- }
-
- }
-
-}
-@end ignore
-
+<<
+ \new Staff \relative c'' {
+ \time 1/4 c16 c c c c16 c c c c16 c c c
+ } % closes notes
+ \lyricmode { \new Lyrics
+ \with {
+ \override SeparationItem #'padding = #0.0
+ % Otherwise lyrics are so far apart that hyphens don't disappear
+ } % closes with
+ {
+ An -- ti -- cons -- ti --
+ tu -- tion -- nel -- le --
+ \override LyricHyphen #'minimum-length = #0.7
+ \override LyricHyphen #'spacing-procedure =
+ #Hyphen_spanner::set_spacing_rods
+ men -- taire -- ment. ouf~!
+ } % closes lyrics
+ } %closes lyricmode
+>>
+\layout {
+ indent = 0.0 \cm
+ linewidth = 3.4 \cm
+ \context {
+ \Staff \remove "Time_signature_engraver"
+ } % closes context
+} % closes layout
+} % closes score
+@end lilypond
@seealso
head objects are used to produce their symbol is changed during the music
fragment.
-@c FIXME: this example has errors:
-@c programming error: Grob `NoteHead' has no interface for property `text'
-@c Continuing; crossing fingers
@lilypond[quote,raggedright]
#(define (mc-squared grob orig current)
(let ((interfaces (ly:grob-property grob 'interfaces))
@menu
-* Invoking lilypond::
-* Error messages::
-* Updating files with convert-ly::
-* Reporting bugs::
-* Editor support::
+* Invoking lilypond::
+* Error messages::
+* Updating files with convert-ly::
+* Reporting bugs::
+* Editor support::
+* File structure::
+* Including LilyPond files::
@end menu
@node Invoking lilypond
@ignore
Copy and paste from CVS, last updated
-Feb 14, 2005
+May 26, 2005
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lily-bugs/bugs/convert-ly.txt?rev=HEAD&content-type=text/plain
@end ignore
@verbatim
-There are a few things that the convert-ly cannot handle. Here's a
-list of limitations that the community has complained about.
+There are a few things that the convert-ly cannot handle. Here's a list of limitations
+that the community has complained about.
-This bug report structure has been chosen because convert-ly has a
-structure that doesn't allow to smoothly implement all needed changes.
-Thus this is just a wishlist, placed here for reference.
+This bug report structure has been chosen because convert-ly has a structure that doesn't
+allow to smoothly implement all needed changes. Thus this is just a wishlist, placed
+here for reference.
1.6->2.0:
Doesn't always convert figured bass correctly, specifically things like {< >}. Mats' comment on working around this:
on it, I first replaced all occurencies of '{<' to some dummy like '{#'
and similarly I replaced '>}' with '&}'. After the conversion, I could
then change back from '{ #' to '{ <' and from '& }' to '> }'.
- Doesn't convert all text markup correctly. Only very simple cases are fixed.
+ Doesn't convert all text markup correctly. In the old markup syntax,
+ it was possible to group a number of markup commands together within parentheses, e.g.
+ -#'((bold italic) "string")
+ This will incorrectly be converted into
+ -\markup{{\bold italic} "string"}
+ instead of the correct
+ -\markup{\bold \italic "string"}
2.0->2.2:
Doesn't handle \partcombine
Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple stanzas.
+2.0->2.4:
+ \magnify isn't changed to \fontsize.
+ - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
+ remove-tag isn't changed.
+ - \applymusic #(remove-tag '. . .) => \keepWithTag #'. . .
+ firstpagenumber isn't changed.
+ - firstpagenumber no => printfirstpagenumber = ##f
+ Line breaks in header strings aren't converted.
+ - \\\\ as line break in \header strings => \markup \center-align <
+ "First Line" "Second Line" >
+ Crescendo and decrescendo terminators aren't converted.
+ - \rced => \!
+ - \rc => \!
2.2->2.4:
\turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly converted.
2.4.2->2.5.9
\markup{ \center-align <{ ... }> } should be converted to:
\markup{ \center-align {\line { ... }} }
but now, \line is missing.
+
@end verbatim
It seems that placement of accidentals is broken. In the
following example, the accidental touches the note head.
-Using Mac OSX 10.3.5, fink package lilypond-unstable
+Using Mac OSX 10.3.7, fink package lilypond-devel
\version "2.5.18"
\relative c''@{
of a symbol in the graphical output. See @ref{Point and click}.
+@node File structure
+@section File structure
+
+The major part of this manual is concerned with entering various
+forms of music in LilyPond. However, many music expressions are not
+valid input on their own, for example, a @code{.ly} file containing
+only a note
+@example
+c'4
+@end example
+
+@noindent
+will result in a parsing error. Instead, music should be inside other
+expressions, which may be put in a file by themselves. Such
+expressions are called toplevel expressions. This section enumerates
+them all.
+
+A @code{.ly} file contains any number of toplevel expressions, where a
+toplevel expression is one of the following
+
+@itemize @bullet
+@item
+An output definition, such as @code{\paper}, @code{\midi}, and
+@code{\layout}. Such a definition at the toplevel changes the default
+settings for the block entered.
+
+@item
+A @code{\header} block. This sets the global header block. This
+is the block containing the definitions for book-wide settings, like
+composer, title, etc.
+
+@item
+An @code{\addquote} statement. See @ref{Quoting other voices}
+for more information.
+
+@item
+A @code{\score} block. This score will be collected with other
+toplevel scores, and combined as a single @code{\book}.
+
+This behavior can be changed by setting the variable
+@code{toplevel-score-handler} at toplevel. The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+@item
+A @code{\book} block logically combines multiple movements
+(i.e., multiple @code{\score} blocks) in one document. A number of
+@code{\scores} creates a single output file, where all movement are
+concatenated.
+
+This behavior can be changed by setting the variable
+@code{toplevel-book-handler} at toplevel. The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+@item
+A compound music expression, such as
+@example
+@{ c'4 d' e'2 @}
+@end example
+
+This will add the piece in a @code{\score} and format it in a
+single book together with all other toplevel @code{\score}s and music
+expressions.
+
+This behavior can be changed by setting the variable
+@code{toplevel-music-handler} at toplevel. The default handler is
+defined in the init file @file{scm/@/lily@/.scm}.
+
+@item
+A markup text, a verse for example
+@example
+\markup @{
+ 2. The first line verse two.
+@}
+@end example
+
+Markup texts are rendered above, between or below the scores or music
+expressions, wherever they appear.
+
+@item
+An indentifier, such as
+@example
+foo = @{ c4 d e d @}
+@end example
+
+This can be used later on in the file by entering @code{\foo}. The
+name of an identifier should have alphabetic characters only; no
+numbers, underscores or dashes.
+
+@end itemize
+
+The following example shows three things that may be entered at
+toplevel
+
+@example
+\layout @{
+ % movements are non-justified by default
+ raggedright = ##t
+@}
+
+\header @{
+ title = "Do-re-mi"
+@}
+
+@{ c'4 d' e2 @}
+@end example
+
+
+At any point in a file, any of the following lexical instructions can
+be entered:
+
+@itemize @bullet
+@item @code{\version}
+@item @code{\include}
+@item @code{\renameinput}
+@end itemize
+
+
+@node Including LilyPond files
+@section Including LilyPond files
+
+@cindex @code{\include}
+@cindex including files
+
+A large project may be split up into separate files. To refer to another
+file, use
+
+@example
+\include "otherfile.ly"
+@end example
+
+For example, you may write separate files for each instrument part and
+create a ``full score'' file which brings together the individual
+instrument files.
+
@afourpaper
@end iftex
+@dircategory GNU music project
+@direntry
+
@ignore
+(I think)
+Current version of the manual: 2.5.18
+Please update this whenever you run convert-ly on the docs.
+
+%%%%%
+
Distributions will want to install lilypond.info in postinstall, doing:
install-info --info-dir=/usr/share/info out/lilypond.info
-@end ignore
-
-@dircategory GNU music project
-@direntry
-@ignore
+%%%%%
* Prepend GNU for dir, must be unique.
@code{joe}.@footnote{There are macro files for VIM addicts, and there
is a @code{LilyPond-mode} for Emacs addicts. If they have not been
installed already, refer to
-@c FIXME lousy reference.
the file @file{INSTALL.txt}.} In your text editor, enter the following
input and save the file as @file{test.ly}