-@c Note: -*-texinfo-*-
+q@c Note: -*-texinfo-*-
@c
@c A menu is needed before every deeper *section nesting of @node's; run
@c M-x texinfo-all-menus-update
* Vocal music::
* Tablatures::
* Chord names::
-* Writing parts::
+* Orchestral music::
* Ancient notation ::
* Contemporary notation::
* Tuning output::
@section Note entry
@cindex Note entry
+This chapter describes all the different types of notation supported
+by LilyPond. It is intended as a reference for users that are already
+somewhat familiar with using LilyPond.
@menu
@cindex note names, Dutch
-A sharp is formed by adding @code{-is} to the end of a pitch
-name and a flat is formed by adding @code{-es}. Double sharps and
-double flats are obtained by adding @code{-isis} or @code{-eses}.
-
-These default names are the Dutch note names. In Dutch, @code{aes} is
-contracted to @code{as} in Dutch, but both forms are
-accepted. Similarly, both @code{es} and @code{ees} are accepted.
+A sharp is formed by adding @code{-is} to the end of a pitch name and
+a flat is formed by adding @code{-es}. Double sharps and double flats
+are obtained by adding @code{-isis} or @code{-eses}. These
+names are the Dutch note names. In Dutch, @code{aes} is contracted to
+@code{as} in Dutch, but both forms are accepted. Similarly, both
+@code{es} and @code{ees} are accepted.
There are predefined sets of note names for various other languages.
To use them, include the language specific init file. For
@end lilypond
-The verbose syntax for pitch specification is
+There is also a verbose syntax for pitch specification.
+@c TODO: junk this?
@cindex @code{\pitch}
@example
\pitch @var{scmpitch}
@refcommands
-Dots are normally moved up to avoid staff lines, except in polyphonic
-situations. The following commands may be used to force a particular
-direction manually.
-
-@refcommand dotsUp
-@refcommand dotsDown
-@refcommand dotsBoth
-
Notes can be hidden and unhidden with the following commands.
-@refcommand hideNotes
-@refcommand unHideNotes
+@cindex @code{\hideNotes }
+@code{\hideNotes},
+@cindex @code{\unHideNotes }
+@code{\unHideNotes}.
@seealso
+@noindent
@internalsref{NoteEvent}, @internalsref{NoteHead}
@node Chromatic alterations
@code{>>}. A chord may be followed by a duration, and a set of
articulations, just like simple notes.
-Additionally, fingerings and articulations may be attached to
-individual pitches of the chord:
-
-@lilypond[singleline,verbatim,relative 1]
- <<f-1 a-^ c-5>>
-@end lilypond
-
-
@node Rests
@subsection Rests
r1 r2 r4 r8
@end lilypond
-Whole bar rests, centered in middle of the bar, are specified using
-@code{R} (capital R); see @ref{Multi measure rests}. See also
-@seeinternals{Rest}.
+Whole bar rests, centered in middle of the bar,
+must be done with multi measure rests. They are discussed in
+@ref{Multi measure rests}.
-For some music, you may wish to explicitly specify the rest's vertical
-position. This can be achieved by entering a note with the @code{\rest}
-keyword appended. Rest collision testing will leave these rests alone.
+
+A rest's vertical position may be explicitly specified by entering a
+note with the @code{\rest} keyword appended. This makes manual
+formatting in polyphonic music easier. Rest collision testing will
+leave these rests alone.
@lilypond[singleline,verbatim]
a'4\rest d'4\rest
a2 s4 a4 \skip 1 a4
@end lilypond
- The @code{s} syntax is only available in Note mode and Chord
-mode. In other situations, you should use the @code{\skip} command,
-which will work outside of those two modes:
+The @code{s} syntax is only available in Note mode and Chord mode. In
+other situations, you should use the @code{\skip} command.
@lilypond[singleline,verbatim]
\score {
If the duration is omitted then it is set to the previously entered
-duration. Default for the first note is a quarter note. The duration
+duration. The default for the first note is a quarter note. The duration
can be followed by dots (`@code{.}') in order to obtain dotted note
lengths:
@cindex @code{.}
You can alter the length of duration by a fraction @var{N/M}
appending `@code{*}@var{N/M}' (or `@code{*}@var{N}' if @var{M=1}). This
will not affect the appearance of the notes or rests produced.
-
-@lilypond[fragment,verbatim]
- a'2*2 b'4*2 a'8*4 a'4*3/2 gis'4*3/2 a'4*3/2 a'4
+In the following example, the first three notes take up exactly two
+beats.
+@lilypond[fragment,relative 2,verbatim]
+ \time 2/4
+ a4*2/3 gis4*2/3 a4*2/3
+ a4
@end lilypond
-Durations can also be produced through GUILE extension mechanism.
+Durations can also be produced using the verbose syntax
+@code{\duration @var{Scheme object}}.
@lilypond[verbatim,fragment]
- c'\duration #(ly:make-duration 2 1)
+ c'\duration #(ly:make-duration 4 1)
@end lilypond
+
+@refcommands
+
+Dots are normally moved up to avoid staff lines, except in polyphonic
+situations. The following commands may be used to force a particular
+direction manually.
+
+@cindex @code{\dotsUp }
+@code{\dotsUp},
+@cindex @code{\dotsDown }
+@code{\dotsDown},
+@cindex @code{\dotsBoth}
+@code{\dotsBoth}.
+
+@seealso
+
+@internalsref{Dots}, @internalsref{DotColumn}.
+
@refbugs
-Dot placement for chords is not perfect. In some cases, dots overlap:
-@lilypond[]
- <<f, c'' d e f>>4.
-@end lilypond
+In dense chords, dots can overlap.
@node Stems
@subsection Stems
@refcommands
-@refcommand stemUp
-@refcommand stemDown
-@refcommand stemBoth
+@cindex @code{\stemUp}
+@code{\stemUp},
+@cindex @code{\stemDown}
+@code{\stemDown},
+@cindex @code{\stemBoth}
+@code{\stemBoth},
@node Ties
@lilypond[fragment, singleline,quote]
\time 3/4 c'2. c'2 ~ c'4
@end lilypond
-If you need to tie notes over bars, it may be easier to use automatic
+If you need to tie a lot of notes over bars, it may be easier to use automatic
note splitting (See @ref{Automatic note splitting}).
@refcommands
-@refcommand tieUp
-@refcommand tieDown
-@refcommand tieBoth
-@refcommand tieDotted
-@refcommand tieSolid
+@cindex @code{\tieUp }
+@code{\tieUp},
+@cindex @code{\tieDown }
+@code{\tieDown},
+@cindex @code{\tieBoth }
+@code{\tieBoth},
+@cindex @code{\tieDotted }
+@code{\tieDotted},
+@cindex @code{\tieSolid}
+@code{\tieSolid},
@seealso
tie-engraver into the @internalsref{Thread} context and turning on and
off ties per @internalsref{Thread}.
-Switching staves when a tie is active, will produce a horizontal tie
-on the first note.
+Switching staves when a tie is active, will not produce a slanted tie.
Formatting of ties is a difficult subject. The results are often not
-optimal results.
+optimal.
g'4 \times 2/3 {c'4 c' c'} d'4 d'4
@end lilypond
-The property @code{tupletSpannerDuration} specifies how long each bracket
-should last. With this, you can make lots of tuplets while typing
-@code{\times} only once, saving lots of typing.
+The property @code{tupletSpannerDuration} specifies how long each
+bracket should last. With this, you can make lots of tuplets while
+typing @code{\times} only once, saving lots of typing. In the next
+example, there are two triplets shown, while @code{\times} was only
+used once.
@lilypond[fragment, relative, singleline, verbatim]
\property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
@refcommands
-@refcommand tupletUp
-@refcommand tupletDown
-@refcommand tupletBoth
+@cindex @code{\tupletUp }
+@code{\tupletUp},
+@cindex @code{\tupletDown }
+@code{\tupletDown},
+@cindex @code{\tupletBoth}
+@code{\tupletBoth},
@seealso
-@seeinternals{TupletBracket}, @seeinternals{TimeScaledMusic}.
+@internalsref{TupletBracket}, @internalsref{TimeScaledMusic}.
@refbugs
large font size to make it more readable. To print with
magnification, you must create a DVI file (with @file{ly2dvi}) and
then enlarge it with something like @file{dvips -x 2000 file.dvi}.
-See @file{man dvips} for details. To print with a larger font, see
-@ref{Font Size}.
+See the @code{dvips} documentation for more details. To print with a
+larger font, see @ref{Font Size}.
@cindex Xdvi
When entering music it is easy to introduce errors. This section deals
with tricks and features of the input language that help when entering
-music, and find and correct mistakes.
-
-Some features of the input language ease entering music, for example
-the use of variables (for splitting up large pieces of music), and
-unfolded repeats for writing repetitive parts. They are described in
-other sections (see @ref{Repeats} and @ref{Assignments}), since they
-are not especially aimed at easing entry
+music, and find and correct mistakes. Some features of the input
+language ease entering music, but also have other applications. They
+are not described in this section.
It is also possible to use external programs, for example GUI
interfaces, or MIDI transcription programs, to enter or edit
* Relative octaves::
* Bar check::
* Skipping corrected music::
-* Automatic note splitting::
+* Automatic note splitting ::
@end menu
Octaves are specified by adding @code{'} and @code{,} to pitch names.
When you copy existing music, it is easy to accidentally put a pitch
in the wrong octave and hard to find such an error. The relative
-octave mode prevents these errors
+octave mode prevents these errors: a single error puts the rest of the
+piece off by one octave.
@cindex @code{\relative}
@example
@code{fisis} following a @code{ceses} will be put above the
@code{ceses})
-The octave changing marks @code{'} and @code{,} can be added to raise or
-lower the pitch by an extra octave. Upon entering relative mode, an
-absolute starting pitch must be specified that will act as the
+The octave changing marks @code{'} and @code{,} can be added to raise
+or lower the pitch by an extra octave. Upon entering relative mode,
+an absolute starting pitch must be specified that will act as the
predecessor of the first note of @var{musicexpr}.
-Entering music that changes octave frequently is easy in relative mode.
+Here is the relative mode shown in action:
@lilypond[fragment,singleline,verbatim,center]
\relative c'' {
b c d c b c bes a
}
@end lilypond
-And octave changing marks are used for intervals greater than a fourth.
+Octave changing marks are used for intervals greater than a fourth.
@lilypond[fragment,verbatim,center]
\relative c'' {
c g c f, c' a, e'' }
@end lilypond
If the preceding item is a chord, the first note of the chord is used
-to determine the first note of the next chord. However, other notes
-within the second chord are determined by looking at the immediately
-preceding note.
+to determine the first note of the next chord.
@lilypond[fragment,verbatim,center]
\relative c' {
@cindex @code{barCheckSynchronize}
@cindex @code{|}
-
-Whenever a bar check is encountered during interpretation, a warning
-message is issued if it does not fall at a measure boundary. This can
-help find errors in the input. Depending on the value of
+Bar checks help detect errors in the durations. A bar check is
+entered using the bar symbol, `@code{|}'. Whenever it is encountered
+during interpretation, it should fall on a measure boundary. If it
+does not, a warning is printed. Depending on the value of
@code{barCheckSynchronize}, the beginning of the measure will be
-relocated. A bar check is entered using the bar symbol, `@code{|}'.
+relocated.
+In the next example, the second bar check will signal an error.
@example
- \time 3/4 c2 e4 | g2.
+ \time 3/4 c2 e4 | g2 |
@end example
@node Staff notation
@section Staff notation
-This section describes with music notation that occurs on staff level,
+This section describes music notation that occurs on staff level,
such as keys, clefs and time signatures.
@cindex Staff notation
* Clef::
* Ottava brackets::
* Time signature::
+* Partial measures::
* Unmetered music::
* Bar lines::
@end menu
@node Key signature
@subsection Key signature
-@cindex Key
+@cindex Key signature
@cindex @code{\key}
@refbugs
-The ordering of a key restoration (alterations that change back to
-natural) is wrong when combined with a repeat barline.
+The ordering of a key cancellation is wrong when it is combined with
+repeat bar lines. The cancellation is also printed after a line break.
@seealso
a b }
@end lilypond
-Internally the @code{set-octavation} sets @code{ottavation} (eg. to
-@code{"8va"}) and @code{centralCPosition} properties.
+Internally the @code{set-octavation} function sets the properties
+@code{ottavation} (eg. to @code{"8va"}) and @code{centralCPosition}.
@seealso
\time 2/4 c'2 \time 3/4 c'2.
@end lilypond
-The actual symbol that is printed can be customized with the
-@code{style} property. Setting it to @code{#'()} uses fraction style
-for 4/4 and 2/2 time. There are many more options for its layout.
-See @inputfileref{input/test,time.ly} for more examples.
+The symbol that is printed can be customized with the @code{style}
+property. Setting it to @code{#'()} uses fraction style for 4/4 and
+2/2 time. There are many more options for its layout. See
+@inputfileref{input/test,time.ly} for more examples.
This command sets the property @code{timeSignatureFraction},
@code{beatLength} and @code{measureLength} in the @code{Timing}
context, which is normally aliased to @internalsref{Score}. The
-property @code{timeSignatureFraction} determines where bar lines
-should be inserted, and how automatic beams should be generated.
-Changing the value of @code{timeSignatureFraction} also causes the
-symbol to be printed.
+property @code{measureLength} determines where bar lines should be
+inserted, and how automatic beams should be generated. Changing the
+value of @code{timeSignatureFraction} also causes the symbol to be
+printed.
More options are available through the Scheme function
@code{set-time-signature}. In combination with the
Automatic beaming does not use measure grouping specified with
@code{set-time-signature}.
-
-@subsection Partial
+@node Partial measures
+@subsection Partial measures
@cindex Partial
@cindex anacrusis
-@cindex upbeat
@cindex partial measure
@cindex measure, partial
@cindex shorten measures
@cindex @code{\partial}
-Partial measures, for example in upbeats, are entered using the
+Partial measures, for example in upsteps, are entered using the
@code{\partial} command:
@lilypond[fragment,verbatim]
-\partial 16*5 c'16 c4 f16 a'2. ~ a'8. a'16 | g'1
+\partial 16*5 c'16 c4 | a'2. ~ a'8. a'16 | g'1
@end lilypond
The syntax for this command is
@refcommands
-@refcommand cadenzaOn
-@refcommand cadenzaOff
+@cindex @code{\cadenzaOn }
+@code{\cadenzaOn},
+@cindex @code{\cadenzaOff }
+@code{\cadenzaOff},
@node Bar lines
@subsection Bar lines
@cindex repeat bars
-Bar lines delimit measures, but are also used to indicate
-repeats. Line breaks may only happen on barlines.
+Bar lines delimit measures, but are also used to indicate repeats.
+Normally, tehy are inserted automatically. Line breaks may only
+happen on barlines.
@syntax
-Bar lines are inserted automatically. Special types
+ Special types
of barlines can be forced with the @code{\bar} command:
@lilypond[relative=1,fragment,verbatim]
c4 \bar "|:" c4
\bar "|."
@end lilypond
-In scores with many staves, the barlines are automatically placed at
-top level, and they are connected between different staves of a
-@internalsref{StaffGroup}:
+In scores with many staves, a @code{\bar} command in one staff is
+automatically applied to all staffs. The resulting bar lines are
+connected between different staves of a @internalsref{StaffGroup}:
+@c
@lilypond[fragment, verbatim]
< \context StaffGroup <
\context Staff = up { e'4 d'
@end lilypond
-The command @code{\bar @var{bartype}} is a short cut for
-doing @code{\property Score.whichBar = @var{bartype}}
-Whenever @code{whichBar} is set to a string, a bar line of that type is
-created. @code{whichBar} is usually set automatically: at the start of
-a measure it is set to @code{defaultBarType}. The contents of
-@code{repeatCommands} is used to override default measure bars.
+The command @code{\bar @var{bartype}} is a short cut for doing
+@code{\property Score.whichBar = @var{bartype}} Whenever
+@code{whichBar} is set to a string, a bar line of that type is
+created. At the start of a measure it is set to
+@code{defaultBarType}. The contents of @code{repeatCommands} are used
+to override default measure bars.
@code{whichBar} can also be set directly, using @code{\property} or
-@code{\bar }. These settings take precedence over the automatic
+@code{\bar}. These settings take precedence over the automatic
@code{whichBar} settings.
@cindex whichBar
@lilypond[verbatim,fragment]
\context Voice = VA \relative c'' {
- c4 < { f d e } \\ { b c2 } > c4 < g' \\ b, \\ f' \\ d' >
+ c4 < { f d e } \\ { b c2 } > c4 < g' \\ b, \\ f' \\ d >
}
@end lilypond
-The separator causes @internalsref{Voice} contexts to be instantiated,
-bearing the names @code{"1"}, @code{"2"}, etc. In each of these
-contexts, vertical direction of slurs, stems, etc. are set
+The separator causes @internalsref{Voice} contexts to be
+instantiated. They
+bear the names @code{"1"}, @code{"2"}, etc. In each of these
+contexts, vertical direction of slurs, stems, etc. is set
appropriately.
This can also be done by instantiating @internalsref{Voice} contexts
-@refcommand oneVoice
-@refcommand voiceOne
-@refcommand voiceTwo
-@refcommand voiceThree
-@refcommand voiceFour
+@cindex @code{\oneVoice }
+@code{\oneVoice},
+@cindex @code{\voiceOne }
+@code{\voiceOne},
+@cindex @code{\voiceTwo }
+@code{\voiceTwo},
+@cindex @code{\voiceThree }
+@code{\voiceThree},
+@cindex @code{\voiceFour }
+@code{\voiceFour},
The following commands specify in what chords of the current voice
should be shifted: the outer voice has @code{\shiftOff}, and the inner
voices have @code{\shiftOn}, @code{\shiftOnn}, etc.
-@refcommand shiftOn
-@refcommand shiftOnn
-@refcommand shiftOnnn
-@refcommand shiftOff
+@cindex @code{\shiftOn}
+@code{\shiftOn},
+@cindex @code{\shiftOnn}
+@code{\shiftOnn},
+@cindex @code{\shiftOnnn}
+@code{\shiftOnnn},
+@cindex @code{\shiftOff}
+@code{\shiftOff},
property of the @internalsref{NoteColumn} object and pitched rests can
be used to override typesetting decisions.
+When using @code{merge-differently-headed} with upstem 8th or shorter
+note, and a downstem half note, the 8th note gets the wrong offset.
+
@node Beaming
@section Beaming
@cindex @code{[}
In some cases it may be necessary to override the automatic beaming
-algorithm. For example, the auto beamer will not beam over rests or
-bar lines, If you want that, specify the begin and end point manually
-using @code{[} and @code{]}.
+algorithm. For example, the auto beamer will not put beams over rests
+or bar lines. Such beams are specified by manually: the begin and end
+point are marked with @code{[} and @code{]}.
@lilypond[fragment,relative,verbatim]
\context Staff {
The property @code{subdivideBeams} can be set in order to subdivide
-all 16th or shorter beams at beat positions. This accomplishes the
-same effect as twiddling with @code{stemLeftBeamCount} and
-@code{stemRightBeamCount}, but it take less typing.
+all 16th or shorter beams at beat positions, as defined by the
+@code{beatLength} property . This accomplishes the same effect as
+twiddling with @code{stemLeftBeamCount} and @code{stemRightBeamCount},
+but it take less typing.
@lilypond[relative=1,verbatim,noindent]
are defined in @file{scm/auto-beam.scm}.
The value of @code{autoBeamSettings} is changed using
-@code{\override} and unset using @code{\revert}:
+@code{\override} and restored with @code{\revert}:
@example
\property Voice.autoBeamSettings \override #'(@var{BE} @var{P} @var{Q} @var{N} @var{M}) = @var{dur}
\property Voice.autoBeamSettings \revert #'(@var{BE} @var{P} @var{Q} @var{N} @var{M})
@refcommands
-@refcommand autoBeamOff
-@refcommand autoBeamOn
+@cindex @code{\autoBeamOff }
+@code{\autoBeamOff},
+@cindex @code{\autoBeamOn }
+@code{\autoBeamOn},
@refbugs
@section Accidentals
@cindex Accidentals
-This section describes how to change the way that LilyPond automatically
-inserts accidentals before the running notes.
+This section describes how to change the way that accidentals are
+inserted automatically before the running notes.
@menu
defined in @file{ly/property-init.ly}.
@cindex @file{property-init.ly}
-The variables set properties in the ``Current'' context (see
+The variables set properties in the ``@code{Current}'' context (see
@ref{Context properties}). This means that the variables should
normally be added right after the creation of the context in which the
accidental typesetting described by the variable is to take
@cindex @code{\modernCautionaries}
This rule is similar to @code{\modernAccidentals}, but the
``extra'' accidentals (the ones not typeset by
- @code{\defaultAccidentals}) are typeset as cautionary accidentals
- (i.e. in reduced size):
+ @code{\defaultAccidentals}) are typeset as cautionary accidentals.
+ They are printed in reduced size or with parentheses.
@lilypond[singleline,fragment,verbatim]
\modernCautionaries
cis' c'' cis'2 | c'' c'
@item \forgetAccidentals
@cindex @code{\forgetAccidentals}
This is sort of the opposite of @code{\noResetKey}: Accidentals
- are not remembered at all - and hence all accidentals are
+ are not remembered at all---and hence all accidentals are
typeset relative to the key signature, regardless of what was
before in the music:
@lilypond[singleline,fragment,verbatim,relative]
@refcommands
-@refcommand defaultAccidentals
-@refcommand voiceAccidentals
-@refcommand modernAccidentals
-@refcommand modernCautionaries
-@refcommand modernVoiceAccidentals
-@refcommand modernVoiceCautionaries
-@refcommand pianoAccidentals
-@refcommand pianoCautionaries
-@refcommand noResetKey
-@refcommand forgetAccidentals
+@cindex @code{\defaultAccidentals }
+@code{\defaultAccidentals},
+@cindex @code{\voiceAccidentals }
+@code{\voiceAccidentals},
+@cindex @code{\modernAccidentals }
+@code{\modernAccidentals},
+@cindex @code{\modernCautionaries }
+@code{\modernCautionaries},
+@cindex @code{\modernVoiceAccidentals }
+@code{\modernVoiceAccidentals},
+@cindex @code{\modernVoiceCautionaries }
+@code{\modernVoiceCautionaries},
+@cindex @code{\pianoAccidentals }
+@code{\pianoAccidentals},
+@cindex @code{\pianoCautionaries }
+@code{\pianoCautionaries},
+@cindex @code{\noResetKey }
+@code{\noResetKey},
+@cindex @code{\forgetAccidentals }
+@code{\forgetAccidentals},
@seealso
@section Expressive marks
@menu
-* Slurs::
+* Slurs ::
* Phrasing slurs::
* Breath marks::
* Metronome marks::
@refcommands
-@refcommand slurUp
-@refcommand slurDown
-@refcommand slurBoth
-@refcommand slurDotted
-@refcommand slurSolid
+@cindex @code{\slurUp }
+@code{\slurUp},
+@cindex @code{\slurDown }
+@code{\slurDown},
+@cindex @code{\slurBoth }
+@code{\slurBoth},
+@cindex @code{\slurDotted }
+@code{\slurDotted},
+@cindex @code{\slurSolid }
+@code{\slurSolid},
@seealso
@refbugs
Producing nice slurs is a difficult problem, and LilyPond currently
-uses a simple, empiric method to produce slurs. In some cases, the
-results of this method are ugly.
+uses a simple, empiric method to produce slurs. In some cases, its
+results are ugly.
@cindex Adjusting slurs
@refcommands
-@refcommand phrasingSlurUp
-@refcommand phrasingSlurDown
-@refcommand phrasingSlurBoth
+@cindex @code{\phrasingSlurUp }
+@code{\phrasingSlurUp},
+@cindex @code{\phrasingSlurDown }
+@code{\phrasingSlurDown},
+@cindex @code{\phrasingSlurBoth }
+@code{\phrasingSlurBoth},
@seealso
Breath marks are entered using @code{\breathe}.
-@lilypond[fragment,relative]
+@lilypond[fragment,relative,verbatim]
c'4 \breathe d4
@end lilypond
The glyph of the breath mark can be tweaked by overriding the
-@code{text} property of the @code{BreathingSign} grob with the name of
+@code{text} property of the @code{BreathingSign} layout object with the name of
any glyph of @ref{The Feta font}. For example,
@lilypond[fragment,verbatim,relative]
c'4
@internalsref{HorizontalBracket}, @internalsref{NoteGroupingEvent},
@inputfileref{input/regression,note-group-bracket.ly}.
-@refbugs
-
-Bracket endings should be angled/slanted. (TODO)
-
-
-
-
@node Articulations
@section Articulations
Other symbols can be added using the syntax
-@var{note}@code{-\}@var{name}. Again, they can be forced up or down
-using @code{^} and @code{_}.
+@var{note}@code{-\}@var{name}, e.g. @code{c4-\fermata}. Again, they
+can be forced up or down using @code{^} and @code{_}.
@cindex accent
@cindex marcato
@refcommands
-@refcommand scriptUp
-@refcommand scriptDown
-@refcommand scriptBoth
+@cindex @code{\scriptUp }
+@code{\scriptUp},
+@cindex @code{\scriptDown }
+@code{\scriptDown},
+@cindex @code{\scriptBoth}
+@code{\scriptBoth},
@seealso
<<c'' c'''-3>>-(_\thumb <<d'' d'''-3>>-)_\thumb-]
@end lilypond
-Fingering for chords can be notated like this:
-
+Fingerings for chords can also be added to individual notes
+of the chord by adding them after the pitches
@lilypond[verbatim,singleline,fragment,relative=1]
<< c-1 e-2 g-3 b-5 >> 4
+@end lilypond
+
+Setting @code{fingerHorizontalDirection} will put the fingerings next
+to the note head.
+
+@lilypond[verbatim,singleline,fragment,relative=1]
\property Voice.fingerHorizontalDirection = #LEFT
- << c-1 es-3 g-5 >> 4
+ << c-1 es-2 g-4 bes-5 >> 4
\property Voice.fingerHorizontalDirection = #RIGHT
- << c-1 e-2 g-3 b-5 >>4
- \property Voice.fingerHorizontalDirection = #LEFT
- << c_1 e-2 g-3 b^5 >>4
+ << c-1 es-2 g-4 bes-5 >> 4
@end lilypond
@seealso
c4^"longtext" \fatText c4_"longlongtext" c4 }
@end lilypond
-It is possible to use @TeX{} commands in the strings, but this should be
-avoided because it makes it impossible for LilyPond to compute the
-exact length of the string, which may lead to collisions. Also, @TeX{}
-commands will not work with direct PostScript output.
+It is possible to use @TeX{} commands in the strings, but this should
+be avoided because the exact dimensions of the string can then no
+longer be computed.
@seealso
@node Grace notes
@subsection Grace notes
-
-
@cindex @code{\grace}
@cindex ornaments
@cindex grace notes
c4^"(0,0)" \grace c16_" "_"(1/4,-1/16)" c4^"(1/4,0)" \grace {
c16_"(2/4,-1/8)"-[ d16^"(2/4,-1/16)" ] } c4_" "_"(2/4,0)"
}
-\paper { linewidth = 8.\cm }
+\paper { linewidth = 12.\cm }
}
@end lilypond
-The placement of these grace notes is synchronized between different
-staves.
+The placement of grace notes is synchronized between different staves.
+In the following example, there are two sixteenth graces notes for
+every eighth grace note.
@lilypond[relative=2,verbatim,fragment]
< \context Staff = SA { e4 \grace { c16-[ d e f-] } e4 }
- \context Staff = SB { c'4 \grace { g8 b } c4 } >
+ \context Staff = SB { c'4 \grace { g8-[ b-] } c4 } >
@end lilypond
}
@end lilypond
+@noindent
+By adjusting the duration of the skip note (here it is a half-note),
+the space between the main-note and the grace is adjusted.
+
A @code{\grace} section has some default values, and LilyPond will
use those default values unless you specify otherwise inside the
@code{\grace} section. For example, if you specify \slurUp
@seealso
-@internalsref{GraceMusic}.
+@internalsref{GraceMusic},
@refbugs
Grace notes cannot be used in the smallest size (@file{paper11.ly}).
+A score that starts with an @code{\grace} section needs an explicit
+@code{\context Voice} declaration, otherwise the main note and grace
+note end up on different staffs.
+
Grace note synchronization can also lead to surprises. Staff notation,
such as key signatures, barlines, etc. are also synchronized. Take
-care when you mix staves with grace notes and staves without.
+care when you mix staves with grace notes and staves without, for example:
@lilypond[relative=2,verbatim,fragment]
< \context Staff = SA { e4 \bar "|:" \grace c16 d4 }
@end lilypond
Grace sections should only be used within sequential music
-expressions. Nesting, juxtaposing, or ending sequential music with a
-grace section is not supported, and might produce crashes or other
-errors.
+expressions. Nesting or juxtaposing grace sections is not supported,
+and might produce crashes or other errors.
-Overriding settings for grace music using @code{add-to-grace-init}
-cannot be done in a modular way.
+Overriding settings for grace music globally cannot be done in a
+modular way. A kludge (@code{add-to-grace-init}) is defined in
+@file{ly/grace-init.ly}.
@node Glissando
@refbugs
-Printing of an additional text (such as @emph{gliss.}) must be done
-manually.
+Additional texts (such as @emph{gliss.}) is not supported.
@node Dynamics
-A crescendo mark is started with @code{\cr} and terminated with
-@code{\endcr}, and decrescendi similarly with @code{\decr} and
-@code{\enddecr}. There are also shorthands for these marks. A
-crescendo can be started with @code{\<} and a decrescendo can be
-started with @code{\>}. Either one can be terminated with @code{\!}.
-Because these marks are bound to notes, if you must use spacer notes
-if multiple marks during one note are needed.
+A crescendo mark is started with @code{\<} and terminated with
+@code{\!}. A decrescendo is started with @code{\>} and also terminated
+with @code{\!}. Because these marks are bound to notes, if you must
+use spacer notes if multiple marks during one note are needed.
@lilypond[fragment,verbatim,center,quote]
c''-\< c''-\! d''-\decr e''-\rced
is an example how to do it:
@lilypond[fragment,relative=2,verbatim]
- c4 \cresc c4 \endcresc c4
+ c4 \cresc c4 c c c \endcresc c4
@end lilypond
-
@cindex crescendo
@cindex decrescendo
You can also supply your own texts:
@lilypond[fragment,relative,verbatim]
\context Voice {
- \property Voice.crescendoText = "cresc. poco"
+ \property Voice.crescendoText = \markup { \italic "cresc. poco" }
\property Voice.crescendoSpanner = #'dashed-line
a'2-\mf-\< a a a-\!
}
@refcommands
-@refcommand dynamicUp
-@refcommand dynamicDown
-@refcommand dynamicBoth
+@cindex @code{\dynamicUp }
+@code{\dynamicUp},
+@cindex @code{\dynamicDown }
+@code{\dynamicDown},
+@cindex @code{\dynamicBoth }
+@code{\dynamicBoth},
@cindex direction, of dynamics
@refbugs
- If you do a nested repeat like
+If you do a nested repeat like
@example
\repeat @dots{}
@refbugs
Timing information is not remembered at the start of an alternative,
-so you have to reset timing information after a repeat, e.g. using a
-bar-check (See @ref{Bar check}), setting @code{Score.measurePosition}
-or entering @code{\partial}. Similarly, slurs or ties are also not
-repeated.
+so after a repeat timing information must be reset by hand, for
+example by setting @code{Score.measurePosition} or entering
+@code{\partial}. Similarly, slurs or ties are also not repeated.
@node Manual repeat commands
repeats. Its value is a Scheme list of repeat commands, where each repeat
command can be
-@table @code
-@item 'start-repeat
- Print a |: bar line
-@item 'end-repeat
- Print a :| bar line
-@item (volta . @var{text})
- Print a volta bracket saying @var{text}. The text can be specified as
+@table @asis
+@item the symbol @code{start-repeat},
+ which prints a @code{|:} bar line.
+@item The symbol @code{end-repeat},
+ which prints a @code{:|} bar line
+@item The list @code{(volta @var{text})}
+ which prints a volta bracket saying @var{text}. The text can be specified as
a text string or as a markup text, see @ref{Text markup}. Do not
forget to change the font, as the default number font does not contain
alphabetic characters.
-@item (volta . #f)
- Stop a running volta bracket
+@item The list @code{(volta #f)}, which
+ stops a running volta bracket
@end table
@lilypond[verbatim, fragment]
@seealso
-Tremolo beams are @internalsref{Beam} objects. Single stem tremolos are
-@internalsref{StemTremolo}. @internalsref{TremoloEvent}.
+Tremolo beams are @internalsref{Beam} objects. Single stem tremolos
+are @internalsref{StemTremolo}. The music expression is
+@internalsref{TremoloEvent}.
@refbugs
-The single stem tremolo @emph{must} be entered without @code{@{} and
+The single stem tremolo must be entered without @code{@{} and
@code{@}}.
@node Tremolo subdivisions
@internalsref{DoublePercentRepeat}.
-@refbugs
-
-Single measure and double measure percent-repeats cannot be nested.
@node Rhythmic music
@section Rhythmic music
@cindex percussion
@cindex drums
-To typeset more than one piece of percussion to be played by the same
-musician one typically uses a multiline staff where each staff
-position refers to a specific piece of percussion.
+A percussion part for more than one instrument typically uses a
+multiline staff where each position in the staff refers to one piece
+of percussion.
@syntax
Percussion staves are typeset with help of a set of Scheme
functions. The system is based on the general MIDI drum-pitches.
-Include @file{ly/drumpitch-init.ly} to use drum pitches. This file
+Include @file{drumpitch-init.ly} to use drum pitches. This file
defines the pitches from the Scheme variable @code{drum-pitch-names},
the definition of which can be read in @file{scm/drums.scm}. Each
piece of percussion has a full name and an abbreviated name, and both
list at the top of your file:
@lilypond[singleline, verbatim]
-#(define mydrums `(
+#(set-drum-kit 'mydrums `(
(bassdrum default #f ,(ly:make-pitch -1 2 0))
(snare default #f ,(ly:make-pitch 0 1 0))
(hihat cross #f ,(ly:make-pitch 0 5 0))
the existing list:
@example
-#(define mydrums (append `(
+#(set-drum-kit mydrums (append `(
(bassdrum default #f ,(ly:make-pitch -1 2 0))
(lowtom diamond #f ,(ly:make-pitch -1 6 0))
-) drums ))
+) (get-drum-kit 'drums)))
@end example
The file @file{drumpitch-init.ly} replaces the normal pitch names, so
}
@end lilypond
-@node Percussion midi output
-@subsection Percussion midi output
+@node Percussion MIDI output
+@subsection Percussion MIDI output
-In order to produce correct midi output you need to produce two score
-blocks---one for the paper and one for the midi output. To use the
+In order to produce correct MIDI output you need to produce two score
+blocks---one for the paper and one for the MIDI output. To use the
percussion channel you set the property @code{instrument} to
-@code{'drums}. Because the drum-pitches themself are similar to the
-general midi pitches all you have to do is to insert the voices with
-none of the scheme functions to get the correct midi output:
+@code{'drums}. Because the drum-pitches themselves are similar to the
+general MIDI pitches all you have to do is to insert the voices with
+none of the scheme functions to get the correct MIDI output:
@example
\score @{
@refbugs
-This scheme is to be considered a temporary implementation.
+This scheme is a temporary implementation.
@node Piano music
\autochange Staff \context Voice @{ @dots{}@var{music}@dots{} @}
@end example
The autochanger switches on basis of pitch (central C is the turning
-point), and it looks ahead skipping over rests to switch rests in
+point), and it looks ahead skipping over rests to switch in
advance. Here is a practical example:
@lilypond[verbatim,singleline,quote]
s1*2
} > }
@end lilypond
-Spacer rests are used to prevent the bottom staff from
+
+@noindent
+In this example, spacer rests are used to prevent the bottom staff from
terminating too soon.
@example
\translator Staff = @var{staffname} @var{music}
@end example
+
+@noindent
The string @var{staffname} is the name of the staff. It switches the
current voice from its current staff to the Staff called
@var{staffname}. Typically @var{staffname} is @code{"up"} or
@code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp} to a
note or chord.
-The symbols that are printed can be modified by setting
-@code{pedal@var{X}Strings}, where @var{X} is one of the pedal types:
-Sustain, Sostenuto or UnaCorda. Refer to the generated documentation
-of @internalsref{SustainPedal} for more information.
+@lilypond[fragment,verbatim]
+ c'4-\sustainDown c'4-\sustainUp
+@end lilypond
+
+What is printed can be modified by setting @code{pedal@var{X}Strings},
+where @var{X} is one of the pedal types: @code{Sustain},
+@code{Sostenuto} or @code{UnaCorda}. Refer to the generated
+documentation of @internalsref{SustainPedal} for more information.
Pedals can also be indicated by a sequence of brackets, by setting the
@code{pedal-type} property of @internalsref{SustainPedal} objects:
@lilypond[fragment,verbatim]
-\property Staff.SustainPedal \override #'pedal-type = #'bracket
+ \property Staff.SustainPedal \override #'pedal-type = #'bracket
c''4-\sustainDown d''4 e''4
a'4-\sustainUp-\sustainDown
f'4 g'4 a'4-\sustainUp
@refcommands
-@refcommand arpeggioBracket
-@refcommand arpeggio
+@cindex @code{\arpeggioBracket }
+@code{\arpeggioBracket},
+@cindex @code{\arpeggio}
+@code{\arpeggio},
@refbugs
@refcommands
-@refcommand showStaffSwitch
-@refcommand hideStaffSwitch
+@cindex @code{\showStaffSwitch }
+@code{\showStaffSwitch},
+@cindex @code{\hideStaffSwitch }
+@code{\hideStaffSwitch},
@node Vocal music
@end table
+
+There are also two other chord name schemes implemented: an alternate
+Jazz chord notation, and a systematic scheme called Banter chords. The
+alternate jazz notation is also shown on the chart in @ref{Chord name
+chart}. Turning on these styles is described in the input file
+@inputfileref{input/test/,chord-names-jazz.ly}.
+
+@cindex Banter
+@cindex jazz chords
+@cindex chords, jazz
+
+
@refcommands
-@refcommand germanChords
-@refcommand semiGermanChords
+@cindex @code{\germanChords }
+@code{\germanChords},
+@cindex @code{\semiGermanChords }
+@code{\semiGermanChords},
+
+
@seealso
@inputfileref{input/regression,chord-name-major7.ly},
@inputfileref{input/regression,chord-name-exceptions.ly},
+@inputfileref{input/test,chord-names-jazz.ly},
@inputfileref{input/test,chord-names-german.ly},
@file{scm/chords-ignatzek.scm}, @file{scm/chord-entry.scm}
-@node Writing parts
-@section Writing parts
+@node Orchestral music
+@section Orchestral music
+
+@cindex Writing parts
Orchestral music involves some special notation, both in the full
score and the individual parts. This section explains how to tackle
@menu
+* Multiple staff contexts::
* Rehearsal marks::
* Bar numbers::
* Instrument names::
* Sound output for transposing instruments::
@end menu
+@node Multiple staff contexts
+@subsection Multiple staff contexts
+
+Polyphonic scores consist of many staffs. These staffs can be
+constructed in three different ways:
+@itemize @bullet
+@item The group is started with a brace at the left. This is done with the
+@internalsref{GrandStaff} context.
+@item The group is started with a bracket. This is done with the
+@internalsref{StaffGroup} context
+@item The group is started with a vertical line. This is the default
+for the score.
+@end itemize
+
+@cindex Staff, multiple
+@cindex bracket, vertical
+@cindex brace, vertical
+@cindex grand staff
+@cindex staff group
+
+
+
@node Rehearsal marks
@subsection Rehearsal marks
\figures { <4 6> }
@end lilypond
-Accidentals are added to the numbers if you alterate them by
-appending @code{-}, @code{!} and @code{+}.
+Accidentals are added when you append @code{-}, @code{!} and @code{+}
+to the numbers.
@example
<4- 6+ 7!>
@seealso
-@internalsref{BassFigureEvent} music, @internalsref{BassFigure} grob,
+@internalsref{BassFigureEvent} music, @internalsref{BassFigure} object,
@internalsref{FiguredBass} context
@refbugs
@syntax
-A cluster is engraved as the envelope of a set of notes. The starting
-note is marked with @code{\startCluster}, and the ending note with
-@code{\stopCluster}, e.g.,
-
-@example
- c4-\startCluster
- ...
- f4-\stopCluster
-@end example
+A cluster is engraved as the envelope of a set of
+cluster-notes. Cluster notes are created by applying the function
+@code{notes-to-clusters} to a sequence of chords, eg.
+@c
+@lilypond[relative 2]
+ \apply #notes-to-clusters { << c e >> <<b f'>> }
+@end lilypond
The following example (from
@inputfileref{input/regression,cluster.ly}) shows what the result
@seealso
-@internalsref{Cluster}, @inputfileref{input/regression,cluster.ly},
-@internalsref{Cluster_engraver}, @internalsref{ClusterEvent}.
+@internalsref{ClusterSpanner}, @internalsref{ClusterSpannerBeacon},
+@inputfileref{input/regression,cluster.ly},
+@internalsref{Cluster_engraver}, @internalsref{ClusterNoteEvent}.
@refbugs
-When a cluster is active, note heads must be switched off manually using
-@code{\hideNotes}.
-
Music expressions like @code{< @{ g8 e8 @} a4 >} are not printed
accurately. Use @code{<<g a>>8 <<e a>>8} instead.
object, and set a object property in that object.
@menu
-* Tuning objects::
+* Tuning objects ::
* Constructing a tweak::
* Applyoutput::
* Outputproperty::
The definition of an object is actually a list of default object
properties. For example, the definition of the Stem object (available
-in @file{scm/grob-description.scm}), includes the following definitions for
+in @file{scm/define-grobs.scm}), includes the following definitions for
@internalsref{Stem}
@example
@code{\once}:
@example
-\once \property @var{context}.@var{grobname}
+\once \property @var{context}.@var{objectname}
\override @var{symbol} = @var{value}
@end example
Here @var{symbol} is a Scheme expression of symbol type, @var{context}
-and @var{grobname} is a string and @var{value} is a Scheme expression.
+and @var{objectname} is a string and @var{value} is a Scheme expression.
This command applies a setting only during one moment in the score.
In the following example, only one @internalsref{Stem} object is
For changing more objects, the same command, without @code{\once} can
be used.
@example
-\property @var{context}.@var{grobname} \override @var{symbol} = @var{value}
+\property @var{context}.@var{objectname} \override @var{symbol} = @var{value}
@end example
This command adds @code{@var{symbol} = @var{value}} to the definition
-of @var{grobname} in the context @var{context}, and this definition
+of @var{objectname} in the context @var{context}, and this definition
stays in place until it is removed.
An existing definition may be removed by the following command
@c
@example
-\property @var{context}.@var{grobname} \revert @var{symbol}
+\property @var{context}.@var{objectname} \revert @var{symbol}
@end example
@c
All @code{\override} and @code{\revert} commands should be balanced.
and is often more convenient to use
@example
-\property @var{context}.@var{grobname} \set @var{symbol} = @var{value}
+\property @var{context}.@var{objectname} \set @var{symbol} = @var{value}
@end example
Some examples:
objects (@internalsref{side-position-interface}) vertically, and its
placement is coordinated with other scripts
(@internalsref{text-script-interface}). It also has the standard
-@internalsref{grob-interface} with all the variables that come with
+@internalsref{grob-interface} (grob stands for Graphical object)
+@cindex grob
+@cindex graphical object
+@cindex layout object
+@cindex object, layout
+with all the variables that come with
it. Finally, it denotes a fingering instruction, so it has
@internalsref{finger-interface}.
@end example
where @var{proc} is a Scheme function, taking four arguments.
-When interpreted, the function @var{proc} is called for every grob found
+When interpreted, the function @var{proc} is called for every layout object found
in the context, with the following arguments:
@itemize @bullet
-@item the grob itself
-@item the context where the grob was created
+@item the layout object itself
+@item the context where the layout object was created
@item the context where @code{\applyoutput} is processed.
@end itemize
-In addition, the cause of the grob, i.e. the music expression or object
-that was responsible for creating the object, is in the object property
-@code{cause}. For example, for a note head, this is a
+In addition, the cause of the layout object, i.e. the music
+expression or object that was responsible for creating it, is in the
+object property @code{cause}. For example, for a note head, this is a
@internalsref{NoteHead} event, and for a @internalsref{Stem} object,
this is a @internalsref{NoteHead} object.
@node Outputproperty
@subsection Outputproperty
-@cindex \outputproperty
+@cindex @code{\outputproperty}
Another way of tuning objects is the more arcane @code{\outputproperty}
feature. The syntax is as follows:
The following commands set @code{fontSize} for the current voice.
-@refcommand tiny
-@refcommand small
-@refcommand normalsize
+@cindex @code{\tiny}
+@code{\tiny},
+@cindex @code{\small}
+@code{\small},
+@cindex @code{\normalsize}
+@code{\normalsize},
@refbugs
The following size commands set abolute sizes
-@cindex \teeny
-@cindex \tiny
-@cindex \small
-@cindex \large
-@cindex \huge
+@cindex @code{\teeny}
+@cindex @code{\tiny}
+@cindex @code{\small}
+@cindex @code{\large}
+@cindex @code{\huge}
@table @code
@item \teeny
@cindex larger
@cindex font style, for texts
-@cindex \bold
-@cindex \dynamic
-@cindex \number
-@cindex \italic
+@cindex @code{\bold}
+@cindex @code{\dynamic}
+@cindex @code{\number}
+@cindex @code{\italic}
The following font change commands are defined:
@table @code
@cindex moving text
@cindex translating text
-@cindex \sub
-@cindex \super
+@cindex @code{\sub}
+@cindex @code{\super}
Raising and lowering texts can be done with @code{\super} and
@code{\sub}.
c1^\markup { E "=" mc \super "2" }
@end lilypond
-@cindex \raise
+@cindex @code{\raise}
If you want to give an explicit amount for lowering or raising, use
@code{\raise}. This command takes a Scheme valued first argument, and
respectively.
@item \musicglyph
-@cindex \musicglyph
+@cindex @code{\musicglyph}
This is converted to a musical symbol, e.g. @code{\musicglyph
#"accidentals-0"} will select the natural sign from the music font.
See @ref{The Feta font} for a complete listing of the possible glyphs.
This produces a single character, e.g. @code{\char #65} produces the
letter 'A'.
+@item \note
+@cindex @code{\note @var{log} @var{dots} @var{dir}}
+
+This produces a note with a stem pointing in @var{dir} direction, with
+duration log @var{log} and @var{dots} augmentation dots.
+
@item \hspace #@var{amount}
-@cindex \hspace
+@cindex @code{\hspace}
This produces a invisible object taking horizontal space.
@example
\markup @{ A \hspace #2.0 B @}
normally inserted before elements on a line.
@item \fontsize #@var{size}
-@cindex \fontsize
+@cindex @code{\fontsize}
This sets the relative font size, eg.
@example
A \fontsize #2 @{ B C @} D
This moves `B C' 2 spaces to the right, and 3 down.
@item \magnify #@var{mag}
-@cindex \magnify
+@cindex @code{\magnify}
This sets the font magnification for the its argument. In the following
example, the middle A will be 10% larger.
@example
@item \override #(@var{key} . @var{value})
-@cindex \override
+@cindex @code{\override}
This overrides a formatting property for its argument. The argument
should be a key/value pair, e.g.
@example
-m \override #'(font-family . math) m m
+ m \override #'(font-family . math) m m
@end example
@end table
@refcommands
-@refcommand newpage
+@cindex @code{\newpage}
+@code{\newpage},
@seealso