From 970b2d69e330d7b0b308e7e59fd58804ea0befe0 Mon Sep 17 00:00:00 2001 From: hanwen Date: Sat, 29 Jun 2002 14:01:57 +0000 Subject: [PATCH] '' --- ChangeLog | 5 + Documentation/user/lilypond.tely | 1 + Documentation/user/macros.itexi | 9 + Documentation/user/refman.itely | 286 +++++++++++++++++--------------- Documentation/user/tutorial.itely | 137 ++++++++++----- NEWS | 9 +- input/tutorial/brahms-original.ly | 22 +-- input/tutorial/brahms-tweaked.ly | 60 +++---- lily/phrasing-slur-engraver.cc | 12 +- lily/separating-line-group-engraver.cc | 8 +- lily/side-position-interface.cc | 5 +- lily/slur-engraver.cc | 13 +- scm/translator-property-description.scm | 6 - tex/lilyponddefs.tex | 1 + 14 files changed, 328 insertions(+), 246 deletions(-) rewrite input/tutorial/brahms-tweaked.ly (79%) diff --git a/ChangeLog b/ChangeLog index 9268ecfc47..ba863f785e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,11 @@ 2002-06-29 Han-Wen + * lily/(phrasing-)slur-engraver.cc: remove slur{Begin|End}Attachment. + + * lily/separating-line-group-engraver.cc (acknowledge_grob): + ignore grobs with no-spacing-rods set. + * Documentation/user/tutorial.itely (Fine tuning a piece): more tut. * scm/grob-description.scm (all-grob-descriptions): sort list diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index 8aa44b9dfa..a4641d2b8a 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -49,6 +49,7 @@ Tom Cato Amundsen. @end ifinfo + @ifnottex @node Top @top diff --git a/Documentation/user/macros.itexi b/Documentation/user/macros.itexi index 7902ad02d6..15e446bbab 100644 --- a/Documentation/user/macros.itexi +++ b/Documentation/user/macros.itexi @@ -141,3 +141,12 @@ $\\flat$ See @internalsref{\NAME\} @end macro @end ifhtml +@ifnothtml +@macro seeinternals{NAME} +@end macro +@macro internalsref{NAME} +@cindex \NAME\ +\NAME\ +@end macro +@end ifnothtml + diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 38c8e1e3e6..aef034c34f 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -14,15 +14,6 @@ -@ifnothtml -@macro seeinternals{NAME} -@end macro -@macro internalsref{NAME} -@cindex \NAME\ -\NAME\ -@end macro -@end ifnothtml - @c .{Reference Manual} @node Reference Manual @@ -1639,11 +1630,12 @@ For everyday use, we recommend the identifiers @code{\cresc}, @cindex diminuendo Dynamics are grobs of @internalsref{DynamicText} and -@internalsref{Hairpin}. Vertical positioning of these symbols is handled -by the @internalsref{DynamicLineSpanner} grob. If you want to adjust -padding or vertical direction of the dynamics, you must set properties -for the @internalsref{DynamicLineSpanner} grob. Predefined identifiers -to set the vertical direction are \dynamicUp and \dynamicDown. +@internalsref{Hairpin}. Vertical positioning of these symbols is +handled by the @internalsref{DynamicLineSpanner} grob. If you want to +adjust padding or vertical direction of the dynamics, you must set +properties for the @internalsref{DynamicLineSpanner} grob. Predefined +identifiers to set the vertical direction are \dynamicUp and +\dynamicDown. @cindex direction, of dynamics @cindex @code{\dynamicDown} @@ -2013,7 +2005,9 @@ Pedals can also be indicated by a sequence of brackets, by setting the @lilypond[fragment,verbatim] \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''4 \sustainDown d''4 e''4 a'4 +\sustainUp \sustainDown + f'4 g'4 a'4 \sustainUp @end lilypond A third style of pedal notation is a mixture of text and brackets, @@ -2021,7 +2015,9 @@ obtained by setting @code{pedal-type} to @code{mixed}: @lilypond[fragment,verbatim] \property Staff.SustainPedal \override #'pedal-type = #'mixed -c''4 \sustainDown d''4 e''4 c'4 \sustainUp \sustainDown f'4 g'4 a'4 \sustainUp +c''4 \sustainDown d''4 e''4 c'4 +\sustainUp \sustainDown + f'4 g'4 a'4 \sustainUp @end lilypond The default '*Ped' style for sustain and damper pedals corresponds to @@ -2439,14 +2435,7 @@ mode. @section Chords @cindex Chords -LilyPond has support for both entering and printing chords. Chords are -characterized by a set of pitches. They are -internally stored as simultaneous music expressions. This means you can -enter chords by name and print them as note head, enter them as notes -and print them as chord names, or (the most common case) enter them by -name, and print them as name. - - +LilyPond has support for both entering and printing chords. @lilypond[verbatim,singleline] twoWays = \notes \transpose c'' { \chords { @@ -2462,9 +2451,15 @@ twoWays = \notes \transpose c'' { \context Voice \twoWays > } @end lilypond -Note that this example also shows that the chord printing routines do -not attempt to be intelligent. If you enter @code{f bes d}, it does not -interpret this as an inversion. +This example also shows that the chord printing routines do not try to +be intelligent. If you enter @code{f bes d}, it does not interpret +this as an inversion. + +As you can see chords really are a set of pitches. They are internally +stored as simultaneous music expressions. This means you can enter +chords by name and print them as notes, enter them as notes and print +them as chord names, or (the most common case) enter them by name, and +print them as name. @menu * Chords mode:: @@ -2479,24 +2474,9 @@ interpret this as an inversion. Chord mode is a mode where you can input sets of pitches using common names. It is introduced by the keyword @code{\chords}. It is similar to note mode, but words are also looked up in a chord modifier table -(containing @code{maj}, @code{dim}, etc). - -Dashes and carets are used to indicate chord additions and subtractions, -so articulation scripts can not be entered in Chord mode. - -The syntax for named chords is as follows: -@example - @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}][@code{/+}@var{bass}]. -@end example - -@var{tonic} should be the tonic note of the chord, and @var{duration} is -the chord duration in the usual notation. There are two kinds of -modifiers. One type is formed by @emph{chord additions}. Additions are -obtained by listing intervals separated by dots. An interval is written -by its number with an optional @code{+} or @code{-} to indicate raising -or lowering by half a step. Chord additions have two effects: they adds -the specified interval and all lower odd numbered intervals to the -chord, and they may lower or raise the specified interval. +(containing @code{maj}, @code{dim}, etc). Dashes and carets are used +to indicate chord additions and subtractions, so articulation scripts +can not be entered in Chord mode. Throughout these examples, chords have been shifted around the staff using @code{\transpose}. @@ -2574,10 +2554,25 @@ so it becomes the lowest note in the chord. @end lilypond +The formal syntax for named chords is as follows: +@example + @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}][@code{/+}@var{bass}]. +@end example + +@var{tonic} should be the tonic note of the chord, and @var{duration} is +the chord duration in the usual notation. There are two kinds of +modifiers. One type is formed by @emph{chord additions}. Additions are +obtained by listing intervals separated by dots. An interval is written +by its number with an optional @code{+} or @code{-} to indicate raising +or lowering by half a step. Chord additions have two effects: they adds +the specified interval and all lower odd numbered intervals to the +chord, and they may lower or raise the specified interval. + + @refbugs -Implementation details are gory. For example @code{c:4} not only -adds a fourth, but also removes the third. +Implementation details are gory. For example @code{c:4} not only adds +a fourth, but also removes the third. @c . {Printing named chords} @@ -2619,7 +2614,9 @@ scheme = \chords { \property ChordNames.chordChanges = ##t \scheme } \context Staff \transpose c'' \scheme - > } + > +\paper{linewidth= 9.\cm} +} @end lilypond LilyPond examines chords specified as lists of notes to determine a name @@ -2706,31 +2703,25 @@ problems in orchestral music. @cindex mark @cindex @code{\mark} - -@example - \mark @var{unsigned} - \mark @var{string} - \mark \default -@end example - -This command prints a rehearsal mark above the system. You can provide -a number, a string or a markup text as argument. If you use -@code{\default}, the value of property @code{rehearsalMark} is used and -automatically incremented. - +To print a rehearsal mark, use the @code{\mark} command. @lilypond[fragment,verbatim] \relative c'' { - c1 \mark "A2" + c1 \mark "A" c1 \mark \default c1 \mark \default c1 \mark "12" + c1 \mark \default c1 \mark #'(music "scripts-segno") c1 } @end lilypond -The grob is @internalsref{RehearsalMark} in @internalsref{Score} context. See -@code{input/test/boxed-molecule.ly} if you need boxes around the marks. +As you can see, the mark is incremented automatically if you use +@code{\mark \default}. The value to use is stored in the property +@code{rehearsalMark} is used and automatically incremented. 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 @@ -2740,7 +2731,7 @@ The grob is @internalsref{RehearsalMark} in @internalsref{Score} context. See @cindex measure numbers @cindex currentBarNumber -Bar numbers are @internalsref{BarNumber} grobs. They are printed at the + 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 @@ -2750,22 +2741,26 @@ modifying the @code{currentBarNumber} property, i.e. If you want boxed bar numbers, see the example file @code{input/test/boxed-molecule.ly}. +Bar numbers are @internalsref{BarNumber} grobs. + @refbugs It is not possible to have bar numbers printed at regular intervals only. Barnumbers can collide with the StaffGroup, if there is one at the -top. To solve this, You have to twiddle with the padding-property of -the bar-number if your score starts with a staff-group. +top. To solve this, You have to twiddle with the +@internalsref{padding} property of @internalsref{BarNumber} if your +score starts with a @internalsref{StaffGroup}. @node Instrument names @subsection Instrument names -You can specify an instrument name for a staff by setting -@code{Staff.instrument} and @code{Staff.instr}. This will print a string -before the start of the staff. For the first start, @code{instrument} is -used, for the next ones @code{instr} is used. +In scores, the instrument name is printed before the staff. This can +be done by setting @code{Staff.instrument} and +@code{Staff.instr}. This will print a string before the start of the +staff. For the first start, @code{instrument} is used, for the next +ones @code{instr} is used. @lilypond[verbatim,singleline] \property Staff.instrument = "ploink " { c''4 } @@ -2813,36 +2808,20 @@ This means that middle C in @var{musicexpr} is transposed to a tone. The first version will print sharps and the second version will print flats. -@lilypond[fragment,verbatim] -\context Staff { - \clef "F" - { \key e \major c d e f } +@lilypond[singleline, verbatim] +mus =\notes { \key e \major c d e f } +\score { \notes \context Staff { + \clef "F" \mus \clef "G" - \transpose des'' { \key e \major c d e f } - \transpose cis'' { \key e \major c d e f } -} + \transpose des'' \mus + \transpose cis'' \mus +}} @end lilypond If you want to use both @code{\transpose} and @code{\relative}, then you must use @code{\transpose} first. @code{\relative} will have no effect music that appears inside a @code{\transpose}. -@node Sound output for transposing instruments -@subsection Sound output transposing instruments - -When you want to make a MIDI file from a score containing transposed and -untransposed -instruments, you have to instruct LilyPond the pitch offset (in -semitones) for the transposed instruments. This is done using the -@code{transposing} property. It does not affect printed output. - -@cindex @code{transposing} - -@example - \property Staff.instrument = #"Cl. in B-flat" - \property Staff.transposing = #-2 -@end example - @c . {Multi measure rests} @node Multi measure rests @subsection Multi measure rests @@ -2859,7 +2838,8 @@ Lily will not expand empty measures, and the appropriate number is added automatically. @lilypond[fragment,verbatim] - \time 3/4 r2. | R2. | R2.*2 \property Score.skipBars = ##t R2.*17 R2.*4 + \time 3/4 r2. | R2. | R2.*2 + \property Score.skipBars = ##t R2.*17 R2.*4 @end lilypond Notice that the @code{R2.} is printed as a whole rest, centered in the @@ -2871,8 +2851,9 @@ The grob for this object is @internalsref{MultiMeasureRest}. @refbugs -Currently, there is no way to automatically condense multiple rests into -a single multimeasure rest. +Currently, there is no way to automatically condense multiple rests +into a single multimeasure rest. Multi measure rests do not take part +in rest collisions. @cindex condensing rests @@ -2885,9 +2866,10 @@ a single multimeasure rest. Automatic part combining is used to merge two parts of music onto a staff in an intelligent way. It is aimed primarily at typesetting orchestral scores. When the two parts are identical for a period of -time, only one is shown. In places where the two parts differ, they are -typeset as separate voices, and stem directions are set automatically. -Also, solo and @emph{a due} parts can be identified and marked. +time, only one is shown. In places where the two parts differ, they +are typeset as separate voices, and stem directions are set +automatically. Also, solo and @emph{a due} parts can be identified +and marked. The syntax for part combining is @@ -2996,6 +2978,23 @@ example disappears in the second line. @end lilypond +@node Sound output for transposing instruments +@subsection Sound output for transposing instruments + +When you want to make a MIDI file from a score containing transposed +and untransposed instruments, you have to instruct LilyPond the pitch +offset (in semitones) for the transposed instruments. This is done +using the @code{transposing} property. It does not affect printed +output. + +@cindex @code{transposing} + +@example + \property Staff.instrument = #"Cl. in B-flat" + \property Staff.transposing = #-2 +@end example + + @c . {Custodes} @node Ancient notation @@ -3142,7 +3141,62 @@ Editio XXX.'' @cindex Basso continuo -TODO. see figured-bass.ly +LilyPond has limited support for figured bass: + +@lilypond[verbatim,fragment] +< + \context FiguredBass + \figures { + <_! 3+ 5- _ 7! 9 >4 + < [4 6] 8 > + } + \context Voice { c4 g8 } +> +@end lilypond + +The support for figured bass consists of two parts: there is an input +mode, introduced by @code{\figures}, where you can enter bass figures +as numbers, and there is a context called @internalsref{FiguredBass} +that takes care of making @internalsref{BassFigure} grobs. + +In figures input mode, a group of bass figures is delimited by +@code{<} and @code{>}. The duration is entered after the @code{>}. +@lilypond[fragment] +\context FiguredBass +\figures { <4 6> } +@end lilypond +@example + <4 6> +@end example + +Accidentals are added to the numbers if you alterate them by +appending @code{-}, @code{!} and @code{+}. + +@lilypond[fragment] + \context FiguredBass +\figures { <4- 6+ 7!> } +@end lilypond +@example + <4- 6+ 7!> +@end example + +Spaces or dashes may be inserted by using @code{_}. Brackets are +introduced with @code{[} and @code{]}. + +@lilypond[fragment] + \context FiguredBass +\figures { < [4 6] 8 [_ 12]> } +@end lilypond +@example + < [4 6] 8 [_ 12]> +@end example + +Although the support for figured bass may superficially resemble chord +support, it works much simpler: in figured bass simply stores the +numbers, and then prints the numbers you entered. There is no +conversion to pitches, and no realizations of the bass are played in +the MIDI file. + @c . {Tuning output} @node Tuning output @@ -3370,38 +3424,6 @@ the syntax and semantics are up for rewrite. -@node What to tune? -@subsection What to tune? - -This all tells you how to tune grobs, but you don't know what variables -to set? The question is not answered in this part of the manual -(although you may encounter some examples.). - -Grob properties are tied directly to the implementation of LilyPond, and -they are thus a moving target. Documentation of such variables is in the -automatically generated documentation. Description of properties are -generated from the source code for each version. This documentation is -therefore more up to date. It should be available from the same place -where you got this manual. - -To decide how to tune a grob, you need to find the following information -@itemize @bullet -@item -which grob to modify -@item -which property to modify -@item -which context the grob comes from. -@end itemize - -Included with the automatically generated documentation is a master list -of grobs. Selecting a grob will take you to an overview of the -properties available for that grob. - -There is also a master list of contexts. Selecting one takes you to an -overview of that context which lists which grob types are created there. - - @node Font selection @subsection Font selection diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index af7652de80..09e4f49ff7 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -2168,15 +2168,31 @@ to the page layout of this document. In this section, we show some ways to fine tune the final output of a piece. We do so using a single measure of a moderately complex piano piece: a Brahms intermezzo (opus 119, no. 1). +@cindex Brahms, Johannes The code for the untuned example shows us some new things. @lilypondfile[verbatim]{brahms-original.ly} + +@cindex dynamics +@cindex loudness +@cindex forte +@cindex crescendo +@cindex @code{\<} +@cindex @code{\!} + +The crescendo is ended at the half note by the escaped exclamation +mark @code{\!}. + Hairpin dynamics can be indicated using @code{\>} to start a decrescendo, and @code{\!} to end one. The crescendo is started using @code{\<} and also ended using @code{\!}. Absolute dynamics can be -entered using @code{\p}, @code{\mf}, etc. +entered using @code{\p}, @code{\mf}, etc. All these commands apply to +the complete chord where they are entered, but for syntactical +reasons, they must be attached to one of the notes of the chord. + +@cindex fingering instructions Fingering indications are entered simply using @code{-@var{N}}, where @var{N} is a digit. @@ -2187,6 +2203,8 @@ edition by Schott/Universal Edition: @lilypondfile{brahms-tweaked.ly} +@cindex tuning grob behavior + The basic process that we follow is that we override defaults in the printing system. We do this by setting variables in so-called grobs. Printed symbols are internally represented by Graphical Objects @@ -2195,6 +2213,8 @@ determine the fonts, offsets, sub-routines to be called on the grob, etc. The initial values of these settings are set in the Scheme file @file{scm/grob-description.scm}. +@cindex slur attachments + We start with the slur: the slur in the upper part, running from the F sharp to the A, runs from stem to stem in the printed edition, while ours starts from the note head at the left. The following property @@ -2216,6 +2236,10 @@ lilypond backend supports approximately 240 variables like different types of Grobs, that may be created in 14 different context types besides Voice. +@cindex internal documentation +@cindex finding grobs +@cindex grob descriptiosn + The interesting information is how you can figure out which properties to tune for your own scores. To discover this, you must have a copy of the internals document. This is a set of HTML pages, which should be @@ -2226,9 +2250,16 @@ also available on the web: go to the lilypond website, click ``Documentation: other'' on the side bar, click ``lilypond-internals'', under information for users. +You might want to bookmark either the HTML files on disk, or the one +on the web. One word of caution is in place here: the internals +documentation is generated from the definitions that lily uses. For +that reason, it is strongly tied to the version of LilyPond that you +use. Before you proceed, please make sure that you are using the +documentation that corresponds to the LilyPond version that you use. + Suppose that you wanted to tune the behavior of the slur. The first step is to get some general info on slurs in lilypond. Turn to the -index, and look up slur. The text says +index, and look up slur. The section on slurs says @quotation The grob for this object is @internalsref{Slur}, generally in @internalsref{Voice} context. @@ -2241,7 +2272,18 @@ must look it up the internal documentation: click ``grob overview'' , and select ``slur'' (the list is alphabetical.) Now you get a list of all the properties that the slur object -supports, along with their default values. +supports, along with their default values. Among the properties we +find the @code{attachment} property, leading to +@example + \property Voice.Slur \set #'attachment = #'(stem . stem) +@end example + +If you ran the previous example, you have unknowingly already used +this kind of command. The @file{ly/property-init.ly} contains the +definition of @code{\stemUp} +@example + stemUp = \property Voice.Stem \set #'direction = #1 +@end example We also want to move around the fingering `3'. In the printed edition @@ -2319,8 +2361,8 @@ encounter the latter type if you run Scheme functions on music using The second fingering instruction should be moved up a little, to avoid a collision with the slur. This could be achieved with @code{extra-offset}, but in this case, a simpler mechanism also -works. We insert an empty text between the 5 and note. The empty text -pushes the fingering instruction away: +works. We insert an empty text between the 5 and the note. The empty +text pushes the fingering instruction away: @example a^" "^#'(finger "5") @end example @@ -2330,46 +2372,67 @@ text instructions. To insert an empty text (@code{^" "}) between the finger and the note, we have disguised the fingering instruction as a text: @code{(finger "5")}. +Normally, one would specify dynamics in a single voice, and start and +end dynamics (such as @b{f} and @b{p}) will be aligned with +hairpins. In this case, we want the decrescendo to be in a different +place from the piano sign. We achieve this by putting the dynamic +markings in different voices. The crescendo should be above the upper +staff. This can be forced by the precooked command +@example + \dynamicsUp +@end example + +However, if you do that, the decrescendo will be too close to the +upper voice, and collide with the stems. Looking at the manual for +dynamics, we notice that ``Vertical positioning of these symbols is +handled by the @internalsref{DynamicLineSpanner} grob.''. If we turn +to the documentation of @code{DynamicLineSpanner}, we find that the +@code{DynamicLineSpanner} supports several so-called +`interfaces'. This grob not only puts dynamic objects next to the +staff (@code{side-position-interface}), but it also groups dynamic +objects (@code{axis-group-interface}), is considered a dynamic sign +itself (@code{dynamic-interface}) and is a grob: it has the +@code{grob-interface}, with all the variables that come with it. + +For the moment, we are interested in the side positioning: +@quotation + side-position-interface - -@separate + 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 +Between the grob and its support (in this case: the notes in the voice +going down), there should be more space. This space is controlled by +@code{padding}, so we increase it. @example - stemDown = \property Voice.Stem \override #'direction = #-1 + \property Voice.DynamicLineSpanner \override #'padding = #5.0 @end example -Set a property for all Stem grobs in the current Voice: -@code{direction} is set to @code{-1}, which encodes down. The setting -remains in effect until it is reverted. +This command is almost like the command for setting slur attachments, +but subtly different in its details. Grob properties can be +manipulated with two commands: @code{\override} extends the grob +variables with a setting, and @code{\revert} releases this +setting. This has a certain theoretical appeal: the operations are +simple and symmetric. For practical use, it can be cumbersome. Both +commands act like parentheses: you should carefully balance the use of +@code{\override} and @code{\revert}. The @code{\set} command is more +friendly: it first does a @code{\revert} followed by @code{\override}. + +Finally, Brahms uses music notation is a slightly unorthodox way. Ties +usually happen only within one voice. In this piece, the composer +gladly produces ties that jump voices. We deal with this by faking +these ties: whenever we need such a tie, we insert a notehead in a +different voice, and blank the stem. This is done in the following +snippet of code. -@separate @example - \property Voice.Stem \revert #'direction + \property Voice.Stem \set #'transparent = ##t + d' + \property Voice.Stem \revert #'transparent @end example -Revert the to the previous setting. The effect of precisely one -@code{\stemDown} or @code{\stemUp} is neutralized. - - -@cindex dynamics -@cindex loudness -@cindex forte -@code{\f} places a forte symbol under the chord. The forte applies to -the whole chord, but the syntax requires that commands like forte and -arpeggio are attached to a note, so here we attach them to the first -note. - -On the first chord, a crescendo is started with -@code{\<}. To be precise, the crescendo start is syntactically attached -to the preceding note, the @code{d}. - -@cindex dynamics -@cindex crescendo -@cindex @code{\<} - -@cindex @code{\!} - -The crescendo is ended at the half note by the escaped exclamation -mark @code{\!}. +Finally, the last tie is forced up using @code{\tieUp}. @node An orchestral score diff --git a/NEWS b/NEWS index a1cb4d1d58..1671fdddab 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ New features in 1.5 -* Simple tablature. +* Tablature support. * Many speedups, many slowdowns. @@ -17,7 +17,8 @@ New features in 1.5 * Better spacing. Includes subtle details like optical stem spacing. -* More ancient notation support: mensural ligatures, porrectuses, more shapes. +* More ancient notation support: mensural ligatures, porrectuses, +ambituses, more shapes. * Bracket piano pedals. @@ -25,4 +26,6 @@ New features in 1.5 * Font completely revised and improved. -* Completely rewritten midi input support. \ No newline at end of file +* Completely rewritten midi input support. + +* Many bugfixes diff --git a/input/tutorial/brahms-original.ly b/input/tutorial/brahms-original.ly index d03346271d..eb16f6c8e8 100644 --- a/input/tutorial/brahms-original.ly +++ b/input/tutorial/brahms-original.ly @@ -2,19 +2,19 @@ \notes\context PianoStaff < \context Staff = up \relative c'' < - { \key d\major - fis4-3_\p ( ~ - fis16 )a-5 } \\ - { - fis16( \> d \! b \translator Staff = down - \clef treble g ~ < g8 )e> } \\ - { s16 - d' - ~ < d4 b4 > } + { \key d\major + fis4-3_\p ( ~ + fis16 )a-5 } \\ + { + fis16( \> d \! b \translator Staff = down + \clef treble g ~ < g8 )e> } \\ + { s16 + d' + ~ < d4 b4 > } > \context Staff = down { - \key d \major - \time 3/8 \clef bass s4. } + \key d \major + \time 3/8 \clef bass s4. } > \paper { linewidth = -1. } } diff --git a/input/tutorial/brahms-tweaked.ly b/input/tutorial/brahms-tweaked.ly dissimilarity index 79% index 6eaeb6c535..c7d6ee75b0 100644 --- a/input/tutorial/brahms-tweaked.ly +++ b/input/tutorial/brahms-tweaked.ly @@ -1,30 +1,30 @@ -\score { - \notes\context PianoStaff < - \context Staff = up - \relative c'' < - { \key d\major - \property Voice.Slur \set #'attachment = #'(stem . stem) - - \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8) - fis4-3_\p ( ~ - - \property Voice.Fingering \revert #'extra-offset - fis16 )a^" "^#'(finger "5") } \\ - { - \dynamicUp - \property Voice.DynamicLineSpanner \override #'padding = #5.0 - \tieUp - fis16( \> d \! b \translator Staff = down \clef treble g ~ < g8 )e> } \\ - { s16 - \property Voice.Stem \set #'transparent = ##t - d' - \property Voice.Stem \revert #'transparent - ~ < d4 b4 > } - > - \context Staff = down { - \key d \major - \time 3/8 \clef bass s4. } - > - \paper { linewidth = -1. } -} - +\score { + \notes\context PianoStaff < + \context Staff = up + \relative c'' < + { \key d\major + \property Voice.Slur \set #'attachment = #'(stem . stem) + + \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8) + fis4-3_\p ( ~ + + \property Voice.Fingering \revert #'extra-offset + fis16 )a^" "^#'(finger "5") } \\ + { + \dynamicUp + \property Voice.DynamicLineSpanner \override #'padding = #5.0 + \tieUp + fis16( \> d \! b \translator Staff = down \clef treble g ~ < g8 )e> } \\ + { s16 + \property Voice.Stem \set #'transparent = ##t + d' + \property Voice.Stem \revert #'transparent + ~ < d4 b4 > } + > + \context Staff = down { + \key d \major + \time 3/8 \clef bass s4. } + > + \paper { linewidth = -1. } +} + diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index e93107c962..329228cddc 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -133,11 +133,6 @@ Phrasing_slur_engraver::process_acknowledged_grobs () else { Grob* phrasing_slur = phrasing_slur_l_stack_.pop (); - SCM s = get_property ("phrasingSlurEndAttachment"); - if (gh_symbol_p (s)) - { - index_set_cell (phrasing_slur->get_grob_property ("attachment"), STOP, s); - } end_phrasing_slur_l_arr_.push (phrasing_slur); requests_arr_.pop (); } @@ -148,11 +143,6 @@ Phrasing_slur_engraver::process_acknowledged_grobs () // (use temp. array to wait for all phrasing_slur STOPs) Grob* phrasing_slur = new Spanner (get_property ("PhrasingSlur")); Slur::set_interface (phrasing_slur); // can't remove. - SCM s = get_property ("phrasingSlurBeginAttachment"); - if (gh_symbol_p (s)) - { - index_set_cell (phrasing_slur->get_grob_property ("attachment"), START, s); - } start_phrasing_slur_l_arr.push (phrasing_slur); requests_arr_.push (phrasing_slur_req_l); announce_grob(phrasing_slur, phrasing_slur_req_l->self_scm()); @@ -185,5 +175,5 @@ ENTER_DESCRIPTION(Phrasing_slur_engraver, /* descr */ "Print phrasing slurs. Similar to Slur_engraver", /* creats*/ "PhrasingSlur", /* acks */ "note-column-interface", -/* reads */ "slurBeginAttachment slurEndAttachment slurMelismaBusy", +/* reads */ "slurMelismaBusy", /* write */ ""); diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 796821254b..c1f84e774f 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -104,6 +104,11 @@ Separating_line_group_engraver::acknowledge_grob (Grob_info i) ->has_extent_callback_b(Axis_group_interface::group_extent_callback_proc, X_AXIS)) return; + + + if (to_boolean (it->get_grob_property ("no-spacing-rods"))) + return ; + if (Note_spacing::has_interface (it)) { current_spacings_.note_spacings_.push (it); @@ -198,9 +203,6 @@ Separating_line_group_engraver::stop_translation_timestep () } - - - ENTER_DESCRIPTION(Separating_line_group_engraver, /* descr */ "Generates objects for computing spacing parameters.", /* creats*/ "SeparationItem SeparatingGroupSpanner", diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index e68aaf660a..b1d5c190e1 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -275,7 +275,8 @@ Side_position_interface::supported_b (Grob*me) ADD_INTERFACE (Side_position_interface,"side-position-interface", - "Position a victim object (this one) next to other objects (the support). -#'direction = where to put the victim object (left or right?) + "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?) ", "side-support-elements direction-source direction side-relative-direction minimum-space padding"); diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 3cc4bd261a..2599059008 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -142,11 +142,7 @@ Slur_engraver::process_acknowledged_grobs () else { Grob* slur = slur_l_stack_.pop (); - SCM s = get_property ("slurEndAttachment"); - if (gh_symbol_p (s)) - { - index_set_cell (slur->get_grob_property ("attachment"), STOP, s); - } + end_slur_l_arr_.push (slur); requests_arr_.pop (); } @@ -157,11 +153,6 @@ Slur_engraver::process_acknowledged_grobs () // (use temp. array to wait for all slur STOPs) Grob* slur = new Spanner (get_property ("Slur")); Slur::set_interface (slur); // cannot remove yet! - SCM s = get_property ("slurBeginAttachment"); - if (gh_symbol_p (s)) - { - index_set_cell (slur->get_grob_property ("attachment"), START, s); - } start_slur_l_arr.push (slur); requests_arr_.push (slur_req_l); announce_grob (slur, slur_req_l->self_scm ()); @@ -199,5 +190,5 @@ ENTER_DESCRIPTION (Slur_engraver, /* descr */ "Build slurs from Slur_reqs", /* creats*/ "Slur", /* acks */ "note-column-interface", -/* reads */ "slurBeginAttachment slurEndAttachment slurMelismaBusy", +/* reads */ "slurMelismaBusy", /* write */ ""); diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index 27012b0df7..f445241a5f 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -306,12 +306,6 @@ r1 r1*3 R1*3 \\\\property Score.skipBars= ##t r1*3 R1*3 "When true, all no typesetting is done at this moment, causing the interpretation phase to go a lot faster. This can help with debugging large scores.") - -(translator-property-description 'slurBeginAttachment symbol? -"translates to the car of grob-property 'attachment of NoteColumn. See -@ref{Slur}.") - -(translator-property-description 'slurEndAttachment symbol? "translates to the cdr of grob-property 'attachment of NoteColumn. See @ref{Slur}.") (translator-property-description 'slurMelismaBusy boolean? "Signal a slur if automaticMelismata is set.") (translator-property-description 'solo boolean? "set if solo is detected by the part combiner.") (translator-property-description 'soloADue boolean? "set Solo/A due texts in the part combiner?.") diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index d9e298bc1e..c49b00d45d 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -89,5 +89,6 @@ \csname% nolilyfooter\texsuffix\endcsname \fi + \newdimen\outputscale \endinput -- 2.11.4.GIT