![]() |
GNU LilyPondWelcome to the home of the GNU Music Typesetter |
||||||||||
|
IntroductionThis document tries give 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. Notes and restsRests. 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.
whole and half rests moving outside the staff should get ledger lines
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. Harmonic notes have a different shape and different dimensions. Nevertheless, noteheads in both styles can be combined, on either up or down stems.
There is limited support for mensural notation: note head shapes are available. Mensural stems are centered on the note heads, both for up and down stems.
Ez-notation prints names in note heads.
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.
Accidentals work: the second note does not get a sharp. The third and fourth show forced and courtesy accidentals.
Multiple measure rests do not collide with barlines and clefs. They
are not expanded when you set
If
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.
StemsStem 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.
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.
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.
Similarly, if
ScriptsThe staccato dot (and all scripts with follow-into-staff set), must not be on staff lines.
Arpeggios are supported, both cross-staff and broken single staff.
Simple glissando lines between notes are supported. The first two glissandi are not consecutive. The engraver does no time-keeping, so it involves some trickery to get < { s8 s8 s4 } { c4 \gliss d4 } > working correctly.
DynamicsDynamics appear below or above the staff. If multiple dynamics are linked with (de)crescendi, they should be on the same line. Isolated dynamics may be forced up or down.
Hairpin dynamics start under notes if there are no text-dynamics. If there are text dynamics, the hairpin does not run into them.
Broken crescendi should look be open on one side.
Crescendi may start off-notes. In that case, they should not collapse into flat lines.
Chord namesChord names are generated from a list pitches, and are customisable from guile. For some unlogical names, guile customisation is used by default.
property chordChanges: only display chord names when there's a change in the chords scheme, but always display the chord name after a line break.
Grace notesGrace notes are typeset as an encapsulated piece of music. You can
have beams, notes, chords, stems etc. within a Grace notes without beams should have a slash, if
BeamsBeaming 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.
Beams should behave reasonably well, even under extreme circumstances. Stems may be short, but noteheads should never touch the beam. Note that under normal circumstances, these beams would get knees here Beam.auto-knee-gap was set to false.
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
The first two a8 notes should not be beamed. Also, no automatic beaming accross bar lines.
Beams over rests.
beams should look the same
There are several ways to calculate the direction of a beam
We should see: up down down up up down
One automatic knee
Two automatic knees
Simple beams. This broke somewhere < 1.3.110
SlursSlurs should look nice and symmetric. The curvature may increase only to avoid noteheads, and as little as possible. Slurs never run through noteheads or stems.
Across line breaks, slurs behave nicely. On the left, they extend to just after the preferatory matter, and on the right to the end of the staff. A slur should follow the same vertical direction it would have in unbroken state.
Slurs should be attached to note heads, except when they would collide with beams. Also see: ophee-slurs.
In some cases, you may want to set slur attachments by hand.
Trend of broken slur with user-overridden stem attachment should also follow the same vertical direction it would have had in unbroken state.
Slurs can be forced to always attach to note heads.
Slurs play well with phrasing slur.
Manual hack for slur and staccato.
TiesTies are strictly horizontal. They are placed in between note heads. The horizontal middle should not overlap with a staffline.
When tieing chords, the outer slurs point outwards, the inner slurs
point away from the center of the staff. Override with
When tieing notes with accidentals across a bar boundary, the accidental must not be drawn on the note in the next bar. Unless the tie crosses a line break, in which case the accidental is repeated if it would be different from an untied note. The next note of the same pitch in this next 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. Pitches can be verified by printing them with the
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.
In combination with a beam, the bracket of the tuplet bracket is removed. This only happens if there is one beam, as long as the bracket.
Horizontal tuplet brackets are shifted vertically to avoid staff line collisions.
Manual hack for nested tuplets
Property detailsMore specific settings take precendence over less specific settings. The second slur has slurDirection set to down, overriding the stemup setting.
RepeatsLilyPond 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:
Volta (Semi folded) behavior. Voltas can start on non-barline moments. If they don't barlines should still be shown.
Folded. This doesn't make sense without alternatives, but it works.
Across linebreaks, the left edge of a first and second alternative bracket should be equal
Broken volta spanners behave correctly at left edge in all cases.
LyricsLyrics 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
Lyrics syllables are aligned according to punctuation. Stanza and stz set stanza numbers.
Lyric phrasing We find start and end of phrases, and align lyrics of multiple stanzas accordingly. Also, lyrics at start of melismata should be left aligned. (is that only lyrics that are followed by `__'? Because that seems to be the case now - jcn) | | | | | x| x| x| x| x| 1: Start sentence melisma end. 2: x x x______ x Only lyrics that are followed by '__' while there's a melisma, are left-aligned, in this case the third x.
Multiple notesRests 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.
Normal collisions. We have support for polyphony, where the middle voices are horizontally shifted.
collision resolution tries to put notes with dots on the right side.
The number of stafflines of a staff can be set. Ledger lines both on note heads and rests are adjusted. Barlines also are adjusted.
SpacingIn a limited number of cases, LilyPond corrects for optical spacing effects. In this example, space for opposite pointed stems is adjuste
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. 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. Tight:
Natural:
Loose:
Adding a
Text is set with empty horizontal dimensions. The boolean property textNonEmpty is used to respect the horizontal size of text.
PianoStaffBeams 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.
The same goes for slurs. They behave decently when broken across linebreak.
Measure and beat repeats are supported.
Auto change piano staff switches voices between up and down staffs automatically rests are switched along with the coming note.
Theads can be traced automagically when they switch staffs by setting
property
Global stuffBreaks can be encouraged and discouraged using
Bar number settable and padding adjustable.
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.
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
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:
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. Also, any staff brackets and braces are removed.
In orchestral scores and hymns, voices are traditionally combined onto one staff. LilyPond has a part combiner, that combines or separates two voices according to actual rhythm and pitch. User-defined texts such as "solo" and "à2" are typeset automagically, as appropriate.
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.
Clefs and Time SignaturesThe transparent clef should not occupy any space and with style
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
Key signatures can be set per pitch
individually. This can be done bby setting
Hacks and FeaturesAs a last resort, the placement of grobs can be adjusted manually, by
setting the
The same mechanism can be used to force pagebreaks.
You can write molecule callbacks in Scheme, thus providing custom glyphs for notation elements. A simple example is adding parentheses to existing molecule callbacks. The parenthesized beam is less successful due to implementation of the Beam. The note head is also rather naive, since the extent of the parens are also not seen by accidentals.
|
||||||||||
Go back to index of LilyPond.
Please send GNU LilyPond questions and comments to gnu-music-discuss@gnu.org. Please send comments on these web pages to (address unknown) Copyright (c) 1997--2001 Han-Wen Nienhuys and Jan Nieuwenhuizen. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. |
This page was built from LilyPond-1.4.2 by