X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Frefman.itely;h=9bc3526865c9c9cb0a6f61af4a761f9c85d8358e;hb=d9b43b93f2c885409bafdb157138158f65cc49aa;hp=8c42c8b8e78af65666c424e0e19ce2eab47801fc;hpb=a96faf44452c408fb5cce3a9ac5b6f5b3f509d48;p=lilypond.git diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 8c42c8b8e7..9bc3526865 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -1,25 +1,48 @@ @c Note: @c -@c A menu is needed before every deeper *section nesting of @nodes -@c Run M-x texinfo-all-menus-update -@c to automagically fill in these menus -@c before saving changes +@c A menu is needed before every deeper *section nesting of @node's; run +@c M-x texinfo-all-menus-update +@c to automagically fill in these menus before saving changes +@c FIXME: singular vs. plural: Beams/Beam -@ @macro refbugs @strong{BUGS} @end macro +@ifhtml +@macro internalsref{NAME} +@uref{../lilypond-internals/\NAME\.html,\NAME\} +@cindex \NAME\ +@end macro +@macro seeinternals{NAME} +See @internalsref{\NAME\} +@end macro +@end ifhtml + + +@ifnothtml +@macro seeinternals{NAME} +@end macro +@macro internalsref{NAME} +\NAME\ +@cindex \NAME\ + +@end macro +@end ifnothtml @c .{Reference Manual} @node Reference Manual @chapter Reference Manual +@html + +@end html + This document describes GNU LilyPond and its input format. The last revision of this document was made for LilyPond 1.4.1. It supposes a passing familiarity with how LilyPond input works. New users are @@ -102,6 +125,7 @@ These threemanship of tasks (parsing, translating, typesetting) and data-structures (music, context, graphical objects) permeates the entire design of the program. +@c FIXME: Note entry vs Music entry at top level menu is confusing. @c . {Note entry} @node Note entry @section Note entry @@ -151,6 +175,8 @@ question mark `@code{?}' after the pitch. cis' d' e' cis' c'? d' e' c'! @end lilypond +The grob for a note head is called @internalsref{NoteHead}. + @c . {Pitches} @node Pitches @@ -219,26 +245,58 @@ octave; each @code{,} lowers the pitch by an octave. @subsection Rests @cindex Rests -Rests are entered like notes, with note name `@code{r}'. The grob is -@code{Rest}. Whole bar rests centered in the bar are specified using -@code{R}, see @ref{Multi measure rests}. +A rest is entered like a note, with note name `@code{r}': + +@lilypond[singleline,verbatim] +r1 r2 r4 r8 +@end lilypond + +The grob is @internalsref{Rest}. Whole bar rests centered in the bar are +specified using @code{R}, see @ref{Multi measure rests}. @c . {Skips} +@c FIXME: naming. @node Skips @subsection Skips @cindex Skip +@cindex Invisible rest +@cindex Space note +An invisible rest, or skip, can be entered like a note with note name +`@code{s}': -@example - \skip @var{duration} - s@var{duration} -@end example -@cindex @code{\skip} +@lilypond[singleline,verbatim] +a2 s4 a4 s1 a4 +@end lilypond + +Actually, this is a shorthand for the @code{\skip} command, and it is +only available in Note mode and Chord mode. + +@c FIXME: in lyrics mode, we have " " and _ + +In Lyrics mode, you can use `@code{" "}' and `@code{_}': +@lilypond[singleline,verbatim] +< + \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di } + \notes\relative c'' { a2 a4 a a2 a4 a } +> +@end lilypond + +The unabbreviated `@code{\skip} @var{duration}' also works outside of +note mode: + +@lilypond[singleline,verbatim] +\score { + \context Staff < + { \time 4/8 \skip 2 \time 4/4 } + \notes\relative c'' { a2 a1 } + > +} +@end lilypond + +Note that the skip does not produce any output, not even transparent output. -Skips the amount of time specified by @var{duration}. If no other music -is played, a gap will be left for the skipped time without any notes -printed. The shorthand is only available in Note and Chord mode. @c . {Durations} @node Durations @@ -271,7 +329,7 @@ r1 r2 r4 r8 r16 r32 r64 r64 @lilypond[] \score { \notes \relative c'' { - a\breve \autoBeamOff + a\breve \autoBeamOff a1 a2 a4 a8 a16 a32 a64 a64 r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r64 @@ -351,7 +409,8 @@ exactly the same concept. \time 3/4 c'2. c'2 ~ c'4 @end lilypond -The name of the tie grob is @code{Voice.Tie}. +The name of the tie grob is @internalsref{Tie}, and it is created in the +@internalsref{Voice} context. @refbugs @@ -395,7 +454,7 @@ should last. With this, you can make lots of tuplets while typing @lilypond[fragment, relative, singleline, verbatim] \property Voice.tupletSpannerDuration = #(make-moment 1 4) -\times 2/3 { c''8 c c c c c } +\times 2/3 { c'8 c c c c c } @end lilypond The format of the number is determined by the property @@ -423,7 +482,8 @@ The typesetting of brackets and numbers is controlled by the properties @cindex @code{tupletNumberFormatFunction} @cindex tuplet formatting -Tuplet brackets are printed as @code{TupletBracket} grobs +Tuplet brackets are printed as @internalsref{TupletBracket} grobs, most +often in the @internalsref{Voice} context. @c . {Defining pitch names} @node Defining pitch names @@ -459,12 +519,12 @@ Hal-Leonard Inc. music publishers. @lilypond[singleline,verbatim] \include "paper23.ly" \score { - \notes { c'2 e'4 f' | g'1 } - \paper { \translator { \EasyNotation } } + \notes { c'2 e'4 f' | g'1 } + \paper { \translator { \EasyNotation } } } @end lilypond -Note that @code{EasyNotation} overrides a @code{Score} context. You +Note that @internalsref{EasyNotation} overrides a @internalsref{Score} context. You probably will want to print it with magnification to make it more readable, see @ref{Output scaling}. @@ -523,9 +583,10 @@ The standard mode names @code{\ionian}, This command sets the context property @code{Staff.keySignature}. Non-standard key signatures can be specified by setting this property -directly, see the generated documentation for @rgrob{KeySignature}. +directly. -The printed signature is a @code{KeySignature} grob. +The printed signature is a @internalsref{KeySignature} grob, typically +created in @internalsref{Staff} context. @cindex @code{keySignature} @@ -544,10 +605,12 @@ Shortcut for @example \property Staff.clefGlyph = @var{glyph associated with clefname} \property Staff.clefPosition = @var{clef Y-position for clefname} + \property Staff.centralCPosition = @var{position for central C} \property Staff.clefOctavation = @var{extra transposition of clefname} @end example -Any change in these properties creates a clef (a @code{Clef} grob). + +Any change in these properties creates a clef (A @internalsref{Clef} grob). Supported clef-names include @@ -578,7 +641,12 @@ G clef on 2nd line @end table By adding @code{_8} or @code{^8} to the clef name, the clef is -transposed one octave down or up, respectively. +transposed one octave down or up, respectively. Note that you have to +enclose @var{clefname} in quotes if you use underscores or digits in the +name. For example, +@example + \clef "G_8" +@end example Supported associated glyphs (for @code{Staff.clefGlyph}) are: @@ -653,7 +721,7 @@ should be inserted, and how automatic beams should be generated. Changing the value of @code{timeSignatureFraction} also causes a -fraction to be printed. This grob is @code{TimeSignature}. +fraction to be printed. This grob is @internalsref{TimeSignature}. The actual symbol that's printed can be customized with the style property. @@ -771,7 +839,7 @@ a measure it is set to @code{defaultBarType}. The contents of @code{\bar }. These settings take precedence over the automatic @code{whichBar} settings. -@code{BarLine} grobs are created by the @code{Bar_engraver}. +@internalsref{BarLine} grobs are created by the @code{Bar_engraver}. @c . {Polyphony} @node Polyphony @@ -791,7 +859,7 @@ When there are more than two voices on a staff, you must also indicate which voice should moved horizontally in case of a collision. This can be done with the identifiers @code{\shiftOff}, @code{\shiftOn}, @code{\shiftOnn}, etc. (which sets the grob property @code{horizontal-shift} -in @code{NoteColumn}). +in @internalsref{NoteColumn}). @lilypond[fragment, verbatim] \context Staff \notes\relative c''< @@ -845,11 +913,9 @@ LilyPond also vertically shifts rests that are opposite of a stem. @end lilypond Note head collisions (horizontal shifting of note heads) are handled by -the @code{NoteCollision} grob. @code{RestCollision} handles vertical +the @internalsref{NoteCollision} grob. @internalsref{RestCollision} handles vertical shifting of rests. -@cindex @code{NoteCollision} -@cindex @code{RestCollision} @refbugs @@ -886,15 +952,15 @@ are defined in @file{scm/auto-beam.scm}. The value of @code{autoBeamSettings} is changed using @code{\override} and unset using @code{\revert}: @example -\property Voice.autoBeamSettings \override #'(@var{BE} @var{N} @var{M} @var{P} @var{Q}) = @var{dur} -\property Voice.autoBeamSettings \revert #'(@var{BE} @var{N} @var{M} @var{P} @var{Q}) +\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}) @end example Here, @var{BE} is the symbol @code{begin} or @code{end}. It determines whether the rule applies to begin or end-points. The quantity -@var{N}/@var{M} refers to a time signature (wildcards, `@code{* *}' may -be entered to designate all time signatures), @var{P}/@var{Q} refers to -the length of the beamed notes (and `@code{* *}' designates notes of any -length). +@var{P}/@var{Q} refers to the length of the beamed notes (and `@code{* +*}' designates notes of any length), @var{N}/@var{M} refers to a time +signature (wildcards, `@code{* *}' may be entered to designate all time +signatures). For example, if you want automatic beams to end on every quarter note, you can use the following: @@ -917,18 +983,18 @@ In 4/4 time signature, this means that automatic beams could end only on You can also restrict rules to specific time signatures. A rule that should only be applied in @var{N}/@var{M} time signature is formed by -replacing the first asterisks by @var{N} and @var{M}. For example, a +replacing the second asterisks by @var{N} and @var{M}. For example, a rule for 6/8 time exclusively looks like @example \property Voice.autoBeamSettings \override - #'(begin 6 8 * *) = ... + #'(begin * * 6 8) = ... @end example If you want a rule to apply to certain types of beams, you can use the -second pair of asterisks. Beams are classified according to the shortest +first pair of asterisks. Beams are classified according to the shortest note they contain. For a beam ending rule that only applies to beams -with 32nd notes (and no shorter notes), you would use @code{(end * * 1 -32)}. +with 32nd notes (and no shorter notes), you would use @code{(end 1 +32 * *)}. @c not true @c Automatic beams can not be put on the last note in a score. @@ -974,7 +1040,7 @@ after the last note: @lilypond[fragment,relative,verbatim] \context Staff { - r4 [r8 g'' a r8] r8 [g | a] r8 + r4 [r8 g' a r8] r8 [g | a] r8 } @end lilypond Whenever an manual beam is busy, the automatic beamer will not produce @@ -990,25 +1056,25 @@ property, it's value will be used only once, and then it is erased. @lilypond[fragment,relative,verbatim] \context Staff { - [f'8 r16 f g a] + [f8 r16 f g a] [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a] } @end lilypond @cindex @code{stemRightBeamCount} -The beam symbol (grob @code{Voice.Beam}, both for automatic and manual -beams) can be tweaked through grob-properties @code{height} and -@code{staff-position}. These specify vertical location and vertical -span. Both are measured in half staff-spaces, @code{staff-position=0} -corresponds to the middle staff line. - +The beam symbol (grob @internalsref{Beam} in @internalsref{Voice} +context), both for automatic and manual beams) can be tweaked through +grob-properties @code{height} and @code{staff-position}. These specify +vertical location and vertical span. Both are measured in half +staff-spaces, @code{staff-position=0} corresponds to the middle staff +line. Set @code{height} to zero, to get horizontal beams: @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'direction = #1 \property Voice.Beam \set #'height = #0 - [a''8 e' d c] + [a'8 e' d c] @end lilypond Here's how you'd specify a weird looking beam that instead of being @@ -1017,9 +1083,11 @@ horizontal, falls two staff spaces: @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'staff-position = #4 \property Voice.Beam \set #'height = #-4 - [c'8 c] + [c8 c] @end lilypond -@cindex @code{default-neutral-direction} + +@c TODO -> why this ref? Document? +@cindex @code{neutral-direction} @node Expressive marks @section Expressive marks @@ -1048,13 +1116,14 @@ They are entered using parentheses: Slurs avoid crossing stems, and are generally attached to note heads. However, in some situations with beams, slurs may be attached to stem ends. If you want to override this layout you can do this through the -@code{Voice.Slur}'s grob-property @code{attachment}. It's value is a -pair of symbols, specifying the attachment type of the left and right end points. +grob-property @code{attachment} of @internalsref{Slur} in +@internalsref{Voice} context It's value is a pair of symbols, specifying +the attachment type of the left and right end points. @lilypond[fragment,relative,verbatim] \property Voice.Slur \set #'direction = #1 \property Voice.Stem \set #'length = #5.5 - g''8(g)g4 + g'8(g)g4 \property Voice.Slur \set #'attachment = #'(stem . stem) g8(g)g4 @end lilypond @@ -1066,7 +1135,7 @@ stems might look better: @lilypond[fragment,relative,verbatim] \property Voice.Stem \set #'direction = #1 \property Voice.Slur \set #'direction = #1 - d'32( d'4 )d8.. + d32( d'4 )d8.. \property Voice.Slur \set #'attachment = #'(stem . stem) d,32( d'4 )d8.. @end lilypond @@ -1075,7 +1144,7 @@ stems might look better: Similarly, the curvature of a slur is adjusted to stay clear of note heads and stems. When that would increase the curvature too much, the slur is reverted to its default shape. The threshold for this decision -is in @code{Voice.Slur}'s grob-property @code{beautiful}. It is loosely +is in @internalsref{Slur}'s grob-property @code{beautiful}. It is loosely related to the enclosed area between the slur and the notes. Usually, the default setting works well, but in some cases you may prefer a curved slur when LilyPond decides for a vertically moved one. You can @@ -1084,7 +1153,7 @@ indicate this preference by increasing the @code{beautiful} value: @lilypond[verbatim,singleline,relative] \property Voice.Beam \override #'direction = #-1 \property Voice.Slur \override #'direction = #1 - c'16( a' f' a a f a, )c, + c16( a' f' a a f a, )c, c( a' f' a a f d, )c \property Voice.Slur \override #'beautiful = #5.0 c( a' f' a a f d, )c @@ -1108,17 +1177,18 @@ indicate a musical sentence. It is started using @code{\(} and @code{\)} respectively. @lilypond[fragment,verbatim,center,relative] - \time 6/4 c'' \( ( d ) e f ( e ) \) d + \time 6/4 c' \( ( d ) e f ( e ) \) d @end lilypond Typographically, the phrasing slur behaves almost exactly like a normal -slur. The grob associated with it is @code{Voice.PhrasingSlur}. +slur. The grob associated with it is @internalsref{PhrasingSlur}, in +@internalsref{Voice} context. @node Breath marks @subsection Breath marks Breath marks are entered using @code{\breathe}. The result is a -@code{Voice.BreathingSign} grob. +@internalsref{BreathingSign} grob in @internalsref{Voice} context. @lilypond[fragment,relative] c'4 \breathe d4 @@ -1169,9 +1239,9 @@ is as follows: \spanrequest \start "text" \spanrequest \stop "text" @end example -LilyPond will respond by creating a @code{Voice.TextSpanner} grob. The -string to be printed, as well as the style is set through grob -properties. +LilyPond will respond by creating a @internalsref{TextSpanner} grob (typically +in @internalsref{Voice} context). The string to be printed, as well as the +style is set through grob properties. An application---or rather, a hack---is to fake octavation indications. @lilypond[fragment,relative,verbatim] @@ -1226,7 +1296,8 @@ underneath. c''-\rtoe c''-\turn c''-\open c''-\flageolet c''-\reverseturn c''-\trill c''-\prall c''-\mordent c''-\prallprall c''-\prallmordent c''-\upprall c''-\downprall - c''-\thumb c''-\segno c''-\coda + c''-\upmordent c''-\downmordent c''-\pralldown c''-\prallup + c''-\lineprall c''-\thumb c''-\segno c''-\coda } \context Lyrics \lyrics { accent__ marcato__ staccatissimo__ fermata @@ -1235,7 +1306,8 @@ underneath. rtoe__ turn__ open__ flageolet reverseturn__ trill__ prall__ mordent prallprall__ prallmordent__ uprall__ downprall - thumb__ segno__ coda + upmordent__ downmordent__ pralldown__ prallup__ + lineprall__ thumb__ segno__ coda } > \paper { @@ -1285,7 +1357,7 @@ accesses a script definition from the table: Usually the @code{\script} keyword is not used directly. Various helpful identifier definitions appear in @file{script.ly}. -Grobs for these objects are @code{Script} and @code{Fingering}. +Grobs for these objects are @internalsref{Script} and @internalsref{Fingering}. @refbugs @@ -1314,7 +1386,8 @@ includes. \relative c' { c4^"longtext" \fatText c4_"longlongtext" c4 } @end lilypond -Text scripts are created in form of @code{Voice.TextScript} grobs. +Text scripts are created in form of @internalsref{TextScript} grobs, in +@internalsref{Voice} context. @ref{Text markup} describes how to change the font or access special symbols in text scripts. @@ -1342,31 +1415,28 @@ The syntax is as follows. \grace @var{musicexpr} @end example -When grace music is interpreted, a score-within-a-score is set up: -@var{musicexpr} has its own time bookkeeping, and you could (for -example) have a separate time signature within the grace notes. While in -this score-within-a-score, you can create notes, beams, slurs, etc. Unbeamed eighth notes and shorter by default have a slash through the stem. @lilypond[fragment,verbatim] \relative c'' { \grace c8 c4 \grace { [c16 c16] } c4 - \grace { \property Grace.Stem \override #'flag-style = #'() c16 } c4 + \grace { + \property Voice.Stem \override #'flag-style = #'() + c16 + \property Voice.Stem \revert #'flag-style + } c4 } @end lilypond - A grace note expression has duration 0; the next real note is assumed to be the main note. If you want the note to appear after the main note, set @code{Voice.graceAlignPosition} to @code{1}. @refbugs -At present, slurs or ties from the grace notes to the following notes -are not supported. Also, nesting @code{\grace} notes is not -supported. The following may cause run-time errors: -@example +Nesting @code{\grace} notes is not supported. The following may cause +run-time errors: @example @code{\grace @{ \grace c32 c16 @} c4} @end example Since the meaning of such a construct is unclear, we don't consider this @@ -1375,10 +1445,6 @@ syntactically valid, but makes no sense and may cause runtime errors. Ending a staff or score with grace notes may also generate a run-time error, since there will be no main note to attach the grace notes to. -The present implementation of grace notes is not robust and generally -kludgey. We expect it to change after LilyPond 1.4. Syntax changes might -also be implemented. - @menu * Glissando :: * Dynamics:: @@ -1393,11 +1459,11 @@ also be implemented. @cindex @code{\glissando} -A glissando line (grob @code{Voice.Glissando}) can be requested by attaching a -@code{\glissando} to a note: +A glissando line (grob @internalsref{Glissando}) can be requested by +attaching a @code{\glissando} to a notte: @lilypond[fragment,relative,verbatim] - c''-\glissando c' + c'-\glissando c' @end lilypond @refbugs @@ -1439,7 +1505,7 @@ note: @code{c4-\ff}. The available dynamic marks are: @code{\ppp}, @code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}. @lilypond[verbatim,singleline,fragment,relative] - c''\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff + c'\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff c2\sf c\rfz @end lilypond @@ -1477,7 +1543,7 @@ is an example how to do it: \context Voice { \property Voice.crescendoText = "cresc." \property Voice.crescendoSpanner = #'dashed-line - a''2\mf\< a a \!a + a'2\mf\< a a \!a } @end lilypond @@ -1486,9 +1552,9 @@ For everyday use, we recommend the identifiers @code{\cresc}, @cindex diminuendo -Dynamics are grobs of @code{Voice.DynamicText} and -@code{Voice.Hairpin}. They are put together on -@code{Voice.DynamicLineSpanner} to align them vertically. +Dynamics are grobs of @internalsref{DynamicText} and +@internalsref{Hairpin}. They are put together on +@internalsref{DynamicLineSpanner} to align them vertically. @c . {Repeats} @@ -1589,6 +1655,13 @@ the specified number of repeats. } @end lilypond +@subsection Unfolding repeats for MIDI output. + +@cindex expanding repeats + +See @file{input/test/unfold-all-repeats.ly}. + + @refbugs Notice that timing information is not remembered at the start of an @@ -1604,7 +1677,7 @@ Folded repeats offer little more over simultaneous music. However, it is to be expected that more functionality -- especially for the MIDI backend -- will be implemented at some point in the future. -Volta repeats are printed over all staffs in a score. You must turn them +Volta repeats are printed over all staves in a score. You must turn them off explicitly, for example by doing @example \property Staff.VoltaBracket = \turnOff @@ -1640,7 +1713,7 @@ command can be @end lilypond -Repeats brackets are @code{Staff.VoltaBracket} grobs. +Repeats brackets are @internalsref{VoltaBracket} grobs. @node Tremolo repeats @subsection Tremolo repeats @@ -1659,8 +1732,8 @@ style. } @end lilypond -Tremolo beams are @code{Voice.Beam} grobs. Single stem tremolos are -@code{Voice.StemTremolo}. +Tremolo beams are @internalsref{Beam} grobs. Single stem tremolos are +@internalsref{StemTremolo}. @refbugs @@ -1706,8 +1779,8 @@ patterns that divide the measure length are replaced by slashes. } @end lilypond -The signs are represented by these grobs: @code{Voice.RepeatSlash} and -@code{Voice.PercentRepeat} and @code{Voice.DoublePercentRepeat}. +The signs are represented by these grobs: @internalsref{RepeatSlash} and +@internalsref{PercentRepeat} and @internalsref{DoublePercentRepeat}. @refbugs @@ -1719,11 +1792,11 @@ with slashes, and repeating that measure with percents. @menu -* Rhythmic staffs:: +* Rhythmic staves:: @end menu -@node Rhythmic staffs -@subsection Rhythmic staffs +@node Rhythmic staves +@subsection Rhythmic staves Sometimes you might want to show only the rhythm of a melody. This can be done with the rhythmic staff. All pitches of notes on such a staff @@ -1741,11 +1814,11 @@ are squashed, and the staff itself looks has a single staff line: @node Piano music @section Piano music -Piano music is an odd type of notation. Piano staffs are two normal -staffs coupled with a brace. The staffs are largely independent, but -sometimes voices can cross between the two staffs. The -@code{PianoStaff} is especially built to handle this cross-staffing -behavior. In this section we discuss the @code{PianoStaff} and some +Piano music is an odd type of notation. Piano staves are two normal +staves coupled with a brace. The staves are largely independent, but +sometimes voices can cross between the two staves. The +@internalsref{PianoStaff} is especially built to handle this cross-staffing +behavior. In this section we discuss the @internalsref{PianoStaff} and some other pianistic peculiarities. @menu @@ -1769,7 +1842,7 @@ staff. The syntax for this is @end example This will switch the interpretation context of @var{musicexp} between a @var{contexttype} named @code{up} and @code{down}. Typically, you use -@code{Staff} for @var{contexttype}. The autochanger switches on basis +@internalsref{Staff} for @var{contexttype}. The autochanger switches on basis of pitch (central C is the turning point), and it looks ahead skipping over rests to switch rests in advance. @@ -1794,7 +1867,7 @@ terminating too soon. @cindex manual staff switches @cindex staff switch, manual -Voices can be switched between staffs manually, using the following command: +Voices can be switched between staves manually, using the following command: @example \translator Staff = @var{staffname} @var{music} @end example @@ -1825,7 +1898,7 @@ Piano pedal instruction can be expressed using @code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}. These identifiers are shorthands for spanner commands of the types -@code{Sustain}, @code{UnaCorda} and @code{Sostenuto}: +@internalsref{Sustain}, @internalsref{UnaCorda} and @internalsref{Sostenuto}: @lilypond[fragment,verbatim] c''4 \spanrequest \start "Sustain" c''4 @@ -1857,23 +1930,51 @@ You can specify an arpeggio sign on a chord by attaching an @lilypond[fragment,relative,verbatim] - \context Voice + \context Voice @end lilypond -When an arpeggio crosses staffs in piano music, you attach an arpeggio -to the chords in both staffs, and set +When an arpeggio crosses staves in piano music, you attach an arpeggio +to the chords in both staves, and set @code{PianoStaff.connectArpeggios}. @lilypond[fragment,relative,verbatim] \context PianoStaff < \property PianoStaff.connectArpeggios = ##t - \context Voice = one { } + \context Voice = one { } \context Voice = other { \clef bass } > @end lilypond -This command creates @code{Voice.Arpeggio} grobs. Cross staff arpeggios -are @code{PianoStaff.Arpeggio}. +This command creates @internalsref{Arpeggio} grobs. Cross staff arpeggios +are @code{PianoStaff.Arpeggio}. @internalsref{Arpeggio} + +To add an arrow head to explicitly specify the direction of the +arpeggio, you should set the arpeggio grob property +@code{arpeggio-type}. + +@lilypond[fragment,relative,verbatim] + \context Voice { + \property Voice.Arpeggio \override #'arpeggio-direction = #1 + + \property Voice.Arpeggio \override #'arpeggio-direction = #-1 + + } +@end lilypond + +@ignore +A square bracket on the left indicates that the player should not +arpeggiate the chord. + +@lil ypond[fragment,relative,verbatim] + \context PianoStaff < + \property PianoStaff.connectArpeggios = ##t + \property PianoStaff.Arpeggio \override #'arpeggio-direction = #'bracket + \context Voice = one { } + \context Voice = other { \clef bass } + > +@ e nd lilypond +@end ignore + @refbugs @@ -1899,7 +2000,7 @@ can be printed automatically. This is enabled if the property \context PianoStaff < \property PianoStaff.followVoice = ##t \context Staff \context Voice { - c'1 + c1 \translator Staff=two b2 a } @@ -1907,7 +2008,7 @@ can be printed automatically. This is enabled if the property > @end lilypond -The associated grob is @code{Voice.VoiceFollower}. +The associated grob is @internalsref{VoiceFollower}. @node Lyrics @@ -1956,26 +2057,28 @@ definition}. @subsection Printing lyrics @cindex lyrics -Lyrics are printed by interpreting them in the @code{Lyrics} context. +Lyrics are printed by interpreting them in the @internalsref{Lyrics} context. @c Maybe more pedagogical to avoid \addlyrics in this first example? /MB - +@c Add tied and beamed melismata too. @lilypond[verbatim,singleline] -\addlyrics \notes \relative c' { - \time 7/4 - \property Staff.automaticMelismata = ##t - d'2 c4 b16 ( a g a b a b ) c a2 - b2 c4 b8 ( a16 g ) a4 g2 } - \context Lyrics \lyrics { - Join us now __ and - share the soft -- ware; } +\addlyrics + \notes \relative c' { + \time 7/4 + \property Staff.automaticMelismata = ##t + d'2 c4 b16 ( a g a b a b ) c a2 + b2 c4 b8 ( a16 g ) a4 g2 } + \context Lyrics \lyrics { + Join us now __ and + share the soft -- ware; } @end lilypond Notes and syllable durations are matched automatically. This is accomplished using @code{\addlyrics}, which is documented in @ref{Automatic syllable durations}. Setting @code{automaticMelismata} in -the melody staff will cause slurs to be interpreted as melismata. +the melody staff will cause tied, slurred or beamed notes to be +interpreted as melismata. The Lyric syllables are @code{LyricsVoice.LyricSyllable} grobs. @@ -2261,10 +2364,8 @@ adds a fourth, but also removes the third. @cindex printing chord names @cindex chord names @cindex chords -@cindex @code{ChordNames} - -For displaying printed chord names, use the @code{ChordNames} context. +For displaying printed chord names, use the @internalsref{ChordNames} context. The chords may be entered either using the notation described above, or directly using simultaneous music. @@ -2372,7 +2473,7 @@ problems in orchestral music. * Sound output for transposing instruments:: * Multi measure rests:: * Automatic part combining:: -* Hara kiri staffs:: +* Hara kiri staves:: @end menu @c . {Rehearsal marks} @@ -2381,7 +2482,7 @@ problems in orchestral music. @cindex Rehearsal marks @cindex mark @cindex @code{\mark} -@cindex @code{Mark_engraver} + @example \mark @var{unsigned} @@ -2405,14 +2506,26 @@ automatically incremented. } @end lilypond -The grob is @code{Score.RehearsalMark}. See +The grob is @internalsref{RehearsalMark} in @internalsref{Score} context. See @code{input/test/boxed-molecule.ly} if you need boxes around the marks. @node Bar numbers @subsection Bar numbers -Bar numbers (grob: @code{BarNumber}) are printed at the start of the -line. See @code{input/test/boxed-molecule.ly} for boxed bar numbers. + +@cindex bar numbers +@cindex measure numbers +@cindex currentBarNumber + +Bar numbers are @internalsref{BarNumber} grobs. They are printed at the +start of the line. The number itself is a property that can be set by +modifying the @code{currentBarNumber} property, i.e. +@example + \property Score.currentBarNumber = #217 +@end example + +If you want boxed bar numbers, see the example file +@code{input/test/boxed-molecule.ly}. @refbugs @@ -2527,6 +2640,8 @@ measure. @cindex whole rests for a full measure +The grob for this object is @internalsref{MultiMeasureRest}. + @refbugs Currently, there is no way to automatically condense multiple rests into @@ -2624,8 +2739,8 @@ measure. @cindex @code{Voice_engraver} @cindex @code{A2_engraver} -@node Hara kiri staffs -@subsection Hara kiri staffs +@node Hara kiri staves +@subsection Hara kiri staves In orchestral scores, staff lines that only have rests are usually removed. This saves some space. LilyPond also supports this through the hara @@ -2635,10 +2750,10 @@ it finds itself to be empty after the line-breaking process. It will not disappear when it contains normal rests, you must use multi measure rests. -The hara kiri staff is specialized version of the Staff context. It is -available as the context identifier @code{\HaraKiriStaffContext}. -Observe how the second staff in this example disappears in the second -line. +The hara kiri staff is specialized version of the @internalsref{Staff} +context. It is available as the context identifier +@code{\HaraKiriStaffContext}. Observe how the second staff in this +example disappears in the second line. @lilypond[verbatim] \score { @@ -2688,7 +2803,7 @@ such as via the @emph{editio vaticana} dating back to the beginning of the 20th century. For typesetting custodes, just put a @code{Custos_engraver} into the -@code{StaffContext} when declaring the @code{\paper} block. In this +@internalsref{Staff} context when declaring the @code{\paper} block. In this block, you can also globally control the appearance of the custos symbol by setting the custos @code{style} property. Currently supported styles are @code{vaticana}, @code{medicaea}, @code{hufnagel} and @@ -2780,7 +2895,7 @@ mechanism. The definition of a grob is actually a list of default grob properties. For example, the definition of the Stem grob (available in @file{scm/grob-description.scm}), defines the following values for -@code{Stem} +@internalsref{Stem} @example (thickness . 0.8) @@ -3246,7 +3361,7 @@ commands won't work with direct PostScript output (see @ref{PostScript output}). @lilypond[fragment,relative,verbatim] - a''^"3 $\\times$ \\`a deux" + a'^"3 $\\times$ \\`a deux" @end lilypond You can also use raw PostScript commands embedded in text scripts. This @@ -3505,6 +3620,7 @@ pstops ... @refbugs + There is no mechanism to select magnification of particular fonts, meaning that you don't have access to continuously scaled fonts. @@ -3759,7 +3875,7 @@ number. - +@c FIXME: Note entry vs Music entry at top level menu is confusing. @c . {Music entry} @node Music entry @section Music entry @@ -3861,6 +3977,18 @@ A bar check is entered using the bar symbol, @code{|}: \time 3/4 c2 e4 | g2. @end example + + +@cindex skipTypesetting + +Failed bar checks are most often caused by entering incorrect +durations. Incorrect durations often completely garble up the score, +especially if it is polyphonic, so you should start correcting the score +by scanning for failed bar checks and incorrect durations. To speed up +this process, you can use @code{skipTypesetting} (See @ref{Skipping +corrected music})). Bar + + @c . {Point and click} @node Point and click @subsection Point and click @@ -3940,6 +4068,9 @@ following line #(set! point-and-click line-column-location) @end example +One final hint: if you correct large files with point-and-click, then +start correcting at the end of the file. When you start at the top, and +insert one line, all subsequent locations will be off by a line. @refbugs @@ -3948,11 +4079,6 @@ When you convert the @TeX{} file to PostScript using @code{dvips}, it will complain about not finding @code{src:X:Y} files. Those complaints are harmless, and can be ignored. -When using @code{line-column-location}, the cursor will be one off; it -will not jump to the exact note that you clicked, but to the next one. - -[FIXME] - @node Skipping corrected music @section Skipping corrected music @@ -4001,10 +4127,10 @@ like the measure, etc.? @end itemize -Contexts are grouped hierarchically: A @code{Voice} context is -contained in a @code{Staff} context (because a staff can contain -multiple voices at any point), a @code{Staff} context is contained in -@code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context. +Contexts are grouped hierarchically: A @internalsref{Voice} context is +contained in a @internalsref{Staff} context (because a staff can contain +multiple voices at any point), a @internalsref{Staff} context is contained in +@internalsref{Score}, @internalsref{StaffGroup}, or @internalsref{ChoirStaff} context. Contexts associated with sheet music output are called @emph{notation contexts}, those for sound output are called @emph{performance @@ -4091,6 +4217,10 @@ This is a convenient mechanism, but do not expect opening chords to work without @code{\context}. For every note, a separate staff is instantiated. +@cindex explicit context +@cindex starting with chords +@cindex chords, starting with + @lilypond[verbatim, singleline] \score { \notes } @end lilypond @@ -4120,8 +4250,8 @@ specified Scheme expression @var{value}. All @var{propname} and Properties that are set in one context are inherited by all of the contained contexts. This means that a property valid for the -@code{Voice} context can be set in the @code{Score} context (for -example) and thus take effect in all @code{Voice} contexts. +@internalsref{Voice} context can be set in the @internalsref{Score} context (for +example) and thus take effect in all @internalsref{Voice} contexts. Properties can be unset using the following expression: @example @@ -4280,8 +4410,8 @@ completeness, but is never used in practice. @item @code{\name} @var{contextname} - This sets the type name of the context, e.g. @code{Staff}, - @code{Voice}. If the name is not specified, the translator won't do + This sets the type name of the context, e.g. @internalsref{Staff}, + @internalsref{Voice}. If the name is not specified, the translator won't do anything. @end itemize