@setfilename regression-test.info
@settitle LilyPond Regression test
+@html
+<!--- @@WEB-TITLE@@=Regression Test --->
+@end html
+
@c fool ls-latex
@ignore
@author Han-Wen Nienhuys and Jan Nieuwenhuizen
@title LilyPond Regression test
@end ignore
-@node Top, , ,
+@node Top, , , (dir)
@section Introduction
-This document tries give an brief overview of LilyPond features. When
-the text correspond with the shown notation, we consider LilyPond
-Officially BugFree (tm). This document is intended for finding bugs,
-and documenting bugfixes.
+This document presents a brief overview of LilyPond features. When the
+text correspond with the shown notation, we consider LilyPond Officially
+BugFree (tm). This document is intended for finding bugs, and
+documenting bugfixes.
@section Notes and rests
-Rests. Note that the dot of 8th, 16th and 32nd rests rest should be
-next to the top of the rest. All rests except the whole rest are
-centered on the middle staff line.
+@lilypondfile[printfilename]{rest.ly}
-@mudelafile{rest.ly}
+@lilypondfile[printfilename]{rest-ledger.ly}
-Note head shapes are settable. The stem endings should be adjusted
-per note head. If you want different note head styles on one stem,
-you must create a special context called Thread.
+@lilypondfile[printfilename]{note-head-style.ly}
-Harmonic notes have a different shape and different
-dimensions. Nevertheless, noteheads in both styles can be combined, on
-either up or down stems.
+@lilypondfile[printfilename]{mensural.ly}
-@mudelafile{noteheadstyle.ly}
+@lilypondfile[printfilename]{easy-notation.ly}
-Noteheads can have dots, and rests can too. Augmentation dots should
-never be printed on a staff line, but rather be shifted vertically. They
-should go up, but in case of multiple parts, the down stems have down
-shifted dots. (Wanske p. 186) In case of chords, all dots should be in
-a column. The dots go along as rests are shifted to avoid collisions.
+@lilypondfile[printfilename]{dots.ly}
-@mudelafile{dots.ly}
+@lilypondfile[printfilename]{accidental.ly}
-Multiple measure rests do not collide with barlines and clefs. They
-are not expanded when you set @code{Score.skipBars}. Although the
-multi-measure-rest is a Spanner, minimum distances are set to keep it
-colliding from barlines.
+@lilypondfile[printfilename]{multi-measure-rest.ly}
-@mudelafile{multi-measure-rest.ly}
+@lilypondfile[printfilename]{mm-rests2.ly}
-If @code{Score.skipBars} is set,
-the signs for four, two, and one measure rest are combined to
-produce the graphical representation of rests for up to 10 bars.
-The number of bars will be written above the sign.
+@lilypondfile[printfilename]{accidental-single-double.ly}
-@mudelafile{mm-rests2.ly}
-A sharp sign after a double sharp sign, as well as a flat sign
-after a double flat sign is automatically prepended with a
-natural sign.
+@section Stems
-@mudelafile{double-single-acc.ly}
+@lilypondfile[printfilename]{stem-tremolo.ly}
-@section Stems
+@lilypondfile[printfilename]{chord-tremolo.ly}
-Stem tremolos or rolls are tremolo signs that look like beam segments
-crossing stems. If the stem is in a beam, the tremolo must be parallel
-to the beam. If the stem is invisible (eg. on a whole note), the
-tremolo must be centered on the note.
+@lilypondfile[printfilename]{stem-direction.ly}
-@mudelafile{stem-tremolo.ly}
+@lilypondfile[printfilename]{stem-direction-down.ly}
-Chord tremolos look like beams, but are a kind of repeat symbol.
-To avoid confusion, chord tremolo beams do not reach the stems, but
-leave a gap. Chord tremolo beams on half notes are not ambiguous,
-as half notes cannot appear in a regular beam, and should reach the
-stems.
-
-@mudelafile{chord-tremolo.ly}
-Beams, stems and noteheads often have communication troubles, since
-the two systems for y dimensions (1 unit = staffspace, 1 unit = 1
-point) are mixed.
-Stems, beams, ties and slurs should behave similarly, when placed
-on the middle staff line. Of course stem-direction is down for high
-notes, and up for low notes.
+@section Scripts
-@mudelafile{stem-direction.ly}
+@lilypondfile[printfilename]{staccato-pos.ly}
-Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}.
+@lilypondfile[printfilename]{arpeggio.ly}
-@mudelafile{stem-direction-down.ly}
+@lilypondfile[printfilename]{glissando.ly}
-@section Scripts
+@lilypondfile[printfilename]{fingering.ly}
-The staccato dot (and all scripts with follow-into-staff set), must
-not be on staff lines.
+@section Dynamics
-@mudelafile{staccato-pos.ly}
+@lilypondfile[printfilename]{dynamics-line.ly}
+
+@lilypondfile[printfilename]{hairpin-ending.ly}
+
+@lilypondfile[printfilename]{dynamics-broken-hairpin.ly}
+
+@lilypondfile[printfilename]{dynamics-unbound-hairpin.ly}
@section Chord names
-Chord names are generated from a list pitches, and are customisable
-from guile. For some unlogical names, guile customisation is used
-by default.
+@lilypondfile[printfilename]{chord-names.ly}
+@lilypondfile[printfilename]{chord-changes.ly}
+
-@mudelafile{chord-names.ly}
@section Grace notes
-Grace notes are typeset as an encapsulated piece of music. You can
-have beams, notes, chords, stems etc. within a @code{\grace} section.
-Slurs that start within a grace section, but aren't ended are attached
-to the next normal note. Grace notes have zero duration. If there
-are tuplets, the grace notes won't be under the brace. Grace notes
-can have accidentals, but they are (currently) spaced at a fixed
-distance. Grace notes (of course) come before the accidentals of the
-main note. Grace notes can also be positioned after the main note.
+Grace note do weird things with timing. Fragile.
-Grace notes without beams should have a slash, if @code{flagStyle} is
-not set. Main note scripts don't end up on the grace note.
-@mudelafile{grace.ly}
+@lilypondfile[printfilename]{grace.ly}
+@lilypondfile[printfilename]{grace-bar-line.ly}
-@section Beams, slurs and other spanners
+@lilypondfile[printfilename]{grace-nest2.ly}
-Beaming is generated automatically. Beams may cross bar lines. In that
-case, line breaks are forbidden. Yet clef and key signatures are
-hidden just as with breakable bar lines.
+@lilypondfile[printfilename]{grace-nest3.ly}
-@mudelafile{beaming.ly}
+@lilypondfile[printfilename]{grace-nest4.ly}
-Beams should behave reasonably well, even under extreme circumstances.
-Stems may be short, but noteheads should never touch the beam.
+@lilypondfile[printfilename]{grace-nest5.ly}
+@lilypondfile[printfilename]{grace-nest1.ly}
-@mudelafile{beam-extreme.ly}
+@lilypondfile[printfilename]{grace-start.ly}
-Beams should always reach the middle staff line. The second beam
-counting from the note head side, should never be lower than the
-second staff line. This does not hold for grace note beams.
-Override with @code{noStemExtend}.
+@lilypondfile[printfilename]{grace-sync.ly}
-@mudelafile{beam-position.ly}
-Slurs should look nice and symmetric. The curvature may increase
-only to avoid noteheads, and as little as possible.
+@section Beams
-@mudelafile{slur-symmetry.ly}
-@mudelafile{slur-symmetry-1.ly}
+@lilypondfile[printfilename]{beaming.ly}
-Ties are strictly horizontal. They are placed in between note heads.
-The horizontal middle should not overlap with a staffline.
+@lilypondfile[printfilename]{beam-extreme.ly}
-@mudelafile{tie.ly}
+@lilypondfile[printfilename]{beam-position.ly}
-When tieing chords, the outer slurs point outwards, the inner slurs
-point away from the center of the staff. Override with
-@code{tieVerticalDirection}.
+@lilypondfile[printfilename]{auto-beam-bar.ly}
-@mudelafile{tie-chord.ly}
+@lilypondfile[printfilename]{beam-rest.ly}
-When tieing notes with accidentals across a bar boundary, the accidental
-must not be drawn on the note in the new bar. Instead, the next note of
-the same pitch in this bar should always show the accidental (even if
-it's natural). Slurring a accidentaled note to a natural one across bar
-boundaries should be explicit.
+@lilypondfile[printfilename]{beam-length.ly}
-Pitches can be verified by printing them with the @code{NoteNames} context.
+@lilypondfile[printfilename]{beam-dir-function.ly}
-@mudelafile{tie-accidental.ly}
+@lilypondfile[printfilename]{auto-knee.ly}
-Beams can be typeset over fixed distance aligned staffs, beam
-beautification doesn't really work, but knees do. Beams should be
-behave well, wherever the switching point is.
+@lilypondfile[printfilename]{auto-isknee.ly}
-@mudelafile{beam-cross-staff.ly}
+@lilypondfile[printfilename]{triplets.ly}
-The same goes for slurs. They behave decently when broken across
-linebreak.
-@mudelafile{slur-cross-staff.ly}
+@section Slurs
-Tuplets are indicated by a bracket with a number. There should be no
-bracket if there is one beam that matches the length of the tuplet.
-The bracket does not interfere with the stafflines, and the number is
-centered in the gap in the bracket.
+@lilypondfile[printfilename]{slur-nice.ly}
-@mudelafile{tup.ly}
+@lilypondfile[printfilename]{slur-symmetry.ly}
-@section Property details
+@lilypondfile[printfilename]{slur-symmetry-1.ly}
-More specific settings take precendence over less specific settings. The
-second slur has slurDirection set to down, overriding the stemup setting.
+@lilypondfile[printfilename]{slur-broken-trend.ly}
-@mudelafile{generic-property-override.ly}
+@lilypondfile[printfilename]{slur-attachment.ly}
-@section Repeats
+@lilypondfile[printfilename]{slur-attachment-override.ly}
+
+@lilypondfile[printfilename]{slur-stem-broken.ly}
+
+@lilypondfile[printfilename]{drarn-slurs.ly}
+
+@lilypondfile[printfilename]{phrasing-slur.ly}
+
+@lilypondfile[printfilename]{slur-staccato.ly}
-LilyPond has three modes for repeats: folded, unfolded and
-semi-unfolded. Unfolded repeats are fully written out. Semi unfolded
-repeats have the body written and all alternatives sequentially.
-Folded repeats have the body written and all alternatives
-simultaneo.ly. If the number of alternatives is larger than the
-repeat count, the excess alternatives are ignored. If the number of
-alternatives is smaller, the first alternative is multiplied to get to
-the number of repeats.
-Unfolded behavior:
+@section Ties
-@mudelafile{repeat-unfold.ly}
+@lilypondfile[printfilename]{tie.ly}
-Volta (Semi folded) behavior. Voltas can start on non-barline moments.
-If they don't barlines should still be shown.
+@lilypondfile[printfilename]{tie-chord.ly}
-@mudelafile{repeat-volta.ly}
+@lilypondfile[printfilename]{tie-accidental.ly}
-Folded. This doesn't make sense without alternatives, but it works.
+@lilypondfile[printfilename]{tup.ly}
-@mudelafile{repeat-fold.ly}
+@lilypondfile[printfilename]{tuplet-beam.ly}
-Across linebreaks, the left edge of a first and second alternative
-bracket should be equal
+@lilypondfile[printfilename]{tuplet-staffline-collision.ly}
+
+@lilypondfile[printfilename]{tuplet-nest.ly}
+
+
+@section Property details
-@mudelafile{repeat-line-break.ly}
+@lilypondfile[printfilename]{generic-property-override.ly}
+@section Repeats
+
+@lilypondfile[printfilename]{repeat-unfold.ly}
+
+@lilypondfile[printfilename]{repeat-volta.ly}
+
+@lilypondfile[printfilename]{repeat-fold.ly}
+
+@lilypondfile[printfilename]{repeat-line-break.ly}
+
+@lilypondfile[printfilename]{volta-broken-left-edge.ly}
+
@section Lyrics
-Lyrics can be set to a melody automatically. Excess lyrics will be
-dumped. Lyrics will not be set over rests. You can have melismata
-either by setting a property melismaBusy, or by setting
-automaticMelismas (which will set melismas during slurs and ties). If
-you want a different order than first Music, then Lyrics, you must
-precook a chord of staffs/lyrics and label those. Of course
-@code{\rhythm} ignores any other rhythms in the piece. Hyphens and
-extenders do not assume anything about lyric lengths, so they continue
-to work.
+@lilypondfile[printfilename]{lyric-combine.ly}
-@mudelafile{lyric-combine.ly}
+@lilypondfile[printfilename]{lyrics-multi-stanza.ly}
-@section Multiple notes
+@lilypondfile[printfilename]{lyric-phrasing.ly}
-Rests should not collide with beams, stems and noteheads. Rests may
-be under beams. Rests should be move by integral number of spaces
-inside the staff, and by half spaces outside. Notice that the half
-and whole rests just outside the staff get ledger lines in different
-cases.
-@mudelafile{rest-collision.ly}
-Normal collisions. We have support for polyphony, where the
-middle voices are horizontally shifted.
+@section Multiple notes
-@mudelafile{collisions.ly}
+@lilypondfile[printfilename]{rest-collision.ly}
-The number of stafflines of a staff can be set with the property
-numberOfStaffLines. Ledger lines both on note heads and rests are
-adjusted. Barlines also are adjusted.
+@lilypondfile[printfilename]{collisions.ly}
+@lilypondfile[printfilename]{collision-dots.ly}
-@mudelafile{number-staff-lines.ly}
+@lilypondfile[printfilename]{collision-mesh.ly}
-@section Spacing
+@lilypondfile[printfilename]{number-staff-lines.ly}
-In a limited number of cases, LilyPond corrects for optical spacing
-effects. In this example, space for opposite pointed stems is adjusted
-@mudelafile{stem-spacing.ly}
-If there are accidentals in the music, we add space, but the space
-between note and accidentals is less than between the notes with the
-same value. Clef changes also get extra space, but not as much as
-barlines.
+@section Spacing
+@lilypondfile[printfilename]{stem-spacing.ly}
-Even if a line is very tightly spaced, there will still be room
-between prefatory matter and the following notes. The space after the
-prefatory is very rigid. In contrast, the space before the barline
-must stretch like the space within the measure.
+@lilypondfile[printfilename]{spacing-tight.ly}
-Tight:
+@lilypondfile[printfilename]{spacing-natural.ly}
-@mudelafile{spacing-tight.ly}
+@lilypondfile[printfilename]{spacing-loose.ly}
-Natural:
+@lilypondfile[printfilename]{spacing-accidental.ly}
-@mudelafile{spacing-natural.ly}
+@lilypondfile[printfilename]{spacing-accidental-staffs.ly}
-Loose:
+@lilypondfile[printfilename]{lyrics-bar.ly}
-@mudelafile{spacing-loose.ly}
+@lilypondfile[printfilename]{non-empty-text.ly}
-Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
-lyrics don't collide with barlines.
-@mudelafile{lyrics-bar.ly}
-@section Global stuff
+@section PianoStaff
-Breaks can be encouraged and discouraged using @code{\break} and
-@code{\nobreak}. They are abbrevs for @code{\penalty} commands.
+@lilypondfile[printfilename]{beam-cross-staff.ly}
-@mudelafile{break.ly}
+@lilypondfile[printfilename]{slur-cross-staff.ly}
+@lilypondfile[printfilename]{percent-repeat.ly}
-Markings that are attached to (invisible) barlines are
-delicate: the are attached to the rest of the score without the score
-knowing it. Consequently, they fall over often.
+@lilypondfile[printfilename]{auto-change.ly}
-@mudelafile{bar-scripts.ly}
+@lilypondfile[printfilename]{follow-thread.ly}
-Staff margins are also markings attached to barlines. They should be
-left of the staff, and be centered vertically wrt the staff. They may
-be on normal staffs, but also on compound staffs, like the PianoStaff
-@mudelafile{staff-margin.ly}
-Breathing signs, also used for phrasing, do normally not influence
-global spacing -- only if space gets tight, notes are shifted to make
-room for the breathing sign. Breathing signs break beams running
-through their voice. In the following example, the notes in the first
-two measures all have the same distance from each other:
+@section Global stuff
-@mudelafile{breathing-sign.ly}
+@lilypondfile[printfilename]{break.ly}
-Hara kiri staffs kill themselves if they are empty. This example really
-contains two staffs, but the second contains only spaces, and is
-therefore removed.
+@lilypondfile[printfilename]{bar-number.ly}
-@mudelafile{hara-kiri-short.ly}
+@lilypondfile[printfilename]{span-bar.ly}
+@lilypondfile[printfilename]{bar-scripts.ly}
-Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and
-26pt staffheight. Sizes of the text fonts and symbol fonts are made
-to match the staff dimensions.
+@lilypondfile[printfilename]{staff-margin.ly}
-@mudelafile[nofly]{size11.ly}
+@lilypondfile[printfilename]{breathing-sign.ly}
-@mudelafile[nofly]{size13.ly}
+@lilypondfile[printfilename]{hara-kiri-short.ly}
-@mudelafile[nofly]{size16.ly}
+@lilypondfile[printfilename]{part-combine.ly}
-@mudelafile[nofly]{size20.ly}
-@mudelafile[nofly]{size23.ly}
+@lilypondfile[printfilename,nofragment]{size11.ly}
-@mudelafile[nofly]{size26.ly}
+@lilypondfile[printfilename,nofragment]{size13.ly}
+@lilypondfile[printfilename,nofragment]{size16.ly}
-@section Clefs and Time Signatures
+@lilypondfile[printfilename,nofragment]{size20.ly}
-The transparent clef should not occupy any space and with style
-@code{fullSizeChanges}, the changing clef should be typeset in full
-size. For octaviated clefs, the ``8'' should appear closely above or
-below the clef respectively. The ``8'' is processed in a convoluted
-way, so this is fragile as well.
+@lilypondfile[printfilename,nofragment]{size23.ly}
-@mudelafile{clefs.ly}
+@lilypondfile[printfilename,nofragment]{size26.ly}
-Key signatures appear on key changes. They may also
-appear without barlines. The restoration accidentals are not printed at
-the start of the line. If @code{createKeyOnClefChange} is set, they're
-also created on a clef change.
-@mudelafile{keys.ly}
+@section Clefs and Time Signatures
-@ignore
-@c the input file is too long and does not test for specific bugs
-
-By default, time signatures are written with two numbers. With style
-``C'', 4/4 and 2/2 are written with their corresponding symbols and
-with style ``old'', 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and
-9/8 are typeset with symbols, all other signatures retain the default
-layout. The style ``1'', gives single number signatures for all
-signatures.
-%
-\mu delafile{time.ly}
-@end ignore
+@lilypondfile[printfilename]{clefs.ly}
+@lilypondfile[printfilename]{keys.ly}
+@lilypondfile[printfilename]{key-signature-scordatura.ly}
@section Hacks and Features
-As a last resort, the placement of items can be adjusted manually, by
-setting the @code{extra-offset} of an output object.
+@lilypondfile[printfilename]{generic-output-property.ly}
+
+@lilypondfile[printfilename]{between-systems.ly}
-@mudelafile{generic-output-property.ly}
+@lilypondfile{molecule-hacking.ly}
@bye