-@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
@chapter Notation manual
@html
-<!--- @@WEB-TITLE@@=Reference Manual --->
+<!--- @@WEB-TITLE@@=Notation manual --->
@end html
* 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
* Rests::
* Skips::
* Durations::
+* Stems::
* Ties::
-* Automatic note splitting ::
* Tuplets::
* Easy Notation note heads ::
@end 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}
@end example
+
where @var{scmpitch} is a Scheme object of the @code{Pitch} type.
+@refcommands
+
+Notes can be hidden and unhidden with the following commands.
+
+@cindex @code{\hideNotes }
+@code{\hideNotes},
+@cindex @code{\unHideNotes }
+@code{\unHideNotes}.
+
@seealso
+@noindent
@internalsref{NoteEvent}, @internalsref{NoteHead}
@node Chromatic alterations
@subsection Chords
A chord is formed by a enclosing a set of pitches in @code{<<} and
-@code{>>}.
+@code{>>}. A chord may be followed by a duration, and a set of
+articulations, just like simple notes.
-TODO: accidental overides?
@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
+
+Whenever a note is found, a
+@internalsref{Stem} object is created automatically. For whole notes
+and rests, stem objects are also created, but in those cases, the stem
+is invisible.
+
+@refcommands
+
+@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
+
+
+@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.
-
-
-
-@node Automatic note splitting
-@subsection Automatic note splitting
-@c FIXME: This subsection does not belong in @ref{Note entry}.
-
-Long notes can be converted automatically to tied notes. This is done
-by replacing the @internalsref{Note_heads_engraver} by the
-@internalsref{Completion_heads_engraver}.
-
-@example
- \paper @{ \translator @{
- \ThreadContext
- \remove "Note_heads_engraver"
- \consists "Completion_heads_engraver"
- @} @}
-@end example
-
-For example,
-@example
- \time 2/4
- c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2
-@end example
-
-@lilypond[noindent]
-\score{
- \notes\relative c'{
- \time 2/4
- c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2
- }
- \paper { \translator {
- \ThreadContext
- \remove "Note_heads_engraver"
- \consists "Completion_heads_engraver"
- } }
- }
-@end lilypond
-
-This engraver splits all running notes at the bar line, and inserts
-ties. One of its uses is to debug complex scores: if the measures are
-not entirely filled, then the ties exactly show how much each measure
-is off.
+optimal.
-@refbugs
-Not all durations (especially those containing tuplets) can be
-represented exactly; the engraver will not insert tuplets.
@node Tuplets
@subsection Tuplets
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)
@cindex @code{tupletNumberFormatFunction}
@cindex tuplet formatting
+
+@refcommands
+
+@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
@node Easier music entry
@section Easier music entry
@cindex Music entry
+
+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, 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
+music. Refer to the website for more information. Finally, there are
+tools make debugging easier, by linking the input file and the output
+shown on screen. See @ref{Point and click} for more information.
+
+
@menu
* Relative octaves::
* Bar check::
* Skipping corrected music::
+* Automatic note splitting ::
@end menu
-When entering music it is easy to introduce errors. This section deals
-with tricks and features that help entering music, and find and
-correct mistakes. It is also possible to use external programs, for
-example GUI interfaces, or MIDI transcription programs, to enter or
-edit music. Refer to the website for more information.
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
c d b bes a g c2 }
@end lilypond
+@node Automatic note splitting
+@subsection Automatic note splitting
+
+Long notes can be converted automatically to tied notes. This is done
+by replacing the @internalsref{Note_heads_engraver} by the
+@internalsref{Completion_heads_engraver}.
+
+@example
+ \paper @{ \translator @{
+ \ThreadContext
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ @} @}
+@end example
+
+For example,
+@example
+ \time 2/4
+ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2
+@end example
+
+@lilypond[noindent]
+\score{
+ \notes\relative c'{
+ \time 2/4
+ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2
+ }
+ \paper { \translator {
+ \ThreadContext
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ } }
+ }
+@end lilypond
+
+This engraver splits all running notes at the bar line, and inserts
+ties. One of its uses is to debug complex scores: if the measures are
+not entirely filled, then the ties exactly show how much each measure
+is off.
+
+@refbugs
+
+Not all durations (especially those containing tuplets) can be
+represented exactly; the engraver will not insert tuplets.
+
@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
Notes, dynamic signs, etc. are grouped
with a set of horizontal lines, into a staff (plural `staves'). In our
-system, these lines are drawn using a separate graphical object called
+system, these lines are drawn using a separate layout object called
staff symbol.
This object is created whenever a @internalsref{Staff} context is
@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
@code{Score.timing} to false, this automatic timing can be switched
off.
+
+@refcommands
+
+@cindex @code{\cadenzaOn }
+@code{\cadenzaOn},
+@cindex @code{\cadenzaOff }
+@code{\cadenzaOff},
+
@node Bar lines
@subsection Bar lines
@cindex 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
when the object property @code{merge-differently-dotted} is set in
the @internalsref{NoteCollision} object, they are:
@lilypond[verbatim,fragment,singleline]
-\relative c' \context Voice < {
+\relative c'' \context Voice < {
g8 g8
\property Staff.NoteCollision \override
#'merge-differently-dotted = ##t
LilyPond also vertically shifts rests that are opposite of a stem.
+
@lilypond[singleline,fragment,verbatim]
\context Voice < c''4 \\ r4 >
@end lilypond
+
+@refcommands
+
+
+
+@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.
+
+
+@cindex @code{\shiftOn}
+@code{\shiftOn},
+@cindex @code{\shiftOnn}
+@code{\shiftOnn},
+@cindex @code{\shiftOnnn}
+@code{\shiftOnnn},
+@cindex @code{\shiftOff}
+@code{\shiftOff},
+
+
+
@seealso
The objects responsible for resolving collisions are
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]
c16-[ c c c c c c c-]
\property Voice.subdivideBeams = ##t
c16-[ c c c c c c c-]
- c32-[ c c c c c c c c c c c c c c c-]
\property Score.beatLength = #(ly:make-moment 1 8)
- c32-[ c c c c c c c c c c c c c c c-]
+ c16-[ c c c c c c c-]
@end lilypond
@cindex subdivideBeams
@cindex automatic beams, tuning
@cindex tuning automatic beaming
-[TODO: use \applycontext]
+@c [TODO: use \applycontext]
In normal time signatures, automatic beams can start on any note but can
only end in a few positions within the measure: beams can end on a beat,
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})
automatic beaming. This is done by setting @code{Voice.autoBeaming} to
@code{#f}.
+@refcommands
+
+@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]
immediately, and if @var{lazyness} is @code{#t} then the accidental
lasts forever.
-[TODO: should use +infinity for this case?]
+@c [TODO: should use +infinity for this case?]
@end table
+@refcommands
+
+@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
@internalsref{Accidental_engraver}, @internalsref{Accidental},
d,32-( d'4 d8..-)
@end lilypond
+@refcommands
+
+
+@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
@seeinternals{Slur}, @internalsref{SlurEvent}.
@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
The commands @code{\slurUp}, @code{\slurDown}, and @code{\slurBoth}
will only affect normal slurs and not phrasing slurs.
+@refcommands
+
+@cindex @code{\phrasingSlurUp }
+@code{\phrasingSlurUp},
+@cindex @code{\phrasingSlurDown }
+@code{\phrasingSlurDown},
+@cindex @code{\phrasingSlurBoth }
+@code{\phrasingSlurBoth},
+
@seealso
See also @internalsref{PhrasingSlur},
@refbugs
Phrasing slurs have the same limitations in their formatting as normal
-slurs.
+slurs. Putting phrasing slurs over rests leads to spurious warnings.
@node Breath marks
@subsection Breath marks
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
@lilypondfile[notexidoc]{script-chart.ly}
+
+@refcommands
+
+@cindex @code{\scriptUp }
+@code{\scriptUp},
+@cindex @code{\scriptDown }
+@code{\scriptDown},
+@cindex @code{\scriptBoth}
+@code{\scriptBoth},
+
@seealso
@internalsref{ScriptEvent}, @internalsref{Script}.
@cindex superscript
@cindex subscript
+You can use the thumb-script to indicate that a note should be
+played with your thumb (used in cello music):
+
+@lilypond[verbatim, singleline, fragmnt]
+ <<a' a''-3>>8-(_\thumb-[ <<b' b''-3>>-)_\thumb
+ <<c'' c'''-3>>-(_\thumb <<d'' d'''-3>>-)_\thumb-]
+@end lilypond
+
+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-\!
}
@cindex diminuendo
+
+@refcommands
+
+@cindex @code{\dynamicUp }
+@code{\dynamicUp},
+@cindex @code{\dynamicDown }
+@code{\dynamicDown},
+@cindex @code{\dynamicBoth }
+@code{\dynamicBoth},
+
+@cindex direction, of dynamics
+
@seealso
@internalsref{CrescendoEvent}, @internalsref{DecrescendoEvent},
If you want to adjust padding or vertical direction of the dynamics,
you must set properties for the @internalsref{DynamicLineSpanner}
-object. Predefined variables to set the vertical direction are
-@code{\dynamicUp} and @code{\dynamicDown}.
-
-@cindex direction, of dynamics
-@cindex @code{\dynamicDown}
-@cindex @code{\dynamicUp}
+object.
@node Repeats
@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
c'2:8 c':32 | c': c': |
@end lilypond
-[TODO : stok is te kort bij 32en]
+@c [TODO : stok is te kort bij 32en]
@refbugs
@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
<<c' e g c>>-\arpeggio
@end lilypond
+@refcommands
+
+@cindex @code{\arpeggioBracket }
+@code{\arpeggioBracket},
+@cindex @code{\arpeggio}
+@code{\arpeggio},
@refbugs
The associated object is @internalsref{VoiceFollower}.
+@refcommands
+
+@cindex @code{\showStaffSwitch }
+@code{\showStaffSwitch},
+@cindex @code{\hideStaffSwitch }
+@code{\hideStaffSwitch},
+
@node Vocal music
@section Vocal music
-For a discussion of how to put lyrics into a score, see section
-@code{Printing lyrics} in the tutorial.
+This section discusses how to enter, and print lyrics.
-@cindex context variables
-@cindex setting context variables
-An interpretation context has variables that tune its behavior. These
-variables are also called @emph{properties}. The @code{autoBeaming}
-variable in a @code{Staff} controls whether 8th and shorter notes are
-beamed automatically. Setting the variable to @code{##f}, which is the
-boolean value @var{false}, turns it off.
+@menu
+* Entering lyrics::
+* The Lyrics context::
+* More stanzas::
+* Ambitus::
+@end menu
+@node Entering lyrics
+@subsection Entering lyrics
-This will create an extender, which is a line
-that extends over the entire duration of the lyric. This line will
-run all the way to the start of the next lyric, so you may want to
-shorten it by using a blank lyric (using @code{_}).
-@cindex lyric mode
+@cindex lyrics
@cindex @code{\lyrics}
+@cindex punctuation
- To get them printed, you must do two
-things: indicate that lyrics are entered with @code{\lyrics}, and
-indicate that this type of music must be interpreted as texts (and not
-notes). This is done with @code{\context Lyrics}.
+Lyrics are entered in a special input mode. This mode is is introduced
+by the keyword @code{\lyrics}. In this mode you can enter lyrics, with
+punctuation and accents without any hassle. Syllables are entered like
+notes, but with pitches replaced by text. For example,
+@example
+ \lyrics @{ Twin-4 kle4 twin- kle litt- le star2 @}
+@end example
+
+A word in Lyrics mode begins with: an alphabetic character, @code{_},
+@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
+through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
+any 8-bit character with ASCII code over 127, or a two-character
+combination of a backslash followed by one of @code{`}, @code{'},
+@code{"}, or @code{^}.
+
+Subsequent characters of a word can be any character that is not a digit
+and not white space. One important consequence of this is that a word
+can end with @code{@}}. The following example is usually a bug. The
+syllable includes a @code{@}}, and hence the opening brace is not balanced.
+@example
+ \lyrics @{ twinkle@}
+@end example
+which may be confusing.
-You can enter lyrics in a special input mode of LilyPond. This mode is
-called Lyrics mode, and it is introduced by the keyword
-@code{\lyrics}. In this mode you can enter lyrics, with punctuation
-and accents without any hassle. Syllables are entered like notes, but
-with pitches replaced by text. For example,
+@cindex @code{\property}, in @code{\lyrics}
+Similarly, a period following a alphabetic sequence, is included in the
+resulting string. As a consequence, spaces must be inserted around
+@code{\property} commands:
@example
- Twin- kle twin- kle
+ \property Lyrics . LyricText \set #'font-shape = #'italic
@end example
+@cindex @code{_}
+@cindex spaces, in lyrics
+@cindex quotes, in lyrics
+Any @code{_} character which appears in an unquoted word is converted
+to a space. This provides a mechanism for introducing spaces into words
+without using quotes. Quoted words can also be used in Lyrics mode to
+specify words that cannot be written with the above rules:
+@example
+ \lyrics @{ He said: "\"Let" my peo ple "go\"" @}
+@end example
-You can use ordinary hyphens at the end of a syllable, i.e.
+@cindex hyphens
+Hyphens can be entered as ordinary hyphens at the end of a syllable, i.e.
@example
soft- ware
@end example
-but then the hyphen will be attached to the end of the first syllable.
-
-If you want them centered between syllables you can use the special
-`@code{-}@code{-}' lyric as a separate word between syllables. The
-hyphen will have variable length depending on the space between
-the syllables and it will be centered between the syllables.
+These will be attached to the end of the first syllable.
+Centered hyphens are entered using the special `@code{-}@code{-}' lyric
+as a separate word between syllables. The hyphen will have variable
+length depending on the space between the syllables and it will be
+centered between the syllables.
+@cindex melisma
+@cindex extender
-Normally the notes that you enter are transformed into note heads.
-Note heads alone make no sense. They need surrounding information: a
-key signature, a clef, staff lines, etc. They need @emph{context}.
-In LilyPond, these symbols are created by objects called
-`interpretation contexts'. Interpretation contexts exist for
-generating notation (`notation context') and for generating sound
-(`performance context'). These objects only exist while LilyPond is
-executing. For lyrics, the command
-@example
- \context Lyrics
-@end example
-must be used to interpret a set of syllables as lyrics.
+When a lyric is sung over many notes (this is called a melisma), this is
+indicated with a horizontal line centered between a syllable and the
+next one. Such a line is called an extender line, and it is entered as
+@code{__}.
+
+@seealso
+@internalsref{LyricEvent}, @internalsref{HyphenEvent},
+@internalsref{ExtenderEvent}.
+@refbugs
+
+The definition of lyrics mode is too complex.
-@cindex context
-@cindex interpretation context
-@cindex notation context
+@node The Lyrics context
+@subsection The Lyrics context
+Lyrics are printed by interpreting them in @internalsref{Lyrics}
+context:
+@example
+ \context Lyrics \lyrics @dots{}
+@end example
+@cindex automatic syllable durations
+@cindex @code{\addlyrics}
+@cindex lyrics and melodies
-The melody and the lyrics can be combined with the @code{\addlyrics}:
+This will place the lyrics according to the durations that were
+entered. The lyrics can also be aligned under a given melody
+automatically. In this case, it is no longer necessary to enter the
+correct duration for each syllable. This is achieved by combining the
+melody and the lyrics with the @code{\addlyrics} expression
@example
\addlyrics
- \notes \relative c' @dots{}
- \context Lyrics \lyrics @dots{}
+ \notes @dots{}
+ \context Lyrics @dots{}
+@end example
+
+@cindex staff order, with @code{\addlyrics}
+
+Normally, this will put the lyrics below the staff. For different or
+more complex orderings, the best way is to setup the hierarchy of
+staffs and lyrics first, e.g.
+@example
+\context ChoirStaff \notes <
+ \context Lyrics = LA @{ s1 @}
+ \context Staff = SA @{ s1 @}
+ \context Lyrics = LB @{ s1 @}
+ \context Staff = SB @{ s1 @}
+>
+@end example
+and then combine the appropriate melodies and lyric lines:
+@example
+ \addlyrics
+ \context Staff = SA @emph{the music}
+ \context Lyrics = LA @emph{the lyrics}
@end example
-[TODO: Move lyrics section from tutorial to here?]
+putting both together, you would get
+@example
+\context ChoirStaff \notes <
+ \context Lyrics = LA @dots{}
+ \context Staff = SB @dots{}
+ \addlyrics @dots{}
+>
+@end example
-See also the sections on @ref{Slurs} and @ref{Breath marks}.
+@cindex SATB
+@cindex choral score
-[TODO: Move slurs / breath marks section to here?]
+An example of a SATB score setup is in the file
+@inputfileref{input/template,satb}.
-[TODO: Write subsection upon usage of ChoirStaff.]
+@seealso
-@menu
-* More stanzas::
-* Ambitus::
-@end menu
+@internalsref{LyricCombineMusic}, @internalsref{Lyrics},
+@inputfileref{input/template,satb}.
+
+@refbugs
+
+@code{\addlyrics} is not automatic enough: melismata are not detected
+automatically, and melismata are not stopped when they hit a rest. A
+melisma on the last note in a melody is not printed.
@node More stanzas
@subsection More stanzas
-@cindex phrasing
+@cindex phrasing, in lyrics
+
+When multiple stanzas are printed underneath each other, the vertical
+groups of syllables should be aligned around punctuation. This can be
+done automatically when corresponding lyric lines and melodies are
+marked.
+
+To this end, give the @internalsref{Voice} context an identity,
+@example
+\context Voice = duet @{
+ \time 3/4
+ g2 e4 a2 f4 g2. @}
+@end example
-If you have multiple stanzas printed underneath each other, the vertical
-groups of syllables should be aligned around punctuation. LilyPond can
-do this if you tell it which lyric lines belong to which melody.
-We show how you can do this by showing how you could print a frivolous
-fragment of a fictional Sesame Street duet.
+Then set the @internalsref{LyricsVoice} contexts to names starting with
+that identity followed by a dash. In the preceding example, the
+@internalsref{Voice} identity is @code{duet}, so the identities of the
+@internalsref{LyricsVoices} are marked @code{duet-1} and @code{duet-2}.
+@example
+ \context LyricsVoice = "duet-1" @{
+ Hi, my name is bert. @}
+ \context LyricsVoice = "duet-2" @{
+ Ooooo, ch\'e -- ri, je t'aime. @}
+@end example
+The convention for naming @internalsref{LyricsVoice} and
+@internalsref{Voice} must also be used to get melismata on rests
+correct.
+The complete example is shown here.
@lilypond[singleline,verbatim]
\score {
\addlyrics
}
@end lilypond
-To this end, give the Voice context an identity, and set the
-LyricsVoice to a name starting with that identity followed by a dash.
-In the following example, the Voice identity is @code{duet},
-@example
-\context Voice = duet @{
- \time 3/4
- g2 e4 a2 f4 g2. @}
-@end example
-and the
-identities of the LyricsVoices are @code{duet-1} and @code{duet-2}.
-@example
- \context LyricsVoice = "duet-1" @{
- Hi, my name is bert. @}
- \context LyricsVoice = "duet-2" @{
- Ooooo, ch\'e -- ri, je t'aime. @}
-@end example
-The convention for naming @code{LyricsVoice} and @code{Voice} must
-also be used to get melismata on rests correct.
-
-
-We add the names of the singers. This can be done by setting
-@code{LyricsVoice.Stanza} (for the first system) and
-@code{LyricsVoice.stz} for the following systems. You must
-surround dots with spaces in @code{\lyrics} mode.
-
+Stanza numbers, or the names of the singers can be added by setting
+@code{LyricsVoice.Stanza} (for the first system) and
+@code{LyricsVoice.stz} for the following systems. Notice how dots are
+surrounded with spaces in @code{\lyrics} mode.
+
@example
\property LyricsVoice . stanza = "Bert"
@dots{}
\property LyricsVoice . stanza = "Ernie"
@end example
-
-
-
-For entering quotes in Lyrics mode, use the following
-@example
-"\"God\"" is "`King'"
-@end example
-
You can use empty syllables, e.g. @code{_4} or @code{" "4} to enter
lyrics. This can confuse the LilyPond -- for example, this might put
-(empty) lyrics under rests. To remedy this, use @code{\skip}.
+(empty) lyrics under rests. To remedy this, use @code{\skip} instead.
@node Chord names
-@section Chord namess
+@section Chord names
@cindex Chords
LilyPond has support for both entering and printing named chords.
@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
+
+@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
@lilypondfile[notexidoc]{bar-number-every-fifth.ly}
The start of that numbering can also be reset, as demonstrated in
-@inputfileref{input/test,bar-number-every-5-reset.ly}.
+@inputfileref{input/test,bar-number-every-five-reset.ly}.
-@lilypondfile[notexidoc]{bar-number-every-5-reset.ly}
+@lilypondfile[notexidoc]{bar-number-every-five-reset.ly}
@seealso
@internalsref{BarNumber}.
-@inputfileref{input/test,bar-number-every-5-reset.ly}.
+@inputfileref{input/test,bar-number-every-five-reset.ly}.
@inputfileref{input/test,bar-number-every-fifth.ly}
@refbugs
@node Multi measure rests
@subsection Multi measure rests
-@cindex Multi measure rests
+@cindex multi measure rests
+@cindex Rests, multi measure
@cindex @code{R}
@cindex fermata on multi-measure rest
Texts can be added to multi-measure rests by using the
-@var{note}-@code{markup} syntax. In this case, the number is
+@var{note}-@code{markup} syntax (see @ref{Text markup}). In this case, the number is
replaced. If you need both texts and the number, you must add the
number by hand. A variable (@code{\fermataMarkup}) is provided for
adding fermatas.
@internalsref{MultiMeasureRestEvent},
@internalsref{MultiMeasureTextEvent},
@internalsref{MultiMeasureRestMusicGroup},
-@internalsref{MultiMeasureRest}.
+@internalsref{MultiMeasureRest},
-The graphical object @internalsref{MultiMeasureRestNumber} is for the
+The layout object @internalsref{MultiMeasureRestNumber} is for the
default number, and @internalsref{MultiMeasureRestText} for user
specified texts.
>
@end lilypond
-The part combiner is slated to be rewritten [TODO: explain why] .
+The part combiner is slated to be rewritten [TODO: explain why].
@cindex @code{Thread_devnull_engraver}
@cindex @code{Voice_engraver}
@syntax
-This is supported through the @code{FrenchStaff}. This staff is
+This is supported through the @code{RemoveEmptyStaff}. This staff is
removed when it turns out empty (or containing multimeasure rests)
after the line-breaking process.
-
For @internalsref{Lyrics}, @internalsref{LyricsVoice},
@internalsref{ChordNames} and @internalsref{FiguredBass}, this is
switched on by default. For normal staffs, it is available as a
specialized @internalsref{Staff} context, with the name variable
-@code{\FrenchStaffContext}. Observe how the second staff in this
+@code{\RemoveEmptyStaffContext}. Observe how the second staff in this
example disappears in the second line.
@lilypond[verbatim]
>
\paper {
linewidth = 6.\cm
- \translator { \FrenchStaffContext }
+ \translator { \RemoveEmptyStaffContext }
}
}
@end lilypond
@cindex Petrucci
@cindex mensural
-[TODO: write introduction on ancient notation]
+@c [TODO: write introduction on ancient notation]
@menu
* Ancient note heads::
to the right side of each clef in the example column denotes the
@code{c'} with respect to that clef.
-@c --- This should go somewhere else: ---
-@c @item modern style G clef (glyph: @code{clefs-G})
-@c
-@c Supported clefs:
-@c @code{treble}, @code{violin}, @code{G}, @code{G2}, @code{french}
-@c
-@c @lilypond[26pt]{\property Staff.TimeSignature \set #'transparent = ##t \clef "G" c'}
-@c
-@c @item modern style F clef (glyph: @code{clefs-F})
-@c
-@c Supported clefs:
-@c @code{varbaritone}, @code{bass}, @code{F}, @code{subbass}
-@c
-@c @lilypond{\property Staff.TimeSignature \set #'transparent = ##t \clef "F" c'}
-@c
-@c @item modern style C clef (glyph: @code{clefs-C})
-@c
-@c Supported clefs:
-@c @code{soprano}, @code{mezzosoprano}, @code{alto}, @code{C},
-@c @code{tenor}, @code{baritone}
-@c
-@c @lilypond{\property Staff.TimeSignature \set #'transparent = ##t \clef "C" c'}
-
@multitable @columnfractions .3 .3 .3 .1
@item
Gregorian square neumes notation (following the style of the Editio
Vaticana) is under heavy development, but not yet really usable for
-production purposes. The following table contains the extended neumes
-table of the 2nd volume of the Antiphonale Romanum (@emph{Liber
-Hymnarius}), published 1983 by the monks of Solesmes.
+production purposes. Core ligatures can already be typeset, but
+essential issues for serious typesetting are still under development,
+such as (among others) horizontal alignment of multiple ligatures,
+lyrics alignment and proper accidentals handling. Still, this section
+gives a sneak preview of what Gregorian chant may look like once it
+will work.
+
+The following table contains the extended neumes table of the 2nd
+volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published
+1983 by the monks of Solesmes.
-@multitable @columnfractions .4 .2 .2 .2
+@multitable @columnfractions .4 .2 .2 .2
@item
@b{Neuma aut@*Neumarum Elementa} @tab
@c TODO: \paper block is identical in all of the below examples.
@c Therefore, it should somehow be included rather than duplicated all
-@c the time.
+@c the time. --jr
+
+@c why not make identifiers in ly/engraver-init.ly? --hwn
+
+@c Because it's just used to typeset plain notes without
+@c a staff for demonstration purposes rather than something
+@c special of Gregorian chant notation. --jr
@item
-@code{1. Punctum} @tab
+@code{1. Punctum}
+@tab
@lilypond[noindent, 26pt, nofragment, linewidth=1.5cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
- % Puctum
+ % Punctum
\[ b \]
+ \noBreak s^\markup {"a"} \noBreak
% Punctum Inclinatum
\[ \inclinatum b \]
+ \noBreak s^\markup {"b"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=2.5cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Punctum Auctum Ascendens
\[ \auctum \ascendens b \]
+ \noBreak s^\markup {"c"} \noBreak
% Punctum Auctum Descendens
\[ \auctum \descendens b \]
+ \noBreak s^\markup {"d"} \noBreak
% Punctum Inclinatum Auctum
\[ \inclinatum \auctum b \]
+ \noBreak s^\markup {"e"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Punctum Inclinatum Parvum
\[ \inclinatum \deminutum b \]
+ \noBreak s^\markup {"f"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{2. Virga} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{2. Virga}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Virga
\[ \virga b \]
+ \noBreak s^\markup {"g"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab @tab
+@end lilypond
+@tab
+@tab
@item
-@code{3. Apostropha vel Stropha} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{3. Apostropha vel Stropha}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Stropha
\[ \stropha b \]
+ \noBreak s^\markup {"h"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Stropha Aucta
\[ \stropha \auctum b \]
+ \noBreak s^\markup {"i"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
+@end lilypond
+@tab
@item
-@code{4. Oriscus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{4. Oriscus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Oriscus
\[ \oriscus b \]
+ \noBreak s^\markup {"j"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab @tab
+@end lilypond
+@tab
+@tab
@item
-@code{5. Clivis vel Flexa} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{5. Clivis vel Flexa}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Clivis vel Flexa
\[ b \flexa g \]
+ s^\markup {"k"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=2.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Clivis Aucta Descendens
\[ b \flexa \auctum \descendens g \]
+ \noBreak s^\markup {"l"} \noBreak
% Clivis Aucta Ascendens
\[ b \flexa \auctum \ascendens g \]
+ \noBreak s^\markup {"m"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Cephalicus
\[ b \flexa \deminutum g \]
+ s^\markup {"n"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{6. Podatus vel Pes} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{6. Podatus vel Pes}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Podatus vel Pes
\[ g \pes b \]
+ s^\markup {"o"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=2.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Pes Auctus Descendens
\[ g \pes \auctum \descendens b \]
+ \noBreak s^\markup {"p"} \noBreak
% Pes Auctus Ascendens
\[ g \pes \auctum \ascendens b \]
+ \noBreak s^\markup {"q"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Epiphonus
\[ g \pes \deminutum b \]
+ s^\markup {"r"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{7. Pes Quassus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{7. Pes Quassus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Pes Quassus
\[ \oriscus g \pes \virga b \]
+ s^\markup {"s"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Pes Quassus Auctus Descendens
\[ \oriscus g \pes \auctum \descendens b \]
+ s^\markup {"t"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
+@end lilypond
+@tab
@item
-@code{8. Quilisma Pes} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{8. Quilisma Pes}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Quilisma Pes
\[ \quilisma g \pes b \]
+ s^\markup {"u"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Quilisma Pes Auctus Descendens
\[ \quilisma g \pes \auctum \descendens b \]
+ s^\markup {"v"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
+@end lilypond
+@tab
@item
-@code{9. Podatus Initio Debilis} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{9. Podatus Initio Debilis}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Pes Initio Debilis
\[ \deminutum g \pes b \]
+ s^\markup {"w"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Pes Auctus Descendens Initio Debilis
\[ \deminutum g \pes \auctum \descendens b \]
+ s^\markup {"x"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
+@end lilypond
+@tab
@item
-@code{10. Torculus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{10. Torculus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus
\[ a \pes b \flexa g \]
+ s^\markup {"y"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus Auctus Descendens
\[ a \pes b \flexa \auctum \descendens g \]
+ s^\markup {"z"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus Deminutus
\[ a \pes b \flexa \deminutum g \]
+ s^\markup {"A"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{11. Torculus Initio Debilis} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{11. Torculus Initio Debilis}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus Initio Debilis
\[ \deminutum a \pes b \flexa g \]
+ s^\markup {"B"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus Auctus Descendens Initio Debilis
\[ \deminutum a \pes b \flexa \auctum \descendens g \]
+ s^\markup {"C"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Torculus Deminutus Initio Debilis
\[ \deminutum a \pes b \flexa \deminutum g \]
+ s^\markup {"D"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{12. Porrectus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{12. Porrectus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Porrectus
\[ a \flexa g \pes b \]
+ s^\markup {"E"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Porrectus Auctus Descendens
\[ a \flexa g \pes \auctum \descendens b \]
+ s^\markup {"F"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Porrectus Deminutus
\[ a \flexa g \pes \deminutum b \]
+ s^\markup {"G"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{13. Climacus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{13. Climacus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Climacus
\[ \virga b \inclinatum a \inclinatum g \]
+ s^\markup {"H"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Climacus Auctus
\[ \virga b \inclinatum a \inclinatum \auctum g \]
+ s^\markup {"I"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Climacus Deminutus
\[ \virga b \inclinatum a \inclinatum \deminutum g \]
+ s^\markup {"J"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{14. Scandicus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{14. Scandicus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Scandicus
\[ g \pes a \virga b \]
+ s^\markup {"K"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Scandicus Auctus Descendens
\[ g \pes a \pes \auctum \descendens b \]
+ s^\markup {"L"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Scandicus Deminutus
\[ g \pes a \pes \deminutum b \]
+ s^\markup {"M"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
@end lilypond
@item
-@code{15. Salicus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{15. Salicus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Salicus
\[ g \oriscus a \pes \virga b \]
+ s^\markup {"N"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@end lilypond
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Salicus Auctus Descendens
\[ g \oriscus a \pes \auctum \descendens b \]
+ s^\markup {"O"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab
+@end lilypond
+@tab
@item
-@code{16. Trigomus} @tab
-@lilypond[noindent, 26pt, nofragment, linewidth=3.0cm]
+@code{16. Trigonus}
+@tab
+@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
% Trigonus
\[ \stropha b \stropha b \stropha a \]
+ s^\markup {"P"}
}
\paper {
interscoreline = 1
\StaffContext
\remove "Clef_engraver"
\remove "Key_engraver"
- \remove "Staff_symbol_engraver"
+ StaffSymbol \set #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
minimumVerticalExtent = ##f
}
}
}
-@end lilypond @tab @tab
+@end lilypond
+@tab
+@tab
+
+@end multitable
+
+
+Unlike most other neumes notation systems, the input language for
+neumes does not necessarily reflect directly the typographical
+appearance, but is designed to solely focuse on musical meaning. For
+example, @code{\[ a \pes b \flexa g \]} produces a Torculus consisting
+of three Punctum heads, while @code{\[ a \flexa g \pes b \]} produces
+a torculus with a curved flexa shape and only a single Punctum head.
+There is no command to explicitly typeset the curved flexa shape; the
+decision of when to typeset a curved flexa shape is purely taken from
+the musical input. The idea of this approach is to separate the
+musical aspects of the input from the notation style of the output.
+This way, the same input can be reused to typeset the same music in a
+different style of Gregorian chant notation such as Hufnagel (also
+known as German gothic neumes) or Medicaea (kind of a very simple
+forerunner of the Editio Vaticana). As soon as Hufnagel ligature
+engraver and Medicaea ligature engraver will have been implemented, it
+will be as simple as replacing the ligature engraver in the
+VoiceContext to get the desired notation style from the same input.
+
+The following table shows the code fragments that produce the
+ligatures in the above neumes table. The letter in the first column
+in each line of the below table indicates to which ligature in the
+above table it refers. The second column gives the name of the
+ligature. The third column shows the code fragment that produces this
+ligature, using @code{g}, @code{a} and @code{b} as example pitches.
+
+@multitable @columnfractions .1 .4 .5
+
+@item
+@b{#} @tab
+@b{Name} @tab
+@b{Input Language}
+
+@item
+a @tab
+Punctum @tab
+@code{\[ b \]}
+
+@item
+b @tab
+Punctum Inclinatum @tab
+@code{\[ \inclinatum b \]}
+
+@item
+c @tab
+Punctum Auctum Ascendens @tab
+@code{\[ \auctum \ascendens b \]}
+
+@item
+d @tab
+Punctum Auctum Descendens @tab
+@code{\[ \auctum \descendens b \]}
+
+@item
+e @tab
+Punctum Inclinatum Auctum @tab
+@code{\[ \inclinatum \auctum b \]}
+
+@item
+f @tab
+Punctum Inclinatum Parvum @tab
+@code{\[ \inclinatum \deminutum b \]}
+
+@item
+g @tab
+Virga @tab
+@code{\[ \virga b \]}
+
+@item
+h @tab
+Stropha @tab
+@code{\[ \stropha b \]}
+
+@item
+i @tab
+Stropha Aucta @tab
+@code{\[ \stropha \auctum b \]}
+
+@item
+j @tab
+Oriscus @tab
+@code{\[ \oriscus b \]}
+
+@item
+k @tab
+Clivis vel Flexa @tab
+@code{\[ b \flexa g \]}
+
+@item
+l @tab
+Clivis Aucta Descendens @tab
+@code{\[ b \flexa \auctum \descendens g \]}
+
+@item
+m @tab
+Clivis Aucta Ascendens @tab
+@code{\[ b \flexa \auctum \ascendens g \]}
+
+@item
+n @tab
+Cephalicus @tab
+@code{\[ b \flexa \deminutum g \]}
+
+@item
+o @tab
+Podatus vel Pes @tab
+@code{\[ g \pes b \]}
+
+@item
+p @tab
+Pes Auctus Descendens @tab
+@code{\[ g \pes \auctum \descendens b \]}
+
+@item
+q @tab
+Pes Auctus Ascendens @tab
+@code{\[ g \pes \auctum \ascendens b \]}
+
+@item
+r @tab
+Epiphonus @tab
+@code{\[ g \pes \deminutum b \]}
+
+@item
+s @tab
+Pes Quassus @tab
+@code{\[ \oriscus g \pes \virga b \]}
+
+@item
+t @tab
+Pes Quassus Auctus Descendens @tab
+@code{\[ \oriscus g \pes \auctum \descendens b \]}
+
+@item
+u @tab
+Quilisma Pes @tab
+@code{\[ \quilisma g \pes b \]}
+
+@item
+v @tab
+Quilisma Pes Auctus Descendens @tab
+@code{\[ \quilisma g \pes \auctum \descendens b \]}
+
+@item
+w @tab
+Pes Initio Debilis @tab
+@code{\[ \deminutum g \pes b \]}
+
+@item
+x @tab
+Pes Auctus Descendens Initio Debilis @tab
+@code{\[ \deminutum g \pes \auctum \descendens b \]}
+
+@item
+y @tab
+Torculus @tab
+@code{\[ a \pes b \flexa g \]}
+
+@item
+z @tab
+Torculus Auctus Descendens @tab
+@code{\[ a \pes b \flexa \auctum \descendens g \]}
+
+@item
+A @tab
+Torculus Deminutus @tab
+@code{\[ a \pes b \flexa \deminutum g \]}
+
+@item
+B @tab
+Torculus Initio Debilis @tab
+@code{\[ \deminutum a \pes b \flexa g \]}
+
+@item
+C @tab
+Torculus Auctus Descendens Initio Debilis @tab
+@code{\[ \deminutum a \pes b \flexa \auctum \descendens g \]}
+
+@item
+D @tab
+Torculus Deminutus Initio Debilis @tab
+@code{\[ \deminutum a \pes b \flexa \deminutum g \]}
+
+@item
+E @tab
+Porrectus @tab
+@code{\[ a \flexa g \pes b \]}
+
+@item
+F @tab
+Porrectus Auctus Descendens @tab
+@code{\[ a \flexa g \pes \auctum \descendens b \]}
+
+@item
+G @tab
+Porrectus Deminutus @tab
+@code{\[ a \flexa g \pes \deminutum b \]}
+
+@item
+H @tab
+Climacus @tab
+@code{\[ \virga b \inclinatum a \inclinatum g \]}
+
+@item
+I @tab
+Climacus Auctus @tab
+@code{\[ \virga b \inclinatum a \inclinatum \auctum g \]}
+
+@item
+J @tab
+Climacus Deminutus @tab
+@code{\[ \virga b \inclinatum a \inclinatum \deminutum g \]}
+
+@item
+K @tab
+Scandicus @tab
+@code{\[ g \pes a \virga b \]}
+
+@item
+L @tab
+Scandicus Auctus Descendens @tab
+@code{\[ g \pes a \pes \auctum \descendens b \]}
+
+@item
+M @tab
+Scandicus Deminutus @tab
+@code{\[ g \pes a \pes \deminutum b \]}
+
+@item
+N @tab
+Salicus @tab
+@code{\[ g \oriscus a \pes \virga b \]}
+
+@item
+O @tab
+Salicus Auctus Descendens @tab
+@code{\[ g \oriscus a \pes \auctum \descendens b \]}
+
+@item
+P @tab
+Trigonus @tab
+@code{\[ \stropha b \stropha b \stropha a \]}
@end multitable
@refbugs
-Horizontal head alignment is broken in Pes Initio Debilis.
+Scandicus Deminutus: Punctum Auctum Ascendens overlaps with
+Semivocalis head; this looks awful.
-Use special heads for lower/upper head of Pes only when heads are
-stacked.
+Trigonus: apply equal spacing, regardless of pitch.
@node Figured bass
@subsection Figured bass
\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
have been tried. For a comprehensive overview, refer to @cite{Stone
1980} (see @ref{Literature}). In general, the use of new, innovative
notation makes a piece harder to understand and perform and its use
-should be avoided if possible. For this reason, support for
+should therefore be avoided if possible. For this reason, support for
contemporary notation in LilyPond is limited.
@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.
@menu
* Tuning objects ::
+* Constructing a tweak::
* Applyoutput::
* Outputproperty::
* Font selection::
* Text markup::
@end menu
+
+
@node Tuning objects
@subsection Tuning objects
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
By adding variables on top of these existing definitions, the system
-defaults is overriden, and the appearance of a graphical objects is
+default is overridden, and the appearance of a layout objects is
altered.
@syntax
@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:
@internalsref{OverrideProperty}, @internalsref{RevertProperty},
@internalsref{PropertySet}, @internalsref{backend properties},
-@internalsref{All Graphical Objects}.
+@internalsref{All layout objects}.
@refbugs
Similarly, reverting properties that are system defaults may also lead
to crashes.
+@node Constructing a tweak
+@subsection Constructing a tweak
+
+
+@cindex internal documentation
+@cindex finding graphical objects
+@cindex graphical object descriptions
+@cindex tweaking
+@cindex @code{\override}
+@cindex @code{\set}
+@cindex internal documentation
+
+
+
+Using @code{\override} and @code{\set}, requires three pieces of
+information: the name of the layout object, the context and the name
+of the property. We demonstrate how to glean this information from
+the notation manual and the generated documentation.
+
+The generated documentation is a set of HTML pages which should be
+included if you installed a binary distribution, typically in
+@file{/usr/share/doc/lilypond}. They are also available on the web:
+go to the @uref{LilyPond website,http://lilypond.org}, click
+``Documentation: Index'' on the side bar, look in the ``Information
+for users'' section, and click on ``Documentation of internals.'' It
+is advisable to bookmark either the local HTML files if possilbe. They
+will load faster than the ones on the web. If you use the version
+from the web, you must check whether the documentation matches the
+program version: the documentation is generated from the definitions
+that the program uses, and therefore it is strongly tied to the
+LilyPond version.
+
+
+@c [TODO: revise for new site.]
+
+Suppose we want to move the fingering indication in the fragment below
+
+@lilypond[relative=2]
+c-2
+\stemUp
+f
+@end lilypond
+
+If you visit the documentation of @code{Fingering} (in @ref{Fingering
+instructions}), you will notice that it says
+
+@quotation
+@seealso
+
+@internalsref{FingerEvent} and @internalsref{Fingering}.
+@end quotation
+
+This implies that the fingerings, once entered, are internally stored
+as @code{FingerEvent} music objects. When printed, a @code{Fingering}
+layout object is created for every @code{FingerEvent}.
+
+@ifhtml
+When we follow the link of @internalsref{Fingering},
+@end ifhtml
+@ifnothtml
+When we look up @internalsref{Fingering} in the generated
+documentation,
+@end ifnothtml
+we see a list of interfaces. The Fingering object has a number of
+different functions, and each of those is captured in an interface.
+
+The @code{Fingering} object has a fixed size
+(@internalsref{item-interface}), the symbol is a piece of text
+(@internalsref{text-interface}), whose font can be set
+(@internalsref{font-interface}). It is centered horizontally
+(@internalsref{self-alignment-interface}), it is placed next to other
+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} (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}.
+
+For the vertical placement, we have to look under
+@code{side-position-interface}.
+@quotation
+ side-position-interface
+
+ Position a victim object (this one) next to other objects (the
+ support). In this case, the direction signifies where to put the
+ victim object relative to the support (left or right, up or down?)
+@end quotation
+below this description, the variable @code{padding} is described as
+@quotation
+@table @code
+@item padding
+ (dimension, in staff space)
+
+ add this much extra space between objects that are next to each
+other. Default value: @code{0.6}
+@end table
+@end quotation
+
+By increasing the value of @code{padding}, we can move away the
+fingering. The following command inserts 3 staff spaces of white
+between the note and the fingering
+@example
+\once \property Voice.Fingering \set #'padding = #3
+@end example
+
+Before the object is created, we get
+@lilypond[relative=2,fragment]
+\once \property Voice.Fingering
+ \set #'padding = #3
+c-2
+\stemUp
+f
+@end lilypond
+
+The context name @code{Voice} in the example above can be determined
+as follows. In the documentation for @internalsref{Fingering}, it says
+@quotation
+Fingering grobs are created by: @internalsref{Fingering_engraver}
+@end quotation
+
+Clicking @code{Fingering_engraver} shows the documentation of
+the module responsible for interpreting the fingering instructions and
+translating them to a @code{Fingering} object. Such a module is called
+an @emph{engraver}. The documentation of the @code{Fingering_engraver}
+says
+@example
+Fingering_engraver is part of contexts: Voice and TabVoice
+@end example
+so tuning the settings for Fingering should be done using either
+@example
+ \property Voice.Fingering \set @dots{}
+@end example
+or
+@example
+ \property TabVoice.Fingering \set @dots{}
+@end example
+
+Since the @code{TabVoice} is only used for tab notation, we see that
+the first guess @code{Voice} was indeed correct.
+
+Of course, the tweak may also done in a larger context than
+@code{Voice}, for example, @internalsref{Staff} or
+@internalsref{Score}.
+
+The internals document also contains alphabetical lists of
+@internalsref{All contexts}, @internalsref{All layout objects} and
+@internalsref{All music types}, so you can also find which objects to
+tweak by browsing the internals document.
+
@node Applyoutput
@subsection Applyoutput
@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:
@cindex @code{font-style}
+@refcommands
+The following commands set @code{fontSize} for the current voice.
+
+@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
@cindex SpacingSpanner, overriding properties
-Properties of the @internalsref{SpacingSpanner} must be overriden
+Properties of the @internalsref{SpacingSpanner} must be overridden
from the @code{\paper} block, since the @internalsref{SpacingSpanner}
is created before any @code{\property} statements are interpreted.
@example
is done by setting the @code{between-systems-strings} on the
@internalsref{NonMusicalPaperColumn} where the system is broken.
An example is shown in @inputfileref{input/regression,between-systems.ly}.
+The predefined command @code{\newpage} also does this.
@cindex paper size
@cindex page size
Lilypond and @code{ly2dvi})
+@refcommands
+
+@cindex @code{\newpage}
+@code{\newpage},
+
+
@seealso
@ref{Invoking ly2dvi},
Entered music can also be converted to MIDI output. The performance
is good enough for proof-hearing the music for errors.
-
Ties, dynamics and tempo changes are interpreted. Dynamic marks,
crescendi and decrescendi translate into MIDI volume levels. Dynamic
marks translate to a fixed fraction of the available MIDI volume
-range, crescendi and decrescendi make the volume vary linearly
-between their two extremities. The fractions be adjusted by
+range, crescendi and decrescendi make the volume vary linearly between
+their two extremities. The fractions be adjusted by
@code{dynamicAbsoluteVolumeFunction} in @internalsref{Voice} context.
-
-For each type of musical instrument (that MIDI supports), a volume range
-can be defined. This gives you basic equalizer control, which can
-enhance the quality of the MIDI output remarkably. The equalizer
-can be controlled by setting @code{instrumentEqualizer}.
-
-Both loudness controls are combined to produce the final MIDI volume.
+For each type of MIDI instrument, a volume range can be defined. This
+gives you basic equalizer control, which can enhance the quality of
+the MIDI output remarkably. The equalizer can be controlled by
+setting @code{instrumentEqualizer}.
@refbugs
Many musically interesting effects, such as swing, articulation,
-slurring, etc., are translated to MIDI.
+slurring, etc., are not translated to MIDI.
@menu
@cindex MIDI block
@itemize @bullet
- @item a @code{\tempo} definition
- @item context definitions
+ @item a @code{\tempo} definition
+ @item context definitions
@end itemize
Assignments in the @code{\midi} block are not allowed.