X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fchanging-defaults.itely;h=d69c86d1c7a1675c21da22fc1996664906820f4a;hb=ece2e45d587f63565e81af44e1937ebe1f5e47a8;hp=9aece758792f30d04b6dea406db6d39a2020490f;hpb=88da77553a3b898874f578810b1bc451382aceff;p=lilypond.git diff --git a/Documentation/user/changing-defaults.itely b/Documentation/user/changing-defaults.itely index 9aece75879..d69c86d1c7 100644 --- a/Documentation/user/changing-defaults.itely +++ b/Documentation/user/changing-defaults.itely @@ -20,15 +20,15 @@ are available and explains how to lookup which knob to use for a particular effect. -@cindex Program reference +@cindex Internals Reference The controls available for tuning are described in a separate document, the @iftex -Program reference manual. +Internals Reference manual. @end iftex @ifnottex -@ref{Top,Program reference,,lilypond-internals}. +@ref{Top,Internals Reference,,lilypond-internals}. @end ifnottex That manual lists all different variables, functions and options available in @@ -68,579 +68,11 @@ on entering numbers, lists, strings, and symbols in Scheme.} @menu -* Automatic notation:: * Interpretation contexts:: * The \override command:: @end menu -@node Automatic notation -@section Automatic notation - -This section describes how to change the way that accidentals and -beams are automatically displayed. - -@menu -* Automatic accidentals:: -* Setting automatic beam behavior:: -@end menu - -@node Automatic accidentals -@subsection Automatic accidentals -@cindex Automatic accidentals - -Common rules for typesetting accidentals have been placed in a -function. This function is called as follows - -@funindex set-accidental-style -@example -#(set-accidental-style 'STYLE) -@end example - -@c TODO: check the context stuff below -@c -does it *really* work? -@c -the default contexts as specified in -@c scm/music-function.scm seem to be different -vv - -Optionally, the function can take two arguments: the name of the -accidental style, and an optional argument that denotes the context that -should be changed: - -@example -#(set-accidental-style 'STYLE #('CONTEXT#)) -@end example - -If no context name is supplied, @code{Staff} is the default, -but you may wish to apply the accidental style to a single @code{Voice} -instead. - -The following accidental styles are supported: - -@table @code -@item default -This is the default typesetting behavior. It corresponds -to 18th century common practice: Accidentals are -remembered to the end of the measure in which they occur and -only on their own octave. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - %#(set-accidental-style 'default) - \musicA } - \context Staff = "down"{ - %#(set-accidental-style 'default) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'default" }}} -} -@end lilypond - -@item voice -The normal behavior is to remember the accidentals on -Staff-level. This variable, however, typesets accidentals -individually for each voice. Apart from that, the rule is similar to -@code{default}. - -@example - \new Staff << - #(set-accidental-style 'voice) - @{ @dots{} @} - >> -@end example - -As a result, accidentals from one voice do not get canceled in other -voices, which is often an unwanted result: in the following example, it -is hard to determine whether the second @samp{a} should be played -natural or sharp. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'voice) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'voice) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'voice" }}} -} -@end lilypond - -The @code{voice} option should be used if the voices -are to be read solely by individual musicians. If the staff is to be -used by one musician (e.g., a conductor) then -@code{modern} or @code{modern-cautionary} -should be used instead. - -@item modern -@funindex modern style accidentals -This rule corresponds to the common practice in the 20th century. This rule -prints the same accidentals as @code{default}, but temporary -accidentals also are canceled in other octaves. Furthermore, -in the same octave, they also get canceled in the following -measure: in the following example, notice the two natural signs which appear -in the second bar of the upper staff. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern" }}} -} -@end lilypond - -@item @code{modern-cautionary} -@funindex modern-cautionary -This rule is similar to @code{modern}, but the @q{extra} accidentals -(the ones not typeset by @code{default}) are typeset as cautionary -accidentals. They are printed in reduced size or (by default) -with parentheses -- this can be set by definig the @code{cautionary-style} -property of the @internalsref{AccidentalSuggestion} object. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-cautionary" }}} -} -@end lilypond - -@funindex modern-voice -@item modern-voice -This rule is used for multivoice accidentals to be read both by musicians -playing one voice and musicians playing all voices. Accidentals are -typeset for each voice, but they @emph{are} canceled across voices in -the same @internalsref{Staff}. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-voice) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-voice) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice" }}} -} -@end lilypond - -@funindex modern-voice-cautionary -@item modern-voice-cautionary -This rule is the same as @code{modern-voice}, but with the extra -accidentals (the ones not typeset by @code{voice}) typeset -as cautionaries. Even though all accidentals typeset by -@code{default} @emph{are} typeset by this variable, -some of them are typeset as cautionaries. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-voice-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice-cautionary" }}} -} -@end lilypond - -@item piano -@funindex piano accidentals -This accidental style takes place in a GrandStaff context. However, you have to -explicitly set it for @emph{each} individual Staff of the GrandStaff: - -@example -\new GrandStaff @{ << - \new Staff = "up" @{ << - #(set-accidental-style 'piano) - @{ @dots{} @} - >> @} - \new Staff = "down"@{ << - #(set-accidental-style 'piano) - @{ @dots{} @} - >> @} ->> @} -@end example - -This rule reflects 20th century practice for piano notation. Its behavior is very -similar to @code{modern} style, but here accidentals also get canceled -across the staves in the same @internalsref{GrandStaff} or -@internalsref{PianoStaff}. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'piano) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'piano) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'piano" }}} -} -@end lilypond - -@item piano-cautionary -@funindex #(set-accidental-style 'piano-cautionary) -Same as @code{#(set-accidental-style 'piano)} but with the extra -accidentals typeset as cautionaries. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'piano-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'piano-cautionary" }}} -} -@end lilypond - -@item no-reset -@funindex no-reset accidental style -This is the same as @code{default} but with accidentals lasting -@q{forever} and not only until the next measure: -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'no-reset) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'no-reset) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'no-reset" }}} -} -@end lilypond - -@item forget -This is sort of the opposite of @code{no-reset}: Accidentals -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[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'forget) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'forget) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'forget" }}} -} -@end lilypond -@end table - - -@seealso - -Program reference: @internalsref{Accidental_engraver}, -@internalsref{Accidental}, @internalsref{AccidentalSuggestion} and @internalsref{AccidentalPlacement}. - - -@refbugs - -Simultaneous notes are considered to be entered in sequential -mode. This means that in a chord the accidentals are typeset as if the -notes in the chord happen one at a time, in the order in which -they appear in the input file. This is a problem when accidentals -in a chord depend on each other, -which does not happen for the default accidental style. The problem -can be solved by manually inserting @code{!} and @code{?} for the -problematic notes. - - -@node Setting automatic beam behavior -@subsection Setting automatic beam behavior - -@funindex autoBeamSettings -@funindex (end * * * *) -@funindex (begin * * * *) -@cindex automatic beams, tuning -@cindex tuning automatic beaming - -@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, -or at durations specified by the properties in -@code{autoBeamSettings}. The properties in @code{autoBeamSettings} -consist of a list of rules for where beams can begin and end. The -default @code{autoBeamSettings} rules are defined in -@file{scm/@/auto@/-beam@/.scm}. - -In order to add a rule to the list, use -@example -#(override-auto-beam-setting '(be p q n m) a b [context]) -@end example - -@itemize - -@item @code{be} is either "begin" or "end". - -@item @code{p/q} is the duration of the note for which you want -to add a rule. A beam is considered to have the duration of its -shortest note. Set @code{p} and @code{q} to @code{'*'} to -have this apply to any beam. - -@item @code{n/m} is the time signature to which -this rule should apply. Set @code{n} and @code{m} to @code{'*'} -to have this apply in any time signature. - -@item @code{a/b} is the position in the bar at which the beam should -begin/end. - -@item @code{context} is optional, and it specifies the context at which -the change should be made. The default is @code{'Voice}. -@code{#(score-override-auto-beam-setting '(A B C D) E F)} is equivalent to -@code{#(override-auto-beam-setting '(A B C D) E F 'Score)}. - -@end itemize - -For example, if automatic beams should always end on the first quarter -note, use - -@example -#(override-auto-beam-setting '(end * * * *) 1 4) -@end example - -You can force the beam settings to only take effect on beams whose shortest -note is a certain duration - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 2/4 -#(override-auto-beam-setting '(end 1 16 * *) 1 16) -a16 a a a a a a a | -a32 a a a a16 a a a a a | -#(override-auto-beam-setting '(end 1 32 * *) 1 16) -a32 a a a a16 a a a a a | -@end lilypond - -You can force the beam settings to only take effect in certain time -signatures - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 5/8 -#(override-auto-beam-setting '(end * * 5 8) 2 8) -c8 c d d d -\time 4/4 -e8 e f f e e d d -\time 5/8 -c8 c d d d -@end lilypond - -You can also remove a previously set beam-ending rule by using - -@example -#(revert-auto-beam-setting '(be p q n m) a b [context]) -@end example - -@noindent -be, p, q, n, m, a, b and context are the same as above. Note that the -default rules are specified in @file{scm/@/auto@/-beam@/.scm}, -so you can revert rules that you did not explicitly create. - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 4/4 -a16 a a a a a a a a a a a a a a a -#(revert-auto-beam-setting '(end 1 16 4 4) 1 4) -a16 a a a a a a a a a a a a a a a -@end lilypond - -The rule in a revert-auto-beam-setting statement must exactly match the -original rule. That is, no wildcard expansion is taken into account. - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 1/4 -#(override-auto-beam-setting '(end 1 16 1 4) 1 8) -a16 a a a -#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it! -a a a a -#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will -a a a a -@end lilypond - - - -@c TODO: old material -- not covered by above stuff, I think. -If automatic beams should end on every quarter in 5/4 time, specify -all endings -@example -#(override-auto-beam-setting '(end * * * *) 1 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 1 2 'Staff) -#(override-auto-beam-setting '(end * * * *) 3 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 5 4 'Staff) -@dots{} -@end example - -The same syntax can be used to specify beam starting points. In this -example, automatic beams can only end on a dotted quarter note -@example -#(override-auto-beam-setting '(end * * * *) 3 8) -#(override-auto-beam-setting '(end * * * *) 1 2) -#(override-auto-beam-setting '(end * * * *) 7 8) -@end example -In 4/4 time signature, this means that automatic beams could end only on -3/8 and on the fourth beat of the measure (after 3/4, that is 2 times -3/8, has passed within the measure). - -If any unexpected beam behaviour occurs, check the default automatic beam -settings in @file{scm/@/auto@/-beam@/.scm} -for possible interference, because the beam -endings defined there will still apply on top of your own overrides. Any -unwanted endings in the default vales must be reverted for your time -signature(s). - -For example, to typeset @code{(3 4 3 2)}-beam endings in 12/8, begin -with - -@example -%%% revert default values in scm/auto-beam.scm regarding 12/8 time -#(revert-auto-beam-setting '(end * * 12 8) 3 8) -#(revert-auto-beam-setting '(end * * 12 8) 3 4) -#(revert-auto-beam-setting '(end * * 12 8) 9 8) - -%%% your new values -#(override-auto-beam-setting '(end 1 8 12 8) 3 8) -#(override-auto-beam-setting '(end 1 8 12 8) 7 8) -#(override-auto-beam-setting '(end 1 8 12 8) 10 8) -@end example - -@cindex automatic beam generation -@cindex autobeam -@funindex autoBeaming -@cindex lyrics - -If beams are used to indicate melismata in songs, then automatic -beaming should be switched off with @code{\autoBeamOff}. - - -@refcommands - -@funindex \autoBeamOff -@code{\autoBeamOff}, -@funindex \autoBeamOn -@code{\autoBeamOn}. - -@commonprop - -Beaming patterns may be altered with the @code{beatGrouping} property, - -@lilypond[quote,verbatim,relative=2,fragment,ragged-right] -\time 5/16 -\set beatGrouping = #'(2 3) -c8[^"(2+3)" c16 c8] -\set beatGrouping = #'(3 2) -c8[^"(3+2)" c16 c8] -@end lilypond - - -@refbugs - -If a score ends while an automatic beam has not been ended and is -still accepting notes, this last beam will not be typeset at all. The -same holds polyphonic voices, entered with @code{<< @dots{} \\ @dots{} ->>}. If a polyphonic voice ends while an automatic beam is still -accepting notes, it is not typeset. - - @node Interpretation contexts @section Interpretation contexts @@ -680,26 +112,26 @@ to a single staff, while a bar line must be synchronized across the entire score. Within LilyPond, these rules and bits of information are grouped in -@emph{Contexts}. Some examples of contexts are @context{Voice}, -@context{Staff}, and @context{Score}. They are hierarchical, for -example: a @context{Staff} can contain many @context{Voice}s, and a -@context{Score} can contain many @context{Staff} contexts. +@emph{Contexts}. Some examples of contexts are @code{Voice}, +@code{Staff}, and @code{Score}. They are hierarchical, for +example: a @code{Staff} can contain many @code{Voice}s, and a +@code{Score} can contain many @code{Staff} contexts. @quotation -@image{context-example,5cm,,} +@sourceimage{context-example,5cm,,} @end quotation Each context has the responsibility for enforcing some notation rules, creating some notation objects and maintaining the associated -properties. For example, the @context{Voice} context may introduce an -accidental and then the @context{Staff} context maintains the rule to +properties. For example, the @code{Voice} context may introduce an +accidental and then the @code{Staff} context maintains the rule to show or suppress the accidental for the remainder of the measure. The -synchronization of bar lines is handled at @context{Score} context. +synchronization of bar lines is handled at @code{Score} context. However, in some music we may not want the bar lines to be synchronized -- consider a polymetric score in 4/4 and 3/4 time. In -such cases, we must modify the default settings of the @context{Score} -and @context{Staff} contexts. +such cases, we must modify the default settings of the @code{Score} +and @code{Staff} contexts. For very simple scores, contexts are created implicitly, and you need not be aware of them. For larger pieces, such as anything with more @@ -807,7 +239,7 @@ music = @{ c4 c4 @} arts = @{ s4-. s4-> @} @end example -They are combined by sending both to the same @context{Voice} context, +They are combined by sending both to the same @code{Voice} context, @example << @@ -844,13 +276,13 @@ any context of type @var{type}, regardless of its given name. This variant is used with music expressions that can be interpreted at several levels. For example, the @code{\applyOutput} command (see @ref{Running a function on all layout objects}). Without an explicit -@code{\context}, it is usually applied to @context{Voice} +@code{\context}, it is usually applied to @code{Voice} @example \applyOutput #'@var{context} #@var{function} % apply to Voice @end example -To have it interpreted at the @context{Score} or @context{Staff} level use +To have it interpreted at the @code{Score} or @code{Staff} level use these forms @example @@ -888,8 +320,8 @@ multi-rests are condensed. The value assigned is a Scheme object. In this case, it is @code{#t}, the boolean True value. If the @var{context} argument is left out, then the current bottom-most -context (typically @context{ChordNames}, @context{Voice}, or -@context{Lyrics}) is used. In this example, +context (typically @code{ChordNames}, @code{Voice}, or +@code{Lyrics}) is used. In this example, @lilypond[quote,verbatim,relative=2,fragment] c8 c c c @@ -912,8 +344,8 @@ R1*2 @end lilypond Contexts are hierarchical, so if a bigger context was specified, for -example @context{Staff}, then the change would also apply to all -@context{Voice}s in the current stave. The change is applied +example @code{Staff}, then the change would also apply to all +@code{Voice}s in the current stave. The change is applied @q{on-the-fly}, during the music, so that the setting only affects the second group of eighth notes. @@ -1000,14 +432,14 @@ For a full a description of each plug-in, see @internalsref{Engravers}. @end ifhtml @ifnothtml -Program reference @expansion{} Translation @expansion{} Engravers. +Internals Reference @expansion{} Translation @expansion{} Engravers. @end ifnothtml Every context described in @ifhtml @internalsref{Contexts} @end ifhtml @ifnothtml -Program reference @expansion{} Translation @expansion{} Context. +Internals Reference @expansion{} Translation @expansion{} Context. @end ifnothtml lists the engravers used for that context. @@ -1119,7 +551,7 @@ The command @noindent makes stems thicker (the default is 1.3, with staff line thickness as a -unit). Since the command specifies @context{Staff} as context, it only +unit). Since the command specifies @code{Staff} as context, it only applies to the current staff. Other staves will keep their normal appearance. Here we see the command in action: @@ -1132,11 +564,11 @@ c4 @end lilypond The @code{\override} command changes the definition of the @code{Stem} -within the current @context{Staff}. After the command is interpreted +within the current @code{Staff}. After the command is interpreted all stems are thickened. Analogous to @code{\set}, the @var{context} argument may be left out, -causing the default context @context{Voice} to be used. Adding +causing the default context @code{Voice} to be used. Adding @code{\once} applies the change during one timestep only. @lilypond[quote,fragment,verbatim,relative=2] @@ -1275,13 +707,13 @@ after calling @code{\RemoveEmptyStaffContext}, ie @node Defining new contexts @subsection Defining new contexts -Specific contexts, like @context{Staff} and @code{Voice}, are made of +Specific contexts, like @code{Staff} and @code{Voice}, are made of simple building blocks. It is possible to create new types of contexts with different combinations of engraver plug-ins. The next example shows how to build a different type of -@context{Voice} context from scratch. It will be similar to -@code{Voice}, but only prints centered slash noteheads. It can be used +@code{Voice} context from scratch. It will be similar to +@code{Voice}, but only prints centered slash note heads. It can be used to indicate improvisation in jazz pieces, @lilypond[quote,ragged-right] @@ -1328,9 +760,9 @@ First it is necessary to define a name for the new context: \name ImproVoice @end example -Since it is similar to the @context{Voice}, we want commands that work -on (existing) @context{Voice}s to remain working. This is achieved by -giving the new context an alias @context{Voice}, +Since it is similar to the @code{Voice}, we want commands that work +on (existing) @code{Voice}s to remain working. This is achieved by +giving the new context an alias @code{Voice}, @example \alias Voice @@ -1388,8 +820,8 @@ Put together, we get @end example @funindex \accepts -Contexts form hierarchies. We want to hang the @context{ImproVoice} -under @context{Staff}, just like normal @code{Voice}s. Therefore, we +Contexts form hierarchies. We want to hang the @code{ImproVoice} +under @code{Staff}, just like normal @code{Voice}s. Therefore, we modify the @code{Staff} definition with the @code{\accepts} command, @@ -1441,6 +873,8 @@ New contexts may be aligned above or below exisiting contexts. This could be useful in setting up a vocal staff (@rlearning{Vocal ensembles}) and in ossia, +FIXME: this section doens't work in pdf. (?) + @cindex ossia @findex alignAboveContext @findex alignBelowContext @@ -1511,7 +945,7 @@ Commands which change output generally look like To construct this tweak we must determine these bits of information: @itemize -@item the context: here @context{Voice}. +@item the context: here @code{Voice}. @item the layout object: here @code{Stem}. @item the layout property: here @code{thickness}. @item a sensible value: here @code{3.0}. @@ -1560,7 +994,7 @@ If you visit the documentation on fingering instructions (in @quotation @seealso -Program reference: @internalsref{Fingering}. +Internals Reference: @internalsref{Fingering}. @end quotation @@ -1697,7 +1131,7 @@ That piece of text is typeset with a font, unlike slurs or beams. @item Horizontally, the center of the symbol should be aligned to the -center of the notehead. +center of the note head. @item Vertically, the symbol is placed next to the note and the staff. @@ -1754,7 +1188,7 @@ does not amount to much. The initialization file (see @noindent As you can see, the @code{Fingering} object is nothing more than a -bunch of variable settings, and the webpage in the Program Reference +bunch of variable settings, and the webpage in the Internals Reference is directly generated from this definition. @@ -1796,7 +1230,7 @@ Add this much extra space between objects that are next to each other. @end quotation By increasing the value of @code{padding}, we can move the -fingering away from the notehead. The following command inserts +fingering away from the note head. The following command inserts 3 staff spaces of white between the note and the fingering: @example @@ -1814,7 +1248,7 @@ f @end lilypond -In this case, the context for this tweak is @context{Voice}. This +In this case, the context for this tweak is @code{Voice}. This fact can also be deduced from the program reference, for the page for the @internalsref{Fingering_engraver} plug-in says @@ -1887,7 +1321,7 @@ F = \tweak #'font-size #-3 -\flageolet @noindent With other words, @code{\tweak} doesn't behave like an articulation regarding the syntax; in particular, it can't be attached with -@samp{^} and @samp{_}. +@code{^} and @code{_}. Using Scheme, this problem can be circumvented. The route to the result is given in @ref{Adding articulation to notes (example)}, @@ -1908,12 +1342,12 @@ F = #(let ((m (make-music 'ArticulationEvent @noindent Here, the @code{tweaks} properties of the flageolet object -@samp{m} (created with @code{make-music}) are extracted with +@code{m} (created with @code{make-music}) are extracted with @code{ly:music-property}, a new key-value pair to change the font size is prepended to the property list with the @code{acons} Scheme function, and the result is finally written back with @code{set!}. The last element of the -@code{let} block is the return value, @samp{m} itself. +@code{let} block is the return value, @code{m} itself. @node \set versus \override @@ -1927,7 +1361,7 @@ Contexts can have properties, which are usually named in @code{studlyCaps}. They mostly control the translation from music to notatino, eg. @code{localKeySignature} (for determining whether to print accidentals), @code{measurePosition} (for -determining when to print a barline). Context properties can +determining when to print a bar line). Context properties can change value over time while interpreting a piece of music; @code{measurePosition} is an obvious example of this. Context properties are modified with @code{\set}.