X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=Documentation%2Fregression-test.tely;h=fb74d544cd7f4df50ccf882d9fab572320f18a2d;hb=005f1b6ee133fc90fd0f31acdeeb76bba62c058a;hp=51cc4d1460f073d1d0fc635e655af67188bdf33c;hpb=b638d530ac5a32a832646cdd2b680ce52d0764f0;p=lilypond.git diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 51cc4d1460..fb74d544cd 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -2,400 +2,356 @@ @setfilename regression-test.info @settitle LilyPond Regression test +@html + +@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]{multi-measure-rest.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]{mm-rests2.ly} -@mudelafile{multi-measure-rest.ly} +@lilypondfile[printfilename]{rest-pitch.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. +@section Accidentals -@mudelafile{mm-rests2.ly} +Accidentals are currently in a development stage. -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. +@lilypondfile[printfilename]{accidental.ly} -@mudelafile{double-single-acc.ly} +@lilypondfile[printfilename]{accidental-single-double.ly} -@section Stems +@lilypondfile[printfilename]{accidentals.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]{accidental-octave.ly} -@mudelafile{stem-tremolo.ly} +@lilypondfile[printfilename]{accidental-voice.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. +@section Stems + +@lilypondfile[printfilename]{stem-tremolo.ly} -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. +@lilypondfile[printfilename]{chord-tremolo.ly} -@mudelafile{stem-direction.ly} +@lilypondfile[printfilename]{stem-direction.ly} -Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}. +@lilypondfile[printfilename]{stem-direction-down.ly} -@mudelafile{stem-direction-down.ly} @section Scripts -The staccato dot (and all scripts with follow-into-staff set), must -not be on staff lines. +@lilypondfile[printfilename]{staccato-pos.ly} + +@lilypondfile[printfilename]{arpeggio.ly} + +@lilypondfile[printfilename]{glissando.ly} + +@lilypondfile[printfilename]{fingering.ly} + +@section Dynamics -@mudelafile{staccato-pos.ly} +@lilypondfile[printfilename]{dynamics-line.ly} -Dynamics appear below or above the staff. If multiple dynamics are -linked with (de)crescendi, they should be on the same line. +@lilypondfile[printfilename]{hairpin-ending.ly} -@mudelafile{dyn-line.ly} +@lilypondfile[printfilename]{dynamics-broken-hairpin.ly} + +@lilypondfile[printfilename]{dynamics-unbound-hairpin.ly} + +@lilypondfile[printfilename]{pedal.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} + +@section Figured bass -@mudelafile{chord-names.ly} +@lilypondfile[printfilename]{figured-bass.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. +@lilypondfile[printfilename]{grace.ly} -@mudelafile{grace.ly} +@lilypondfile[printfilename]{grace-bar-line.ly} +@lilypondfile[printfilename]{grace-nest2.ly} -@section Beams, slurs and other spanners +@lilypondfile[printfilename]{grace-nest3.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-nest4.ly} -@mudelafile{beaming.ly} +@lilypondfile[printfilename]{grace-nest5.ly} -Beams should behave reasonably well, even under extreme circumstances. -Stems may be short, but noteheads should never touch the beam. +@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} +@lilypondfile[printfilename]{grace-bar-number.ly} -Slurs should look nice and symmetric. The curvature may increase -only to avoid noteheads, and as little as possible. -@mudelafile{slur-symmetry.ly} -@mudelafile{slur-symmetry-1.ly} +@section Beams -Ties are strictly horizontal. They are placed in between note heads. -The horizontal middle should not overlap with a staffline. +@lilypondfile[printfilename]{beaming.ly} -@mudelafile{tie.ly} +@lilypondfile[printfilename]{beam-concave.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]{beam-extreme.ly} -@mudelafile{tie-chord.ly} +@lilypondfile[printfilename]{beam-position.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-center-slope.ly} -Pitches can be verified by printing them with the @code{NoteNames} context. -@mudelafile{tie-accidental.ly} +@lilypondfile[printfilename]{auto-beam-bar.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]{beam-over-barline.ly} -@mudelafile{beam-cross-staff.ly} +@lilypondfile[printfilename]{beam-rest.ly} -The same goes for slurs. They behave decently when broken across -linebreak. +@lilypondfile[printfilename]{beam-length.ly} -@mudelafile{slur-cross-staff.ly} +@lilypondfile[printfilename]{beam-dir-function.ly} -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]{auto-knee.ly} -@mudelafile{tup.ly} +@lilypondfile[printfilename]{auto-isknee.ly} -@section Property details +@lilypondfile[printfilename]{triplets.ly} -More specific settings take precendence over less specific settings. The -second slur has slurDirection set to down, overriding the stemup setting. +@lilypondfile[printfilename]{beaming-ternary-metrum.ly} -@mudelafile{generic-property-override.ly} +@section Slurs -@section Repeats +@lilypondfile[printfilename]{slur-nice.ly} + +@lilypondfile[printfilename]{slur-symmetry.ly} + +@lilypondfile[printfilename]{slur-symmetry-1.ly} + +@lilypondfile[printfilename]{slur-broken-trend.ly} + +@lilypondfile[printfilename]{slur-attachment.ly} + +@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} + + +@section Ties + +@lilypondfile[printfilename]{tie.ly} + +@lilypondfile[printfilename]{tie-busy-grobs.ly} + +@lilypondfile[printfilename]{tie-chord.ly} + +@lilypondfile[printfilename]{tie-accidental.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. +@lilypondfile[printfilename]{tup.ly} -Unfolded behavior: +@lilypondfile[printfilename]{tuplet-beam.ly} -@mudelafile{repeat-unfold.ly} +@lilypondfile[printfilename]{tuplet-staffline-collision.ly} -Volta (Semi folded) behavior. Voltas can start on non-barline moments. -If they don't barlines should still be shown. +@lilypondfile[printfilename]{tuplet-nest.ly} + + +@section Property details + +@lilypondfile[printfilename]{generic-property-override.ly} -@mudelafile{repeat-volta.ly} -Folded. This doesn't make sense without alternatives, but it works. -@mudelafile{repeat-fold.ly} +@section Repeats + +@lilypondfile[printfilename]{repeat-unfold.ly} -Across linebreaks, the left edge of a first and second alternative -bracket should be equal +@lilypondfile[printfilename]{repeat-volta.ly} -@mudelafile{repeat-line-break.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} + +@lilypondfile[printfilename]{lyrics-multi-stanza.ly} + +@lilypondfile[printfilename]{lyric-phrasing.ly} + -@mudelafile{lyric-combine.ly} @section Multiple notes -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. +@lilypondfile[printfilename]{rest-collision.ly} -@mudelafile{rest-collision.ly} +@lilypondfile[printfilename]{collisions.ly} -Normal collisions. We have support for polyphony, where the -middle voices are horizontally shifted. +@lilypondfile[printfilename]{collision-dots.ly} -@mudelafile{collisions.ly} +@lilypondfile[printfilename]{collision-mesh.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]{number-staff-lines.ly} +@lilypondfile[printfilename]{staff-tweak.ly} -@mudelafile{number-staff-lines.ly} @section Spacing -In a limited number of cases, LilyPond corrects for optical spacing -effects. In this example, space for opposite pointed stems is adjusted +@lilypondfile[printfilename]{spacing-accidental.ly} -@mudelafile{stem-spacing.ly} +@lilypondfile[printfilename]{spacing-accidental-staffs.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. +@lilypondfile[printfilename]{spacing-folded-clef.ly} +@lilypondfile[printfilename]{spacing-ended-voice.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-stem-direction.ly} -Tight: +@lilypondfile[printfilename]{spacing-stem-same-direction.ly} -@mudelafile{spacing-tight.ly} +@lilypondfile[printfilename]{spacing-individual-tuning.ly} -Natural: +@lilypondfile[printfilename]{spacing-note-flags.ly} -@mudelafile{spacing-natural.ly} +@lilypondfile[printfilename]{spacing-rest.ly} -Loose: +@lilypondfile[printfilename]{spacing-short-notes.ly} -@mudelafile{spacing-loose.ly} +@lilypondfile[printfilename]{spacing-grace-duration.ly} -Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that -lyrics don't collide with barlines. +@lilypondfile[printfilename]{lyrics-bar.ly} -@mudelafile{lyrics-bar.ly} +@lilypondfile[printfilename]{spacing-knee.ly} -@section Global stuff -Breaks can be encouraged and discouraged using @code{\break} and -@code{\nobreak}. They are abbrevs for @code{\penalty} commands. -@mudelafile{break.ly} +@lilypondfile[printfilename]{non-empty-text.ly} +@lilypondfile[printfilename]{prefatory-spacing-matter.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]{spacing-clef-first-note.ly} -@mudelafile{bar-scripts.ly} +@lilypondfile[printfilename]{spacing-bar-stem.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} +@c @l ilypondfile[printfilename]{spacing-tight.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: +@c @l ilypondfile[printfilename]{spacing-natural.ly} -@mudelafile{breathing-sign.ly} +@c @l ilypondfile[printfilename]{spacing-loose.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. -@mudelafile{hara-kiri-short.ly} +@section PianoStaff -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]{beam-cross-staff.ly} -@mudelafile[nofly]{size11.ly} +@lilypondfile[printfilename]{slur-cross-staff.ly} -@mudelafile[nofly]{size13.ly} +@lilypondfile[printfilename]{percent-repeat.ly} -@mudelafile[nofly]{size16.ly} +@lilypondfile[printfilename]{auto-change.ly} -@mudelafile[nofly]{size20.ly} +@lilypondfile[printfilename]{follow-thread.ly} -@mudelafile[nofly]{size23.ly} -@mudelafile[nofly]{size26.ly} +@section Global stuff -@section Clefs and Time Signatures +@lilypondfile[printfilename]{break.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]{bar-number.ly} -@mudelafile{clefs.ly} +@lilypondfile[printfilename]{span-bar.ly} +@lilypondfile[printfilename]{bar-scripts.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. +@lilypondfile[printfilename]{staff-margin.ly} -@mudelafile{keys.ly} +@lilypondfile[printfilename]{breathing-sign.ly} -@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]{hara-kiri-short.ly} + +@lilypondfile[printfilename]{part-combine.ly} +@lilypondfile[printfilename]{font-magnification.ly} +@lilypondfile[printfilename]{system-extents.ly} + +@lilypondfile[printfilename,nofragment]{size11.ly} + +@lilypondfile[printfilename,nofragment]{size13.ly} + +@lilypondfile[printfilename,nofragment]{size16.ly} + +@lilypondfile[printfilename,nofragment]{size20.ly} + +@lilypondfile[printfilename,nofragment]{size23.ly} + +@lilypondfile[printfilename,nofragment]{size26.ly} + + + +@section Clefs and Time Signatures + +@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