From: fred Date: Tue, 26 Mar 2002 22:48:44 +0000 (+0000) Subject: lilypond-1.2.13 X-Git-Tag: release/1.5.59~1749 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3638005050088031515abfc91a13d175dd2c6efe;p=lilypond.git lilypond-1.2.13 --- diff --git a/Documentation/metadoc/test.tely b/Documentation/metadoc/test.tely deleted file mode 100644 index e22d3c3541..0000000000 --- a/Documentation/metadoc/test.tely +++ /dev/null @@ -1,24 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@setfilename foo -@settitle foo - -@c @node Top -@c @top - -@menu -* foo:: bar -@end menu - -@node foo -@section foo - -@mudela[verbatim, intertext="produces this music:"] -\include "paper16.ly" -\score{ - \notes\relative c'{ - a b c - } -} -@end mudela - -@bye diff --git a/Documentation/user/glossary.texi b/Documentation/user/glossary.texi deleted file mode 100644 index f58c2e69a2..0000000000 --- a/Documentation/user/glossary.texi +++ /dev/null @@ -1,2066 +0,0 @@ - -This is a list of musical terms, along with explanations and -translations. It is not complete, so additions are welcome. -Languages are marked thusly: - -@itemize -@item NL - Nederlands -@item UK - British English -@item F - French -@item I - Italian -@end itemize - -@table @strong - -@item Enharmonic Comma - -F: comma enharmonique - - -@ignore - -F: doigté de pédale - -F: doigté, D: Fingersatz - -F: indication de pédale - -F: pointillés. - -@end ignore - -@item A -F: la, D: a. - - - - -@item accent -F: accent, D: Akzent NL: accent I: accento. - - - -@item accidental -F: altération accidentelle, D: Vorzeichen, Versetzungszeichen, Akzidenz NL: toevallig teken, I: accidento. - - - -@item adjacent keys -F: tons voisins. - - - -@item alto -F: alto, D: Alt, NL: alt. - - - -@item ancient form??? (diatonic minor scale) -F: forme du mode mineur ancien. - - - -@item appoggiatura -F: appogiature, ports de voix, notes d'agrèment, D: langer Vorschlag, NL: lange voorslag, I: appogiature. - - - -@item arbitrary number of bars' rest -F: bâton de pause, NL: meermaats rust. - - - -@item arpeggio -F: arpège, arpègement, D: Arpeggio, Brechungen, NL: gebroken akoord, I: arpeggio. - - - -@item artificial measure -F: mesure artificielle. - - - -@item artificial rest -F: respiration. - - - -@item ascending interval - -F: intervalle ascendant, NL: stijgend interval. - - -@item augmented (interval) - -F: augmenté (intervalle), D: übermäßig (Intervall), NL: overmatig interval. - - -@item autograph - -1. A manuscript in the composer's own hand. 2. Music prepared for -photoreproduction by freehand drawing, with only the aid of a -straightedge ruler and T-square, which attempts to emulate -engraving. This required more skill than engraving. - -@item B - -F: si, D: h. - - - - - -@item backfall; forefall - -F: accent, chute, port de voix, D: Vorschlag, NL: korte voorslag, I: appogiature. - - - - - -@item bar line - -F: barre (de mesure), D: Taktstrich, NL: maatstreep, I: stanghetta. - - - - - -@item bar; measure - -F: mesure, D: Takt, NL: maat, maatstreep. - - - - - -@item baritone - -F: bariton, D: Bariton, NL: bariton. - - - -@item F clef - -D: F-Schlüssel, NL: F sleutel. - -A clef shaped as a curl with two dots. The position between the dots is the line of the F below central C. - - - - -@item bass clef - -F: clé de fa, D: Bass-Schlüssel, NL: bas sleutel, I: chiave di basso. - -A clef setting with central C on the first top ledger line. - - - - -@item bass - -F: basse, D: Bass, NL: bas. - - - - - -@item beam - -F: barre, D: Balken, NL: waardestreep/balk, I: barra. - - - - - -@item beat - -F: temps, D: Takt(-schlag), NL: tel. - - - - - -@item brace - -F: accolade, D: Klammer, NL: accolade, haak, I: accolada. - -Symbol at the start of a system that connects staffs. - - - - -@item brass - - D: Blechbläser, NL: koper (blazers). - - - - - -@item alto clef - -F: clé d'ut, D: Altschlüssel, NL: alt sleutel, I: chiave di tenore. - -Clef setting that has central C on the middle staff line. - - - - -@item C clef - - NL: C sleutel. . - -A clef symbol that looks like a horizontally mirrored 3. It indicates the position of the central C. Used in different positions. - - - - -@item C - -F: do, D: c, NL: C. - - - - - -@item C - -F: ut, D: c. - - - - - -@item cadence - -F: cadence, D: Kadenz, NL: cadens. - - - - - -@item cadenza - -F: fioriture, D: Kadenz, NL: cadens, I: cadenza. - - - - - -@item cent - - D: Cent, NL: cent. - -1/1200 of an octave (1/100 of an equally tempered semitone) - - - - -@item chain of trills - -F: chaîne de trilles, NL: triller. - - - - - -@item character - -F: caractère. - - - - - -@item chevron - -F: chevron. - - - - - -@item chord - -F: accord, D: Akkord, NL: akkoord. - - - - - -@item chromatic scale - -F: gamme chromatique, D: Chromatische Tonleiter, NL: chromatische toonladder. - - - - - -@item chromatic semitone - -F: demi-ton chromatique, NL: chromatische halve toon. - - - - - -@item chromatic transposition - -F: transposition chromatique. - - - - - -@item chromatic type - -F: genre chromatique. - - - - - -@item church mode; ecclesiastical mode - -F: mode ecclésiastique, D: Kirchentonart, NL: kerk toonladder. - - - - - -@item clef - -F: clé, D: Notenschlüssel, NL: sleutel, I: la chiave (pl. le chiavi). - - - - - -@item comma - -F: comma, D: Komma, NL: komma. - -Difference in pitch of a note when the note is derived from a different tuning system. - - - - -@item compound interval - -F: intervalle composé, D: Komplementärintervall. - - - - - -@item compound measure - -F: mesure composée, NL: samengestelde maat. - - - - - -@item conjunct movement - -F: mouvement conjoint. - - - - - -@item consonant interval; consonance - -F: consonance, D: Konsonanz, NL: consonant. - - - - - -@item contralto - -F: contralto, D: Alt(-stimme), alt-. - - - - - -@item contro-time - -F: contre-temps. - -@item Copying, Music - -A music copyist did fast freehand scores and parts on preprinted staff -lines for performance. Some of their conventions (e.g.: the placement of -noteheads on stems) varied slightly from those of engravers. Some of -their practices (not that) were superior and could well be adopted by -music typesetters. This also required more skill than engraving. - - -@item crescendo - -F: crescendo, D: Crescendo, I: crescendo. - -written with an extended opening angular bracket, indicates increasing volume - - - - -@item cue-notes - - D: Stichnoten, NL: stichnoten. - -In an orchestral part, notes for a different instrument that hint when to start playing. Usually printed in smaller type. - - - - -@item D - -F: ré, D: d. - - - - - -@item dash over/below - - I: pizzicato. - -With plucked strings - - - - -@item decrescendo - - D: Decrescendo, I: decrescendo. - -written with an extended closing angular bracket, indicates decreasing volume - - - - -@item degree [of the scale] - -F: degré [de la gamme], D: Stufe [der Tonleiter], NL: trap [van de toonladder]. - - - - - -@item descending interval - -F: intervalle descendant, NL: dalend interval. - - - - - -@item diatonic major scale - -F: gamme diatonique majeure, D: Diatonische Durtonleiter, NL: diatonische majeur toonladder. - - - - - -@item diatonic minor scale - -F: gamme diatonique mineure, D: Diatonische Molltonleiter. - - - - - -@item diatonic semitone - -F: demi-ton diatonique, NL: diatonische halve toon. - - - - - -@item diatonic type - -F: genre diatonique, D: diatonisch. - - - - - -@item diatonic - -F: diatonique, NL: diatonisch. - -A diatonic scale is a scale consisting of whole and half tones. - - - - -@item diminished (interval) - -F: diminué (intervalle), D: vermindert (Intervall), NL: verminderd (interval). - - - - - -@item disjunct movement - -F: mouvement disjoint. - - - - - -@item dissonant interval; dissonance - -F: dissonance, D: Dissonanz, NL: dissonant interval; dissonant. - - - - - -@item dominant ninth chord - -F: accord de neuvième dominante, NL: dominant noon akkoord. - - - - - -@item dominant seventh chord - -F: accord de septième dominante, D: Dominantseptakkord, NL: dominant septiem akkoord. - - - - - -@item dominant - -F: dominante, D: Dominante, NL: dominant. - -A tone that creates tension;the fifth degree of the scale. - - - - -@item dorian mode - - D: Dorische Tonart, NL: dorische toonladder. - -Mode obtained by raising the sixth in minor mode. A Dorian scale can be played from D to D with no sharps or flats. - - - - -@item dot (augmentation dot) - -F: point, D: Punkt (Verlängerungspunkt), NL: punt, I: punto. - -An augmentation dot after note adds multiplies the duration by one and a half. - - - - -@item dot and curved line combined - -F: point et liaison combinés. - - - - - -@item dot over/below - - D: Staccato, NL: staccato, I: staccato. - -Play each note short. - - - - -@item dot - -F: point, D: Punkt, NL: punt. - - - - - -@item dotted note - -F: note pointée, D: punktierte Note. - - - - - -@item double appoggiatura - -F: appogiature double. - - - - - -@item double bar line - -F: double barre, D: Doppel(takt)strich, NL: dubbele streep, I: doppia barra. - -Indicates the end of a section within a movement. - - - - -@item double dotted note - -F: note doublement pointée, D: doppel-punktierte Note. - - - - - -@item double flat - -F: double bémol, D: Doppel-Be, NL: dubbelmol, I: doppio bemolle. - - - - - -@item double sharp - -F: double dièse, D: Doppelkreuz, NL: dubbelkruis, I: doppio diesis. - -Raise pitch by two semitones - - - - -@item double trill - -F: trille double, D: Doppeltriller. - -A trill on a chord - - - - -@item double triplet - -F: double triolet, D: Doppeltriole, NL: dubbele triool. - - - - - -@item double whole note - - UK: breve, D: Brevis, NL: brevis, I: breve. - -Note during twice as long as a whole note. Mainly used in pre-1650 music. - - - - -@item duple meter - -F: temps binaire, NL: tweedelige maatsoort. - - - - - -@item duplet - -F: duolet, D: Duole, NL: duool. - - - - - -@item duration - -F: durée, D: Dauer, Länge, NL: duur, lengte. - - - - - -@item E - -F: mi, D: e. - - - - - -@item eighth note - -F: croche, UK: quaver, D: Achtelnote, NL: achtste noot. - - - - - -@item eighth rest - -F: demi-soupir, UK: quaver rest, D: Achtelpause, NL: achtste rust. - - - - - -@item engraving - -D: Notenstechen, NL: steken. - -Engraving means incising or etching a metal plate for -printing. Photoengraving means drawing music with ink in a manner -similar to drafting or engineering drawing, using similar tools. - -The traditional process of music printing is done through: cutting in a -plate of metal. Now also the term for the art of music typography. - - - - -@item enharmonic - -F: enharmonique, D: enharmonisch, NL: enharmonisch. - -Two notes, intervals, or scales are enharmonic if they have different names but sound the same. Examples: C sharp and D flat, diminished fourth and major third - - - - -@item equal temperament - -F: tempérament égal, NL: getempereerde stemming. - -Tuning system in which each semitone is precisely 100 cents. - - - - -@item essential alteration - -F: altération essentielle. - - - - - -@item expression mark - -F: signe d'expressoin, D: Vortragszeichen, NL: voordrachtsteken, I: segno d'espressione. - - - - - -@item extension of interval - -F: extension d'intervalle. - - - - - -@item F - -F: fa, D: f. - - - - - -@item fermata - -F: pauses, D: Fermate, NL: fermate, I: fermata. - -Prolonged sound or silence of indefinite duration - - - - -@item fifth - -F: quinte, D: Quinte, NL: kwint. - - - - - -@item flag; hook; tail; pennant - -F: crochet, D: Fähnchen, NL: vlaggetje, I: coda uncinata. - -Ornament at the end of the stem of a note. The number of flags determines the lengths of notes shorter than a quarter note. - - - - -@item flat - -F: bémol, D: Be, NL: mol, I: bemolle. - -Lower pitch by a semitone - - - - -@item four-bar rest - -F: bâton de pause. - - - - - -@item fourth - -F: quarte, D: Quarte, NL: kwart. - - - - - -@item G - -F: sol, D: g. - - - - - -@item glissando - -F: glissement, D: Glissando, NL: glissando, I: glissando. - -Letting the pitch slide fluently from one note to the other - - - - -@item graces - -F: petites notes, D: Verzierungen, Manieren, NL: versieringen, I: appogiature. - - - - - -@item grand staff - - NL: piano systeem. - -A combination of two staffs with a brace. Usually used for piano music. - - - - -@item half note - -F: blanche, UK: minim, D: Halbe Note, NL: halve noot. - - - - - -@item half rest - -F: demi-pause, UK: minim rest, D: Halbe Pause, NL: halve rust. - - - - - -@item harmonic cadence - -F: cadence harmonique, NL: harmonische cadens. - -Sequence of chords that terminate a musical phrase or section. - - - - -@item harmonic form (diatonic minor scale) - -F: forme harmonique. - - - - - -@item harmonic interval - -F: intervalle harmonique, D: Harmonisches Intervall. - - - - - -@item incomplete measure - -F: mesure incomplète. - - - - - -@item interval - -F: intervalle, D: Intervall, NL: interval. - -Difference in pitch between two notes - - - - -@item inversion of interval - -F: renversement d'intervalle, NL: interval inversie. - - - - - -@item irregular contro-time - -F: contre-temps irrégulier. - - - - - -@item irregular group - -F: groupe irrégulier. - - - - - -@item irregular measure - -F: mesure irrégulière. - - - - - -@item irregular syncopation - -F: syncope irrégulière, NL: onregelmatige syncope. - - - - - -@item just intonation - - I: . - -Tuning system in which the notes are obtained by adding and subtracting natural fifths and thirds. - - - - -@item key signature - -F: armure, armature [de la clé], signes des accidentals, D: Vorzeichen, NL: toonsoort (voortekens), I: segni di chiave. - - - - - -@item kind of note - -F: figure de note. - - - - - -@item kind of rest - -F: figure de silence. - - - - - -@item leading note - -F: sensible. - - - - - -@item ledger line; leger line - -F: ligne supplémentaire, D: Hilfslinien, Kopfstriche (?), NL: hulplijntje, I: lineette. - -A ledger line is an extension of the staff. - - - - -@item legato curve - -F: liaison rythmique, NL: legato boog. - - - - - -@item lilypond - -F: étang de lis, UK: lily pond, D: Lilienteich, NL: lelievijver, I: stagno del giglio. - -A pond with lilies floating in it, also the name of a music typesetter. - - - - -@item line - -F: ligne, D: Linie, NL: lijn. - - - - - -@item long appoggiatura - -F: appogiature longue. - - - - - -@item lower number - -F: chiffre inférieur. - - - - - -@item major (interval) - -F: majeur (intervalle), D: groß (Intervall), NL: groot (interval). - - - - - -@item major mode - -F: mode majeur, D: Dur. - - - - - -@item meantone temperament - -F: tempérament mésotonique. - -Tuning based on a fifth that is 16 cents smaller than the natural fifth. - - - - -@item mediant - -F: médiante, NL: mediant. - -The third degree of a scale - - - - -@item melodic cadence - -F: cadence mélodique, NL: cadens. - -A free-form section at the end of a solo-concerto, where the soloist can demonstrate his/her virtuosity. - - - - -@item melodic form (diatonic minor scale) - -F: forme mélodique. - - - - - -@item meter; time - -F: mètre, D: Takt, Metrum, NL: maatsoort. - -A recurring pattern of stress - - - - -@item metronome - -F: métronome, D: Metronom, NL: metronoom. - -Device which sounds a steady beat - - - - -@item metronomic indication - -F: indication métronomique, D: Metronomangabe. - -Exact tempo indication (in beats per minute). Also denoted by M.M. (Mälzel's Metronom) - - - - -@item mezzo-soprano - -F: mezzo-soprano, D: Mezzosopran. - - - - - -@item middle C - -F: do central, D: eingestrichenes c, NL: centrale C. - -First C below the 440 Hz A. - - - - -@item minor (interval) - -F: mineur (intervalle), D: klein (Intervall). - - - - - -@item minor mode - -F: mode mineur, D: Moll. - - - - - -@item modal note - -F: note modale. - - - - - -@item mode - -F: mode, D: Geschlecht. - - - - - -@item modulation - -F: modulation, D: Modulation, NL: modulatie. - - - - - -@item mordent - -F: mordant, pincè, D: Pralltriller, Mordent, NL: mordent, I: mordente. - - - - - -@item motive - -F: incise, D: Motiv, NL: motief. - - - - - -@item musical ladder - -F: échelle musicale. - - - - - -@item mixolydian mode - - D: Mixolydische Tonart, NL: Mixolydische toonladder. - -Mode obtained by lowering the seventh in major. A mixolydian scale can be obtained by playing G to G with no sharps or flats. - - - - -@item natural sign - -F: bécarre, D: Auflösungszeichen, NL: herstellingsteken, I: bequadro. - -Do not play the following note flat or sharp. - - - - -@item ninth - - D: None, NL: noon. - - - - - -@item note head - - D: Notenkopf, NL: noot balletje. - - - - - -@item note - -F: note, D: Note, NL: noot, I: nota. - - - - - -@item octave line - -F: échelle d'octave. - - - - - -@item octave line - -F: clé d'octave. - - - - - -@item octave sign - -F: octave, D: Oktave, I: ottava. - - - - - -@item octave - -F: octave, D: Oktave, NL: octaaf. - - - - - -@item ornament; embellishment; accessory - -F: agrèment, ornement, D: Verzierungen, I: fiorette, fioriture, -abbellimenti. - - -@item ossia - -NL: alternatief - -Ossia (otherwise) marks an alternative. It is an added staff or piano -score, usually only a few measures long, which presents another version -of the music, for small hands, for example. - - -@item part - -NL: partij. - - - - - -@item pause - -F: pause, D: Luftpause. - - - - - -@item pause - -F: point d'orgue. - - - - - -@item perfect (interval) - -F: juste (intervalle), D: rein (Intervall), NL: rein (interval). - - - - - -@item perfect major chord - -F: accord parfait majeur. - - - - - -@item perfect minor chord - -F: accord parfait mineur. - - - - - -@item phrase member - -F: membre de phrase. - - - - - -@item phrase - -F: phrase, D: Phrase, NL: frase, zin. - - - - - -@item phrasing - -F: phrasé. - - - - - -@item pitch pipe; tuning fork - -F: diapason, D: Stimmgabel, NL: stemfluitje; stemvork. - - - - - -@item pitch - -F: hauteur, D: Tonhöhe, NL: toonhoogte. - - - - - -@item Pythagorean comma - -F: comma pythagoricien, D: Pythagoräisches Komma, NL: komma van Pythagoras. - -A sequence of fifths starting on C eventually circles back to C (B sharp), but this B sharp is 24 cents higher than C. This gap is the Pythagorean comma. - - - - -@item quadruplet - -F: quartolet, NL: kwartool. - - - - - -@item quarter note - -F: noire, UK: crotchet, D: Viertelnote, NL: kwartnoot. - - - - - -@item quarter rest - -F: soupir, UK: crotchet rest, D: Viertelpause, NL: kwart rust. - - - - - -@item register - -F: registre, D: Register, NL: register. - - - - - -@item regular contro-time - -F: contre-temps régulier. - - - - - -@item regular syncopation - -F: syncope régulière. - - - - - -@item relative scales - -F: gammes relatives, tons relatifs. - - - - - -@item repeat - -F: barre de reprise, D: Wiederholung, NL: herhaling. - - - - - -@item rest - -F: silence. - - - - - -@item rest - -F: soupir, D: Pause, NL: rust, I: pausa. - - - - - -@item return sign - -F: renvoi, NL: herstellingsteken. - - - - - -@item rhythm - -F: rythme, D: Rhythmus, NL: ritme. - - - - - -@item rhythmic curve - -F: courbe rythmique. - - - - - -@item scale - -F: gamme, D: Tonleiter, NL: toonladder. - - - - - -@item score - -F: partition, D: Partitur, NL: partituur. - - - - - -@item second - -F: seconde, D: Sekunde, I: secunde. - - - - - -@item semitone - -F: demi-ton, D: Halbton, NL: halve toon. - - - - - -@item seventh - -F: septième, D: Septime, NL: septiem, I: septime. - - - - - -@item sextuplet - -F: sextolet, D: Sextole, NL: sextool. - - - - - -@item sextuplet - -F: sixain, NL: sextool. - - - - - -@item shading signs - -F: signes indicateurs de nuance. - - - - - -@item shading - -F: nuance, D: Nuance. - - - - - -@item sharp - -F: dièse, D: Kreuz (um Halbton erhöht), NL: kruis. - - - - - -@item short appoggiatura - -F: appogiature brève. - - - - - -@item simple appoggiatura - -F: appogiature simple. - - - - - -@item simple interval - -F: intervalle simple. - - - - - -@item simple measure - -F: mesure simple. - - - - - -@item sixteenth note - -F: double croche, UK: semiquaver, D: Sechzehntelnote, NL: zestiende noot. - - - - - -@item sixteenth rest - -F: quart de soupir, UK: semiquaver rest, D: Sechzehntelpause, NL: zestiende rust. - - - - - -@item sixth - -F: sixte, D: Sexte, NL: sext. - - - - - -@item sixty-fourth note - -F: quadruple croche, UK: hemidemisemiquaver, D: Vierundsechzigstelnote, NL: vierenzestigste noot. - - - - - -@item sixty-fourth rest - -F: seizième de soupir, UK: hemidemisemiquaver rest, D: Vierundsechzigstelpause. - - - - - -@item slur - -F: liaison, coulé, D: Bindungszeichen, Bindebogen, NL: binding, bindingsboog, I: legatura. - - - - - -@item soprano - -F: soprano, D: Sopran, NL: sopraan. - - - - - -@item space - -F: espace. - - - - - -@item staff - -F: portée, D: Noten(linien)system, NL: (noten)balk; partij. - -pl staves or staffs - - - - -@item stem - -F: queue, D: Stiel, Hals, NL: stok, I: asta, gamba. - - - - - -@item strings - - D: Streicher, NL: strijkers. - - - - - -@item strong beat - -F: temps fort, NL: thesis. - - - - - -@item subdominant - -F: sous-dominante, D: Subdominante. - -The fourth degree of the scale - - - - -@item submediant - - I: . - -The sixth scale degree - - - - -@item subtonic - -F: sous-tonique, D: Subtonika. - -The seventh degree of the scale - - - - -@item superdominant - -F: sus-dominante. - -The sixth scale degree - - - - -@item supertonic - -F: sus-tonique. - -The second scale degree - - - - -@item syncopation; upbeat - -F: syncope, D: Synkope, NL: syncope. - - - - - -@item syntonic comma - -F: comma syntonique, NL: komma van Didymos, syntonische komma. - -Difference between the natural third and the third obtained by Pythagorean tuning, euqal to 22 cents. - - - - -@item system - -F: système, D: System, NL: systeem, I: sitema. - - - - - -@item tempo indication - -F: signes de temps, D: Zeitmaß, Tempobezeichnung, NL: tempo aanduiding, I: segno di tempo. - - - - - -@item tempo; movement - -F: mouvement, D: Tempo. - - - - - -@item tenor - -F: ténor, D: Tenor. - - - - - -@item tenth - - D: Dezime, NL: deciem, I: decime. - - - - - -@item tetrachord - -F: tétracorde, D: Vierklang. - - - - - -@item third - -F: tierce, D: Terz, NL: terts. - - - - - -@item thirty-second note - -F: triple croche, UK: demisemiquaver, D: Zweiunddreißigstelnote, NL: 32e noot. - - - - - -@item thirty-second rest - -F: huitième de soupir, UK: demisemiquaver rest, D: Zweiunddreißigstelpause, NL: 32e rust. - - - - - -@item tie - -F: liaison, D: Haltebogen, NL: overbinding, I: legatura. - -A curve that shows the prolongation (as opposed to the repetition fo a note) - - - - -@item time signature - -F: chiffrage (chiffres indicateurs), signe de valeur, D: Taktvorzeichnung, Taktvorzeichen, NL: maatsoort, I: segni di tempo. - - - - - -@item tonal note - -F: note tonale. - - - - - -@item tonality - -F: tonalité, D: Tonalität, NL: tonaliteit. - - - - - -@item tone - -F: ton, D: Ton, NL: toon. - - - - - -@item tonic - -F: tonique, D: Tonika, NL: tonica. - - - - - -@item transposition - -F: transposition, D: Transposition, NL: transpositie. - -Shifting a melody up or down in pitch, while keeping the same relative pitches. - - - - -@item G clef - - NL: G sleutel. - -A clef symbol with a loop at the top and a spiral in the center. The center of the spiral indicates the G above central C. - - - - -@item treble clef - -F: clé de sol, D: Violinschlüssel, NL: viool sleutel, I: chiave di violino. - -Clef setting where the second lowest line is the G above central C. - - - - -@item tremolo - -F: trèmolo, D: Tremolo, NL: tremolo, I: tremolo. - - - - - -@item trill; shake - -F: trille, tremblement, battement (cadence), D: Triller, NL: triller, I: trillo. - - - - - -@item triple meter - -F: temps ternaire, NL: driedelige maatsoort. - - - - - -@item triplet - -F: triolet, D: Triole. - - - - - -@item tritone - -F: triton, D: Tritonus. - - - - - -@item turn; gruppetto - -F: brisè, groupe, doublè, grupetto, D: Doppelschlag, NL: dubbelslag, I: grupetto. - - - - - -@item two-bar rest - -F: bâton de pause. - - - - -@item underline over/below - -F: portamento, D: Portato. - - - - - -@item unison - -F: unisson, D: Unisono, I: unisono. - -Different instruments playing exactly the same melody. - - - - -@item unit of beat - -F: unité de temps. - - - - - -@item unit of measure - -F: unité de mesure. - - - - - -@item upbeat; arsis - - D: Auftakt. - - - - - -@item upper number - -F: chiffre supérieur. - - - - - -@item voice - -F: voix, D: Stimme, NL: stem. - - - -@item weak beat - -F: temps faible, NL: arsis. - - - - - -@item whole note - -F: ronde, UK: semibreve, D: Ganze Note, NL: hele noot. - - - - - -@item whole rest - -F: pause, UK: semibreve rest, D: Ganze Pause. - - - - - -@item woodwind - -D: Holzbläser, NL: houtblazers. - - -@end table - diff --git a/Documentation/user/mudela.tely b/Documentation/user/mudela.tely deleted file mode 100644 index ca4f316001..0000000000 --- a/Documentation/user/mudela.tely +++ /dev/null @@ -1,4515 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@setfilename mudela.info -@settitle Reference Manual - -@node Top, , , (dir) -@top -@menu -* Tutorial:: a tutorial introduction to lilypond -* Reference Manual:: Reference Manual -* Glossary:: A dictionary of musical terms. -@end menu - -@macro keyindex {word} -@cindex \word\ - -@end macro - -@macro indexcode {word} -@cindex \word\ - -@end macro - -@node Tutorial, , , Top -@menu -* Introduction:: Introduction -* The first tune:: The first tune -* Lyrics and chords:: Lyrics and chords -* Piano music:: Piano music -* end of tutorial:: The end -@end menu -@chapter Tutorial - -@node Introduction, , , Tutorial -@section Introduction - - -LilyPond prints music from a specification that you, the user, supply. -You have to give that specification using a @emph{language}. This -document is a gentle introduction to that language, which is called -Mudela, an acronym of Music Definition Language. - -This tutorial will demonstrate how to use Mudela by presenting -examples of input along with resulting output. We will use English -terms for notation. In case you are not familiar with those, you may -consult the glossary that is distributed with LilyPond. - -The examples discussed are included in the distribution, in the -subdirectory @file{input/tutorial/}. It is recommended that you -experiment with writing Mudela input yourself, to get a feel for -how LilyPond behaves. - -@node The first tune, , , Tutorial -@section The first tune - - -To demonstrate what LilyPond input looks like, we start off with a -full fledged, yet simple example. It is a convoluted version -of the famous menuet in J. S. Bach's @emph{Klavierbuechlein}. - -@mudela[verbatim] -% lines preceded by a percent are comments. -\include "paper16.ly" -\score { - \notes - \relative c'' \sequential{ - \time 3/4; - \key g; - - \repeat "volta" 2 { - d4 g,8 a b c d4 g, g | - e'4 c8 d e fis g4 g, g | - c4 d8()c b a( )b4 c8 b a g | - a4 [b8 a] [g fis] g2. | - } - - b'4 g8 a b g - a4 d,8 e fis d | - g4 e8 fis g d cis4 b8 cis a4 | - a8-. b-. cis-. d-. e-. fis-. - g4 fis e | - fis a, r8 cis8 - d2.-\fermata - \bar "|."; - } - \paper { - % standard settings are too wide for a book - linewidth = 14.0 \cm; - } -} -@end mudela - -Enter it (or copy it, the filename is @file{menuet.ly}), compile it -with LilyPond and view the output. Details of this procedure may vary -from system to system. To create the output, one would issue the -command `@code{ly2dvi menuet}'. @file{ly2dvi} is a program that does -the job of running LilyPond and TeX, handling of titles and -adjusting of page margins. - -If all goes well, the file @file{menuet.dvi} will be created. -To view this output, issue the command `@code{xdvi menuet}'. - -Now that we are familiar with the procedure of producing output, we -will analyse the input, line by line. -@ignore -Let's try to redo this -@example - - % lines preceded by a percent are comments. - -@end example -The percent sign, `@code{%}', introduces a line comment. If you want to -make larger comments, you can use block comments. These are delimited -by `@code{%@{}' and `@code{%@}}' -@end ignore -@multitable @columnfractions .60 .39 -@item -@noindent -@c @example urg: no tt font -@c @exdent % lines preceded by a percent are comments. -@exdent @code{% lines preceded by a percent are comments.} -@c @end example -@tab -The percent sign, `@code{%}', introduces a line comment. If you -want to make larger comments, you can use block comments. These -are delimited by `@code{%@{}' and `@code{%@}}' -@end multitable -@example - - \input "paper16.ly" - -@end example -By default, LilyPond will use definitions for a 20 -point@footnote{A point is the standard measure of length for -printing. One point is 1/72.27 inch.} high staff. We want smaller -output (16 point staff height), so we must import the settings for -that size, which is done.@example - - \score @{ - -@end example - A mudela file combines music with directions for outputting that -music. The music is combined with the output directions by putting -them into a @code{\score} block. -@example - - \notes - -@end example - This makes LilyPond ready for accepting notes. -@example - - \relative c'' - -@end example - As we will see, pitches are combinations of octave, note name and -chromatic alteration. In this scheme, the octave is indicated by -using raised quotes (`@code{'}') and ``lowered'' quotes (commas: -`@code{,}'). The central C is denoted by @code{c'}. The C one octave -higher is @code{c''}. One and two octaves below the central C is -denoted by @code{c} and @code{c,} respectively. - -For pitches in a long piece you might have to type many quotes. To -remedy this, LilyPond has a ``relative'' octave entry mode. In this -mode, octaves of notes without quotes are chosen such that a note is -as close as possible (graphically, on the staff) to the the preceding -note. If you add a high-quote an extra octave is added. The lowered -quote (a comma) will subtract an extra octave. Because the first note -has no predecessor, you have to give the (absolute) pitch of the note -to start with.@example - - \sequential @{ - -@end example - What follows is sequential music, i.e., -notes that are to be played and printed after each other.@example - - \time 3/4; - -@end example - This command changes the time signature of the current piece: a 3/4 -sign is printed. This command is also used to generate bar lines in -the right spots.@example - - \key g; - -@end example - This command changes the current key to G-major. Although this -command comes after the @code{\time} command, in the output, the key -signature comes before the time signature: LilyPond knows about music -typesetting conventions. @example - - \repeat "volta" 2 - -@end example - This command tells LilyPond that the following piece of music must -be played twice; @code{"volta"} volta brackets should be used for -alternatives---if there were any. -@example - - @{ - -@end example -The subject of the repeat is again sequential music. Since -@code{\sequential} is such a common construct, a shorthand is provided: -just leave off @code{\sequential}, and the result is the same. @example - - d4 - -@end example - This is a note with pitch @code{d} (determined up to octaves). The -relative music was started with a @code{c''}, so the real pitch of this -note is @code{d''}. The @code{4} designates the duration of the note -(it is a quarter note). @example - - a b - -@end example -These are notes with pitch @code{a} and @code{b}. Because their -duration is the same as the @code{g}, there is no need to enter the -duration (You may enter it anyway, eg. @code{a4 b4}) @example - - d4 g, g | - -@end example - Three more notes. The `@code{|}' character is a `barcheck'. When -processing the music, LilyPond will verify that barchecks are found at -the start of a measure. This can help you track down errors. - - So far, no notes were chromatically altered. Here is the first one -that is: @code{fis}. Mudela by default uses Dutch note names, and -``Fis'' is the Dutch note name for ``F sharp''. However, there is no -sharp sign in the output. The program keeps track of key signatures, -and will only print accidentals if they are needed. -@example - - c8 d e fis - -@end example -LilyPond guesses were beams can be added to eighth and shorter notes. -In this case, a beam over 4 eighths is added. -@example - - c4 d8( )c b a( )b4 c8 b a g | - -@end example - The next line shows how to make a slur: -the beginning and ending note of the slur is marked with an opening and -closing parenthesis respectively. In the line shown above this is -done for two slurs. Slur markers (parentheses) are between -the notes.@example - - a4 [b8 a] [g fis] - -@end example -Automatic beaming can be overridden by inserting beam marks -(brackets). Brackets are put around notes you want beamed.@example - - g2. | - -@end example -A duration with augmentation dot is notated -with the duration number followed by a period.@example - - @} - -@end example - This ends the sequential music to be repeated. LilyPond will typeset -a repeat bar. @example - - cis'4 b8 cis a4 | - -@end example - This line shows that Lily will print an accidental if that is -needed: the first C sharp will be printed with an accidental, the -second one without. @example - - a8-. b-. cis-. d-. e-. fis-. - -@end example -You can enter articulation signs either in a verbose form using a -shorthand. Here we demonstrate the shorthand: it is formed by a dash -and the the character for the articulation to use, e.g. `@code{-.}' for -staccato as shown above. @example - - fis a, r8 cis8 - -@end example - -Rests are denoted by the special notename `@code{r}'. You can also enter -an invisible rest by using the special notename `@code{s}'. -@example - - d2.-\fermata - -@end example - All articulations have a verbose form, like @code{\fermata}. The -command `@code{\fermata}' is not part of the core of the language (most -of the other discussed elements are), but it is a shorthand for a more -complicated description of a fermata. @code{\fermata} names that -description and is therefore called an @emph{identifier}. @example - - @} - -@end example - -Here the music ends. -@example - - \paper @{ - linewidth = 14.0\cm; - @} - -@end example -This specifies a conversion from music to notation output. Most of -the details of this conversions (font sizes, dimensions, etc.) have -been taken care of, but to fit the output in this document, it has -to be smaller. We do this by setting the line width to 14 centimeters -(approximately 6 inches). -@example - - @} - -@end example -The last brace ends the @code{\score} block. - -There are two things to note here. The format contains musical -concepts like pitches and durations, instead of symbols and positions: -the input format tries to capture the meaning of @emph{music}, and not -notation. Therefore Second, the format tries to be @emph{context-free}: -a note will sound the same regardless of the current time signature, -the key, etc. - -The purpose of LilyPond is explained informally by the term `music -typesetter'. This is not a fully correct name: not only does the -program print musical symbols, it also makes esthetic decisions. All -symbols and their placement is @emph{generated} from a high-level musical -description. In other words, LilyPond would be best -described by `music compiler' or `music to notation compiler'. - -@node Lyrics and chords, , , Tutorial -@section Lyrics and chords - -In this section we show how to typeset a song of unknown -origin.@footnote{The author would welcome information about the origin -of this song.}. - -@example -\header @{ - title = "The river is flowing"; - composer = "Traditional (?)"; -@} -\include "paper16.ly" -melody = \notes \relative c' @{ - \partial 8; - g8 | - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|."; -@} - -text = \lyrics @{ - The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri -- ver is flo -- wing down to the sea. -@} - -accompaniment =\chords @{ - r8 - c2-3- f-3-.7 d-min es4 c8-min r8 - c2-min f-min7 g-7^3.5 c-min @} - -\score @{ - \simultaneous @{ -% \accompaniment - \context ChordNames \accompaniment - - \addlyrics - \context Staff = mel @{ - \property Staff.noAutoBeaming = "1" - \property Staff.automaticMelismata = "1" - \melody - @} - \context Lyrics \text - @} - \midi @{ @} - \paper @{ linewidth = 10.0\cm; @} -@} -@end example - - -The result would look this@footnote{The titling and font size shown -may differ, since the titling in this document is not generated by -@file{ly2dvi}.}. - -@center @strong{The river is flowing} -@center Traditional - -@mudela[center] -\header { - title = "The river is flowing"; - composer = "Traditional (?)"; -} -\include "paper16.ly" -melody = \notes \relative c' { - \partial 8; - g8 | - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|."; -} - -text = \lyrics { - The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri -- ver is flo -- wing down to the sea. -} - -accompaniment =\chords { - r8 - c2-3- f-3-.7 d-min es4 c8-min r8 - c2-min f-min7 g-7^3.5 c-min } - -\score { - \simultaneous { -% \accompaniment - \context ChordNames \accompaniment - - \addlyrics - \context Staff = mel { - \property Staff.noAutoBeaming = "1" - \property Staff.automaticMelismata = "1" - \melody - } - \context Lyrics \text - } - \midi { } - \paper { linewidth = 10.0\cm; } -} -@end mudela - -Again, we will dissect the file line by line.@example - - \header @{ - -@end example -Information about the music you are about to typeset goes into a -@code{\header} block. The information in this block is not used by -LilyPond, but it is included in the output. @file{ly2dvi} uses this -information to print titles above the music. -@example - - title = "The river is flowing"; - composer = "Traditional (?)"; -@end example -the @code{\header} block contains assignments. An assignment starts -with a string. (which is unquoted, in this case). Then comes the -equal sign `@code{=}'. After the equal sign comes the expression you -want to store. In this case, you want to put in strings. The -information has to be quoted here, because it contains spaces. The -assignment is finished with a semicolon.@example - - \include "paper16.ly" - -@end example -Smaller size for inclusion in a book.@example - - melody = \notes \relative c' @{ - -@end example -The structure of the file will be the same as the previous one, a -@code{\score} block with music in it. To keep things readable, we will -give names to the different parts of music, and use the names to -construct the music within the score block. - -@example - - \partial 8; - -@end example - -The piece starts with an anacrusis of one eighth. @example - - c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g | - c4 c8 d [es () d] c4 | d4 es8 d c4. - \bar "|."; - -@end example -We use explicit beaming. Since this is a song, we will turn automatic -beams off, and use explicit beaming where needed.@example - - @} - -@end example -This ends the definition of @code{melody}. Note that there are no -semicolons after assignments at top level.@example - - text = \lyrics @{ - -@end example -Another identifier assignment. This one is for the lyrics. -Lyrics are formed by syllables that have duration, and not by -notes. To make LilyPond parse words as syllables, switch it into -lyrics mode with @code{\lyrics}. Again, the brace after @code{\lyrics} -is a shorthand for @code{\sequential @{}. @example - - The4 ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the - ri- ver is flo- __ wing down to the sea. - @} - -@end example -The syllables themselves are separated by spaces. You can get syllable -extenders by entering `@code{__}', and centered hyphens with -`@code{-}@code{-}'. We enter the syllables as if they are all quarter notes -in length (hence the @code{4}), and use a feature to align the -syllables to the music (which obviously isn't all quarter notes.) -@example - - accompaniment =\chords @{ - -@end example -We'll put chords over the music. There is a special mode (analogous -to @code{\lyrics} and @code{\notes} mode) where you can give the names -of the chords you want, instead of the notes comprising the chord. -@example - - r8 - -@end example -There is no accompaniment during the anacrusis.@example - - c2-3- f-3-.7 - -@end example -A chord is started by the tonic of the chord. The -first one lasts a half note. An unadorned note creates a major -triad, while a minor triad is wanted. @code{3-} modifies the third to -be small. @code{7} modifies (adds) a seventh, which is small by default -to create the @code{f a c es} chord. Multiple modifiers must be -separated by a dot.@example - - d-min es4 c8-min r8 - -@end example -Some modifiers have predefined names, eg. @code{min} is the same as -@code{3-}, so @code{d-min} is a minor @code{d} chord.@example - - c2-min f-min7 g-7^3.5 c-min @} - -@end example -A named modifier @code{min} and a normal modifier @code{7} do not have -to be separated by a dot. Tones from a chord are removed with chord -subtractions. Subtractions are started with a caret, and they are -also separated by dots. In this example, @code{g-7^3.5} produces a -minor seventh. The brace ends the sequential music. @example - - \score @{ - \simultaneous @{ - -@end example -We assemble the music in the @code{\score} block. Melody, lyrics and -accompaniment have to sound at the same time, so they should be -@code{\simultaneous}.@example - - %\accompaniment - -@end example -Chord mode generates notes grouped in @code{\simultaneous} music. If -you remove the comment sign, you can see the chords in normal -notation: they will be printed as note heads on a separate -staff. @example - - \context ChordNames \accompaniment - -@end example -Normally, the notes that you enter are transformed into note heads. -The note heads alone make no sense, they need surrounding information: -a key signature, a clef, staff lines, etc. They need @emph{context}. In -LilyPond, these symbols are created by objects called `interpretation -context'. Interpretation contexts only exist during a run of -LilyPond. Interpretation contexts that are for printing music (as -opposed to playing music) are called `notation context'. - -By default, LilyPond will create a Staff contexts for you. If you -would remove the @code{%} sign in the previous line, you can see that -mechanism in action. - -We don't want default contexts here, because we want names, not note -heads. An interpretation context can also created upon explicit -request. The keyword for such a request is @code{\context}. It takes -two arguments. The first is the name of a interpretation context. -The name is a string, it can be quoted with double quotes). The -second argument is the music that should be interpreted in this -context. For the previous line, we could have written @code{\context -Staff \accompaniment}, and get the same effect.@example - - \addlyrics - -@end example -The lyrics need to be aligned with the melody. This is done by -combining both with @code{\addlyrics}. @code{\addlyrics} takes two -pieces of music (usually a melody and lyrics, in that order) and -aligns the syllables of the second piece under the notes of the -first piece. If you would reverse the order, the notes would be -aligned on the lyrics, which is not very useful. (Besides, it looks -silly.)@example - - \context Staff = mel @{ - -@end example -This is the argument of @code{\addlyrics}. We instantiate a -@code{Staff} context explicitly: should you chose to remove comment -before the ``note heads'' version of the accompaniment, the -accompaniment will be on a nameless staff. The melody has to be on a -different staff as the accompaniment. This is accomplished by giving -the melody staff a different name.@example - - \property Staff.noAutoBeaming = "1" - -@end example -An interpretation context has variables that tune its behaviour. One -of the variables is @code{noAutoBeaming}. If set and non-zero (i.e., -true) LilyPond will not try to put automatic beaming on the current -staff.@example - - \property Staff.automaticMelismata = "1" - -@end example -Similarly, we don't want to print a syllable when there is -a slur. This sets up the Staff context to signal slurs while -@code{\addlyrics} is processed. @example - - \melody - @} - -@end example -Finally, we put the melody on the current staff. Note that the -@code{\property} directives and @code{\melody} are grouped in sequential -music, so the property settings are done before the melody is -processed. @example - - \context Lyrics \text - -@end example -The second argument of @code{\addlyrics} is the text. The text also -should not land on a Staff, but on a interpretation context for -syllables, extenders, hyphens etc. This context is called -Lyrics.@example - - @} - -@end example -This ends @code{\simultaneous}.@example - - \midi @{ @} - -@end example -This makes the music go to a MIDI file. MIDI is great for -checking music you enter. You listen to the MIDI file: if you hear -something unexpected, it's probably a typing error. @code{\midi} is an -`output definition', a declaration that specifies how to output music -analogous to @code{\paper @{ @}}.@example - - \paper @{ linewidth = 10.0\cm; @} - -@end example -We also want notation output. The linewidth is short so the piece -will be set in two lines. @example - - @} - -@end example -End the score block. - -@node Piano music, , , Tutorial -@section Piano music - -Our third subject is a piece piano music. The fragment in the input -file is a piano reduction of the G major Sinfonia by Giovanni Battista -Sammartini. It was composed around 1740. - -@mudela[verbatim] - -\include "paper16.ly"; - -viola = \notes \relative c' \context Voice = viola { - - \property Voice.verticalDirection = \down g'8. b,16 - s1 s2. r4 - g -} - -oboes = \notes \relative c'' \context Voice = oboe { - \stemup s4 g8. b,16 c8 r - \grace \times 2/3 { } - < - { \times 2/3 { a8 g c } \! c2 } - \context Voice = oboeTwo { - \stemdown - \grace { - \property Grace.verticalDirection = \down - [f,16 g] } - f8 e e2 - } > - \stemboth - \grace <)b8. d8.-\trill> | - [ < )f8. a>] <)b,8 d> r [ ] r | - [ < )e8. g>] -} - -hoomPah = \notes \transpose c' { - c8 \translator Staff = top \stemdown - c'8 \translator Staff = bottom \stemup } - -hoomPahHoomPah = { [\hoomPah \hoomPah] } - -bassvoices = \notes \relative c' { - c4 g8. b,16 - \hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah - \stemdown [c8 c'8] r4 - r4 - < {\stemup r2 } - \context Voice = reallyLow {\stemdown g2 ~ | g4 c8 } > -} - -\score { - \context PianoStaff \notes < - \context Staff = top < \time 2/2; - \context Voice = viola \viola - \oboes - > - \context Staff = bottom < \time 2/2; \clef bass; - \bassvoices - > - > - \midi { } - \paper { - indent = 0.0; - linewidth = 15.0 \cm; } -} -@end mudela - -If it looks like incomprehensible gibberish to you@dots{} Then you are -right. The author has doctored this example to have as many quirks in -one system as possible.@example -viola = \notes \relative c' \context Voice = viola @{ -@end example -In this example, you can see multiple parts on a staff. Each part is -associated with one notation context. This notation context handles -stems and dynamics (among others). The name of this context is -@code{Voice}. For each part we have to make sure that there is -precisely one Voice context@footnote{If @code{\context} would not -have been specified explicitly, three @code{Voice} contexts would be -created: one for each note in the first chord.}.@example - -@end example -@code{<} and @code{>} are short hands for @code{\simultaneous @{} and -@code{@}}. So the expression enclosed in @code{<} and @code{>} is a -chord. @code{\f} places a forte symbol under the chord.@example -\property Voice.verticalDirection = \down -@end example -@code{verticalDirection} is a property of the voice context. It -controls the directions of stems, articulations marks and other -symbols. - If @code{verticalDirection} is set to @code{\down} -(identifier for the integer -1) the stems go down, -@code{\up} (identifier for the integer 1) makes the stems go up.@example - g'8. b,16 -@end example -Relative octaves work a little differently with chords. The starting -point for the note following a chord is the first note of the chord. So -the @code{g} gets an octave up quote: it is a fifth above the starting -note of the previous chord (the central C). - -@example -s1 s2. r4 -@end example -@code{s} is a `spacer' rest. It does not print anything, but it does -have the duration of a rest. @example -oboes = \notes \relative c'' \context Voice = oboe @{ -@end example -Now comes a part for two oboes. They play homophonically, so we -print the notes as one voice that makes chords. Again, we insure that -these notes are indeed processed by precisely one context with -@code{\context}.@example -\stemup s4 g8. b,16 c8 r -@end example -@code{\stemup} is an identifier reference. It is shorthand for -@code{\property Voice.verticalDirection = \up}. If possible, you -should use predefined identifiers like these for setting properties. -Your input will be less dependent upon the implementation of LilyPond. -@example -\grace < )d4 f> -@end example -@code{\grace} introduces grace notes. It takes one argument, in this -case a chord. The slur started on the @code{e} of the chord -will be attached to the next note.@footnote{LilyPond will squirm -about unended Slurs. In this case, you can ignore the warning}. -@example -\times 2/3 -@end example -Tuplets are made with the @code{\times} keyword. It takes two -arguments: a fraction and a piece of music. The duration of the -second argument is multiplied by the first argument. Triplets make -notes occupy 2/3 of their notated duration, so in this case the -fraction is 2/3. @example -@{ @} -@end example -The piece of music to be `tripletted' is sequential music containing -three notes. On the first chord (the @code{d}), a crescendo is started -with @code{\<}.@example -< -@end example -At this point, the homophonic music splits into two rhythmically -different parts. We can't use a sequence of chords to enter this, so -we make a `chord' of sequences to do it. We start with the upper -voice, which continues with upward stems: @example - @{ \times 2/3 @{ a8 g c @} \! c2 @} -@end example -The crescendo is ended at the half note by the escaped exclamation -mark `@code{\!}'. @example -\context Voice = oboeTwo @{ -\stemdown -@end example -We can't share stems with the other voice, so we have to create a new -@code{Voice} context. We give it the name @code{oboeTwo} to distinguish -it from the other context. Stems go down in this voice. @example -\grace @{ -@end example -When a grace section is processed, a @code{Grace} context is -created. This context acts like a miniature score of its own. It has -its own time bookkeeping, and you can make notes, beams, slurs -etc. Here fiddle with a property and make a beam. The argument of -@code{\grace} is sequential music.@example -\property Grace.verticalDirection = \down -[f,16 g] @} -@end example -Normally, grace notes are always stem up, but in this case, the upper -voice interferes. We set the stems down here. - -As far as relative mode is concerned, the previous note is the -@code{c'''2} of the upper voice, so we have to go an octave down for -the @code{f}. -@example - - f8 e e2 -@} > -@end example -This ends the two-part section. @example -\stemboth -\grace <)b8. d8.-\trill> | -@end example -@code{\stemboth} ends the forced stem directions. From here, stems are -positioned as if it were single part music. - -The bass has a little hoom-pah melody to demonstrate parts switching -between staffs. Since it is repetitive, we use identifiers:@example -hoomPah = \notes \transpose c' @{ -@end example -Transposing can be done with @code{\transpose}. It takes two -arguments; the first specifies what central C should be transposed to. -The second is the to-be-transposed music. As you can see, in this -case, the transposition is a no-op. Central C is transposed to -central C. - -The purpose of this no-op is circumventing relative mode. Relative -mode can not be used in conjunction with transposition, so relative -mode will leave the contents of @code{\hoomPah} alone. We can use it -without having to worry about getting the motive in a wrong -octave@footnote{@code{hoomPah = \relative @dots{}} would be more -intuitive to use, but that would not let me plug @code{\transpose} -:-).}.@example -c8 \translator Staff = top \stemdown -@end example -We assume that the first note will be put in the lower staff. After -that note we switch to the upper staff with @code{\translator}. To be -precise, this @code{\translator} entry switches the current voice to a -@code{Staff} named @code{top}. So we have to name the upper staff -`@code{top}'. Stem directions are set to avoid interfering with the -oboe voices. @example -c'8 \translator Staff = bottom \stemup @} -@end example -Then a note is put on the upper staff, and we switch again. We have -to name the lower staff `@code{bottom}'. @example -hoomPahHoomPah = @{ [\hoomPah \hoomPah] @} -@end example -Put two of these fragments in sequence, and beam them.@example -bassvoices = \notes \relative c' @{ -c4 g8. b,16 -\hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah -\hoomPahHoomPah -@end example -Entering the bass part is easy: the hoomPahHoomPah variable is -referenced four times.@example -\context Voice = reallyLow @{\stemdown g2 ~ | g4 c8 @} > -@end example -After skipping some lines, we see @code{~}. This mark makes ties.@example -\context PianoStaff -@end example -For piano music, a special context is needed to get cross staff -beaming right. It is called @code{PianoStaff}.@example -\context Staff = bottom < \time 2/2; \clef bass; -@end example -The bottom staff must have a different clef.@example -indent = 0.0; -@end example -To make some more room on the line, the first (in this case the only) -line is not indented. The line still looks is very cramped, but that is due -to the format of this tutorial. - -This example shows a lot of features, but the organisation isn't -perfect. For example, it would be less confusing to use a chord -containing sequential music than a sequence of chords for the oboe -parts. - -[TODO: demonstrate Hara-Kiri with scores and part extraction.] - -@node end of tutorial, , , Tutorial -@section The end - -That's all folks. From here, you can either try fiddling with input -files, or you can read the reference manual. - - - - - - -@node Reference Manual, , , Top -@menu -* Overview:: Overview -* Top level:: Top level -* notenames:: notenames -* Lexical conventions:: Lexical conventions -* notelang:: notelang -* modes:: modes -* Types:: Types -* Music expressions:: Music expressions -* Atomic music expressions:: Atomic music expressions -* atomicmusic:: atomicmusic -* notedesc:: notedesc -* barlines:: barlines -* manualbeam:: manualbeam -* tremolo:: tremolo -* Compound music expressions:: Compound music expressions -* compoundmusic:: compoundmusic -* relative:: relative -* sec-repeats:: sec-repeats -* transpose:: transpose -* Ambiguities:: Ambiguities -* Notation conversion specifics:: Notation conversion specifics -* autobeam:: autobeam -* lyricprint:: lyricprint -* Notation Contexts:: Notation Contexts -* contextselection:: contextselection -* Notation output definitions:: Notation output definitions -* output:: output -* paper:: paper -* papervars:: papervars -* contextdefs:: contextdefs -* engravers:: engravers -* Sound output:: Sound output -* midilist:: midilist -* Pre-defined Identifiers:: Pre-defined Identifiers -* Running LilyPond:: Running LilyPond -@end menu - -@chapter Reference Manual - - - -@node Overview, , , Reference Manual -@section Overview - -This document@footnote{This document has been revised for -LilyPond 1.2.} describes the the GNU LilyPond input format, which is -a language for defining music. We call this language @emph{Music -Definition Language} or @emph{Mudela}, for short.@footnote{If anybody -comes up with a better name, we'd gladly take this. Gourlay already -uses a ``Musical Description Language,'' ISO standard 10743 defines a -``Standard Music Description Language.'' We're not being original -here.} - -@emph{Mudela} is a language that allows you to - -@itemize @bullet - @item create musical expressions by combining pitches, durations - @item output those musical expressions to various formats - @item give those musical expressions and output definitions names, so - you can enter them in manageable chunks. -@end itemize - -@emph{Mudela} aims to define a piece of music completely, both from -typesetting and from a performance point of view. - - - -@node Top level, , , Reference Manual -@section Top level - -@cindex top level - -This section describes what you may enter at top level. - - - -@cindex score definition - -The output is generated combining a music expression with an output -definition. A score block has the following syntax: - -@example - \score @{ @var{musicexpr} @var{outputdefs} @} -@end example - -@var{outputdefs} are zero or more output definitions. If no output -definition is supplied, the default @code{\paper} block will be added. - - - -@cindex header - -@keyindex{header} - -The syntax is - -@example - \header @{ @var{key1} = @var{val1}; - @var{key2} = @var{val2}; @dots{} @} -@end example - -A header describes the file's contents. It can also appear in a -@code{\score} block. Tools like @code{ly2dvi}@indexcode{ly2dvi} can use this -information for generating titles. Key values that are used by -@code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument, -metre, arranger, piece and tagline. - -It is customary to put the @code{\header} at the top of the file. - - -@node notenames, , , Reference Manual - -Note name tables can be specified using - -@example - \notenames@keyindex{notenames} - @{ @var{assignmentlist} @} -@end example - -@var{assignmentlist} is a list of definitions of the form - -@example - @var{name} = @var{pitch} -@end example - -Chord modifiers can be set analogously, with -@code{\chordmodifiers}@keyindex{chordmodifiers}. - -A @code{\paper} block at top level sets the default paper block. A -@code{\midi} block at top level works similarly. - - - -LilyPond contains a Scheme interpreter (the GUILE library) for -internal use. The following commands access the interpreter -directly. - -@example - \scm @keyindex{scm} @var{scheme} ; -@end example - -Evaluates the specified Scheme code. The result is discarded. - -@example -\scmfile@keyindex{scmfile} @var{filename}; -@end example - -Reads Scheme code from the specified file. The result is discarded. - - - -Identifier assignments may appear at top level. Semicolons are -forbidden after top level assignments. - - - -@node Lexical conventions, , , Reference Manual -@section Lexical conventions - -@cindex lexical conventions - - - -@cindex comment - -@indexcode{%} - - -A one line comment is introduced by a `@code{%}' character. -Block comments are started by `@code{%@{}' and ended by `@code{%@}}'. -They cannot be nested. - - - -@cindex keyword - -Keywords start with a backslash, followed by a number of lower case -alphabetic characters. These are all the keywords. - -@example - \accepts - \addlyrics - \alternative - \bar - \breathe - \cadenza - \chordmodifiers - \chords - \clef - \cm - \consists - \consistsend - \context - \duration - \font - \grace - \header - \in - \key - \keysignature - \lyrics - \mark - \midi - \mm - \musicalpitch - \name - \notenames - \notes - \paper - \partial - \penalty - \property - \pt - \relative - \remove - \repeat - \repetitions - \scm - \scmfile - \score - \script - \sequential - \shape - \simultaneous - \skip - \spanrequest - \tempo - \textscript - \time - \times - \translator - \transpose - \type -@end example - - - - -@cindex integer - -Formed from an optional minus sign followed by digits. Arithmetic -operations cannot be done with integers, and integers cannot be mixed -with reals. - - - -@cindex real - - -Formed from an optional minus sign and a sequence of digits followed -by a @emph{required} decimal point and an optional exponent such as -@code{-1.2e3}. Reals can be built up using the usual operations: -`@code{+}@indexcode{+}', `@code{-}@indexcode{-}', `@code{*}@indexcode{*}', and -`@code{/}@indexcode{/}', with parentheses for grouping. - -A real constant can be followed by one of the dimension -keywords: -@cindex dimensions - @code{\mm}@keyindex{mm}, -@code{\pt}@keyindex{pt}, @code{\in}@keyindex{in}, or -@code{\cm}@keyindex{cm}, for millimeters, points, inches and -centimeters, respectively. This converts the number to a real that -is the internal representation of dimensions. - - - -@cindex string - - -Begins and ends with the `@code{"}' character. To include a `@code{"}' -character in a string write `@code{\"}'. Various other backslash -sequences have special interpretations as in the C language. A -string that contains no spaces can be written without the quotes. -See section XREF-modes [FIXME] for details on unquoted strings; their -interpretation varies depending on the situation. Strings can be -concatenated with the `@code{+}' operator. - - -The tokenizer accepts the following commands. They can appear -anywhere. - -@example - \maininput@keyindex{maininput} -@end example - -This command is used in init files to signal that the user file must -be read. This command cannot be used in a user file. - -@example - \include@keyindex{include} @var{file} -@end example - -Include @var{file}. The argument @var{file} may be a quoted string (an -unquoted string will not work here!) or a string identifier. The full -filename including the @file{.ly} extension must be given, - -@example - \version@keyindex{version} @var{string} ; -@end example - -Specify the version of LilyPond that a file was written for. The -argument is a version string in quotes, for example @code{"1.2.0"}. -This is used to detect invalid input, and to aid -@code{convert-mudela}, a tool that automatically upgrades input files. - - - -@cindex other languages - -@node notelang, , , Reference Manual - -Note name definitions have been provided in various languages. -Simply include the language specific init file. For example: -`@code{\include "english.ly"}'. The available language files and the -names they define are: - -@quotation - -@example - Note Names sharp flat -nederlands.ly c d e f g a bes b -is -es -english.ly c d e f g a bf b -s/-sharp -f/-flat -deutsch.ly c d e f g a b h -is -es -norsk.ly c d e f g a b h -iss/-is -ess/-es -svenska.ly c d e f g a b h -iss -ess -italiano.ly do re mi fa sol la sid si -d -b -catalan.ly do re mi fa sol la sid si -d/-s -b -@end example - -@end quotation - -Pitch names can be redefined using the -@code{\notenames}@keyindex{notenames} command, see -subsection XREF-notenames [FIXME]. - - - -@cindex lexical modes - -@cindex modes - -@node modes, , , Reference Manual - -To simplify entering notes, lyrics, and chords, @emph{Mudela} has three -special input modes on top of the default mode. In each mode, words -are identified on the input. If @code{"word"} is encountered, it is -treated as a string. If @code{\word} is encountered, it is treated as -a keyword or as an identifier. The behavior of the modes differs in -two ways: Different modes treat unquoted words differently, and -different modes have different rules for deciding what is a word. - -@table @samp - @item Normal mode. -@cindex mode!normal - - At the start of parsing, @emph{Mudela} is in Normal mode. In Normal - mode, a word is an alphabetic character followed by alphanumeric - characters. If @code{word} is encountered on the input it is - treated as a string. - - @item Note mode. -@cindex mode!note - - Note mode is introduced by the keyword - @code{\notes}@keyindex{notes}. In Note mode, words can only - contain alphabetic characters. If @code{word} is encountered, - LilyPond first checks for a notename of @code{word}. If no - notename is found, then @code{word} is treated as a string. - - Since combinations of numbers and dots are used for indicating - durations, it is not possible to enter real numbers in this mode. - - @item Chord mode. -@cindex mode!chord - - Chord mode is introduced by the keyword - @code{\chords}@keyindex{chords}. It is similar to Note mode, but - words are also looked up in a chord modifier table (containing - @code{maj}, @code{dim}, etc). - - Since combinations of numbers and dots are used for indicating - durations, you can not enter real numbers in this mode. Dashes - and carets are used to indicate chord additions and subtractions, - so scripts can not be entered in Chord mode. - - @item Lyrics mode. -@cindex mode!lyric - - Lyrics mode is introduced by the keyword - @code{\lyrics}@keyindex{lyrics}. This mode has rules that make it - easy to include punctuation and diacritical marks in words. A - word in Lyrics mode begins with: an alphabetic character, - `@code{_}', `@code{?}', `@code{!}', `@code{:}', `@code{'}', the - control characters @code{^A} through @code{^F}, @code{^Q} through - @code{^W}, @code{^Y}, @code{^^}, any 8-bit character with ASCII code - over 127, or a two-character combination of a backslash followed - by one of `@code{`}', `@code{'}', `@code{"}', or - `@code{^}'.@footnote{The purpose of Lyrics mode is that you can - enter lyrics in TeX format or a standard encoding without - needing quotes. The precise definition of this mode indeed is - ludicrous. This will remain so until the authors of LilyPond - acquire a deeper understanding of character encoding, or someone - else steps up to fix this.} - - Subsequent characters of a word can be any character that is not - a digit and not white space. One important consequence of this - is that a word can end with `@code{@}}', which may be confusing if - you thought the closing brace was going to terminate Lyrics - mode.@footnote{LilyPond will issue a warning, though.} Any - `@code{_}' characters which appear in an unquoted word are - converted to spaces. This provides a mechanism for introducing - spaces into words without using quotes. Quoted words can also be - used in Lyrics mode to specify words that cannot be written with - the above rules. Here are some examples. Not all of these words - are printable by TeX. - - - @quotation - -@example -Ah! % a word -2B_||_!2B % not a word because it starts with a digit -``Hello'' % not a word because it starts with ` -_ _ _ _ % 4 words, each one a space -@end example - - @end quotation - - Since combinations of numbers and dots are used for indicating - durations, you can not enter real numbers in this mode. -@end table - -It is possible to create words that break the rules by prefixing them -with the dollar sign `@code{$}@indexcode{$}'. Regardless of the context, a -word beginning with `@code{$}' extends until the next white space -character. Such words can contain numbers (even in Note mode), or -other forbidden characters. The dollar sign can be used to create -and access identifiers that could not otherwise be used.@footnote{Use -of `@code{$}' hampers readability and portability to future LilyPond -versions, thus the use of the dollar sign is discouraged.} - - - -@node Types, , , Reference Manual -@section Types - -@cindex types and identifiers - -@emph{Mudela} has a limited set of types: - -@itemize @bullet - @item integers - @item reals - @item strings - @item music expressions - @item durations of notes and rests (specified with - @code{\notenames}@keyindex{notenames}) - @item note name tables - @item context definitions, part of output definitions. See - section XREF-contextdefs [FIXME] for more information - @item output definitions (like @code{\paper}@keyindex{paper} blocks - and @code{\midi}@keyindex{midi} blocks) - @item score definitions (@code{\score}@keyindex{score} blocks) -@end itemize - -Type is a syntactical property: @emph{Mudela} has no real type system, -so there is no support for generic expressions, functions, or user -defined types. For the same reason, it is not possible to mix reals -and integers in arithmetic expressions, and ``type -errors'' -@cindex type error - (e.g., using a string identifier to -initialize a @code{\paper}@keyindex{paper} block) will yield a ``parse -error''. - -Identifiers allow objects to be assigned to names. To assign an -identifier, you use `@var{name}=@var{value}' and to refer to an -identifier, you preceed its name with a backslash: -`@code{\}@var{name}'. Identifier assignments must appear at top level -in the @emph{Mudela} file. Semicolons are forbidden after assignments -appearing at top level but they are obligatory after assignments -appearing in the @code{\paper} block, see Section XREF-paper [FIXME]. - -@var{value} is any of the types listed above. - -An identifier can be created with any string for its name, but you -will only be able to refer to identifiers whose names begin with a -letter, being entirely alphanumeric. It is impossible to refer to an -identifier whose name is the same as the name of a keyword. - -The right hand side of an identifier assignment is parsed completely -before the assignment is done, so it is allowed to redefine an -identifier in terms of its old value, e.g. - -@example - foo = \foo * 2.0 -@end example - -When an identifier is referenced, the information it points to is -copied. Therefore it only makes sense to put identifiers for -translators, output definitions, and @code{\score}@keyindex{score} -blocks as the first item in a block. For this reason, if you -reference a @code{\foo} variable in a @code{\foo} block, it must be the -first item in the list following @code{\foo}.@footnote{@code{\paper@{\one -\two@}} does not make sense, because the information of @code{\two} -would overwrite the information of @code{\one}, thereby making the -reference to the first identifier useless.} - - - -@node Music expressions, , , Reference Manual -@section Music expressions - -@cindex music expressions - -Music in @emph{Mudela} is entered as a music expression. Notes, rests, -lyric syllables are music expressions (the atomic -expressions) -@cindex atomic music expressions -, and you can combine -music expressions to form new ones. This example forms a compound -expressions out of the quarter @code{c} note and a @code{d} -note: - -@example -\sequential @{ c4 d4 @} -@end example - -The meaning of this compound expression is to play the `@code{c}' -first, and then the `@code{d}' (as opposed to playing them -simultaneously, for instance). - -Atomic music expression are discussed in -subsection XREF-atomicmusic [FIXME]. Compound music expressions are -discussed in subsection XREF-compoundmusic [FIXME]. - - - -@node Atomic music expressions, , , Reference Manual -@section Atomic music expressions -@node atomicmusic, , , Reference Manual - - - -@cindex pitch - -@cindex duration - - -The syntax for pitch specification is - - -@example - \musicalpitch@keyindex{musicalpitch} @{ @var{octave} @var{note} @var{shift} @} -@end example - -@var{octave} is specified by an integer, zero for the octave -containing middle C. @var{note} is a number from 0 to 7, with 0 -corresponding to C and 7 corresponding to B. The shift is zero for a -natural, negative to add flats, or positive to add sharps. - -In Note and Chord mode, pitches may be designated by names. See -section XREF-notelang [FIXME] for pitch names in different languages. - -The syntax for duration specification is - -@example - \duration@keyindex{duration} - @{ @var{length} @var{dotcount} @} -@end example - -@var{length} is the negative logarithm (base 2) of the duration: -1 is a half note, 2 is a quarter note, 3 is an eighth -note, etc. The number of dots after the note is given by -@var{dotcount}. - -In Note, Chord, and Lyrics mode, durations may be designated by -numbers and dots. See Section XREF-notelang [FIXME] for details. - - -@node notedesc, , , Reference Manual - -@cindex note specification - -@cindex pitches - -@cindex entering notes - -A note specification has the form - -@example - @var{pitch}[@var{octavespec}][!][?][@var{duration}] -@end example - -The pitch of the note is specified by the note's name. - - -The default names are the Dutch note names. The notes are specified -by the letters `@code{c}' through `@code{b}', where `@code{c}' is an -octave below middle C and the letters span the octave above that C. -In Dutchcindex(notenames!Dutch), a sharp is formed by adding -`@code{-is}' to the end of a pitch name. A flat is formed by adding -`@code{-es}'. Double sharps and double flats are obtained by adding -`@code{-isis}' or `@code{-eses}'. `@code{aes}' and `@code{ees}' are -contracted to `@code{as}' and `@code{es}' in Dutch, but both forms will -be accepted. - -LilyPond has predefined sets of notenames for various languages. See -section XREF-notelang [FIXME] for details. - - -The optional octave specification takes the form of a series of -single quote (`@code{'}@indexcode{'}') characters or a series of comma -(`@code{,}@indexcode{,}') characters. Each @code{'} raises the pitch by one -octave; each @code{,} lowers the pitch by an octave. - -@mudela[fragment,verbatim,center] - c' d' e' f' g' a' b' c'' -@end mudela - -@mudela[fragment,verbatim,center] - cis' dis' eis' fis' gis' ais' bis' -@end mudela - -@mudela[fragment,verbatim,center] - ces' des' es' fes' ges' as' bes' -@end mudela - -@mudela[fragment,verbatim,center] - cisis' eisis' gisis' aisis' beses' -@end mudela - -@mudela[fragment,verbatim,center] - ceses' eses' geses' ases' beses' -@end mudela - -Whenever a C-sharp is desired, you must specify a C-sharp. LilyPond -will determine what accidentals to typeset depending on the key and -context. A reminder accidental -@cindex reminder accidental - can be -forced by adding an exclamation mark `@code{!}' after the pitch. A -cautionary accidental, -@cindex cautionary accidental - i.e., an -accidental within parentheses can be obtained by adding the question -mark `@code{?}@indexcode{?}' after the pitch. - -@mudela[fragment,verbatim,center] - cis' d' e' cis' c'? d' e' c'! -@end mudela - - -@cindex duration - -Durations are entered as their reciprocal values. For notes longer -than a whole note, use identifiers. - -@quotation - -@example -c'\longa c'\breve -c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 -@end example - -@end quotation - -@quotation - -@mudela[] -\score { - \notes \relative c'' { - a\longa a\breve - a1 a2 a4 a8 a16 a32 a64 a64 - } - \paper { - loose_column_distance = 2.5 * \interline; - linewidth = -1.0; - \translator { - \type "Score_engraver"; - \name "Score"; - \consists "Note_heads_engraver"; - \consists "Stem_engraver"; - \consists "Rhythmic_column_engraver"; - } - } -} -@end mudela -@end quotation - -@quotation - -@example -r\longa r\breve -r1 r2 r4 r8 r16 r32 r64 r64 -@end example - -@end quotation - -@quotation - -@mudela[] -\score { - \notes \relative c'' { - r\longa r\breve - r1 r2 r4 r8 r16 r32 r64 r64 - } - \paper { - loose_column_distance = 2.5 * \interline; - linewidth = -1.0; - \translator { - \type "Score_engraver"; - \name "Score"; - \consists "Rest_engraver"; - \consists "Stem_engraver"; - \consists "Rhythmic_column_engraver"; - } - } -} -@end mudela -@end quotation - -If the duration is omitted then it is set equal to the previous -duration. If there is no previous duration, a quarter note is -assumed. The duration can be followed by a dot (`@code{.}@indexcode{.}') -to obtain dotted note lengths. - -@mudela[fragment,verbatim,center] - a'4. b'4. -@end mudela - -You can alter the length of duration by writing -`@code{*}@var{fraction}' after it. This will not affect the -appearance of note heads or rests. - - -Rests are entered like notes, with note name `@code{r}@indexcode{r}', -or `@code{R}@indexcode{R}'. There is also a note name `@code{s}@indexcode{s}', -which produces a space of the specified duration. -`@code{R}' is specifically meant for entering parts: the @code{R} rest -can expand to fill a score with rests, or it can be printed as a -single multimeasure rest. - - -@cindex lyrics expressions - -Syllables are entered like notes, with pitches replaced by text. For -example, `@code{Twin-4 kle4 twin-4 kle4}' enters four syllables, each -with quarter note duration. Note that the hyphen has no special -meaning for lyrics, and does not introduce special symbols. See -section XREF-modes [FIXME] for a description of what is interpreted as -lyrics. - -Spaces can be introduced into a lyric either by using quotes -(`@code{"}') or by using an underscore without quotes: `@code{He_could4 -not4}'. All unquoted underscores are converted to spaces. Printing -lyrics is discussed in section XREF-lyricprint [FIXME]. - - - -@cindex properties - -@example - \property@keyindex{property} - @var{contextname}.@var{propname} = @var{value} -@end example - -Sets the @var{propname} property of the context @var{contextname} to -the specified @var{value}. All three arguments are strings. -Depending on the context, it may be necessary to quote the strings or -to leave space on both sides of the dot. - - - -@cindex translator switches - -@example - \translator@keyindex{translator} - @var{contexttype} = @var{name} -@end example - -A music expression indicating that the context which is a direct -child of the a context of type @var{contexttype} should be shifted to -a context of type @var{contexttype} and the specified name. - -Usually this is used to switch staffs in Piano music, e.g. - -@example - \translator Staff = top @var{Music} -@end example - - - -@cindex commands - -Commands are music expressions that have no duration. - - -@example - - @code{\key}@keyindex{key} @var{pitch} @var{type} @code{;} -@end example - -Change the key signature. @var{type} should be -@code{\major}@keyindex{major} or @code{\minor}@keyindex{minor} to get -@var{pitch}-major or @var{pitch}-minor, respectively. The second -argument is optional; the default is major keys. The @var{\context} -argument can also be given as an integer, which tells the number of -semitones that should be added to the pitch given in the subsequent -@code{\key}@keyindex{key} commands to get the corresponding major key, -e.g., @code{\minor}@keyindex{minor} is defined as 3. The standard -mode names @code{\ionian}@keyindex{ionian}, -@code{\locrian}@keyindex{locrian}, @code{\aeolian}@keyindex{aeolian}, -@code{\mixolydian}@keyindex{mixolydian}, @code{\lydian}@keyindex{lydian}, -@code{\phrygian}@keyindex{phrygian}, and @code{\dorian}@keyindex{dorian} -are also defined. - -@example - - @code{\keysignature}@keyindex{keysignature} @var{pitchseq} @code{;} -@end example - -Specify an arbitrary key signature. The pitches from @var{pitch} will -be printed in the key signature in the order that they appear on the -list. - - -@example - \mark@keyindex{mark} @var{unsigned}; - \mark @var{string}; -@end example - -Prints a mark over or under (depending on the -@code{markDirection}@indexcode{markDirection} property) the staff. You must add -@code{Mark_engraver}@indexcode{Mark_engraver} to either the Score or Staff context for -this to work. - -@node barlines, , , Reference Manual - -@example - \bar@keyindex{bar} @var{bartype}; -@end example - -This is a request to print a special bar symbol. It replaces the -regular bar symbol with a special -symbol. The argument @var{bartype} is a string which specifies the -kind of bar to print. Options are @code{":|"} -@cindex "|A@@@code{:|} -, -@code{"|:"} -@cindex "|B@@@code{|:} -, @code{":|:"} -@cindex "|C@@@code{:|:} -, -@code{"||"} -@cindex "|D@@@code{||} -, @code{"|."} -@cindex "|E@@@code{|.} -, -@code{".|"} -@cindex "|F@@@code{.|} -, and @code{".|."} -@cindex "|G@@@code{.|.} -. -These produce, respectively, a right repeat, a left repeat, a double -repeat, a double bar, a start bar, an end bar, and a thick double -bar. If @var{bartype} is set to @code{"empty"} then nothing is -printed, but a line break is allowed at that spot. - -You are encouraged to use @code{\repeat} for repetitions. -See section XREF-sec-repeats [FIXME]. - - - -@example - \cadenza@keyindex{cadenza} @var{togglevalue} @code{;} -@end example - -Music expression that toggles the automatic generation of bar lines. -If @var{togglevalue} is 1, bar line generation is turned off. If -@var{togglevalue} is 0, a bar line is immediately printed and -automatic bar generation is turned on. - -@example - - \time@keyindex{time} @var{numerator}@code{/}@var{denominator} @code{;} -@end example - -Change the time signature. The default time signature is 4/4. -The time signature is used to generate bar lines. - -@example - - \tempo@keyindex{tempo} @var{duration} = @var{perminute} @code{;} -@end example - -Used to specify the tempo. For example, `@code{\tempo 4 = 76;}' -requests output with 76 quarter notes per minute. - -@example - - \partial@keyindex{partial} @var{duration} @code{;} -@end example - -@cindex anacrusis - -@cindex upstep - -This creates an incomplete measure (anacrusis, upbeat) at the start of -the music, e.g., `@code{\partial 8*2;}' creates a starting measure -lasting two eighth notes. - -@example - - @code{|}@indexcode{|} -@cindex bar check - -@end example - -@cindex shorten measures - -@cindex upstep - -`@code{|}' is a barcheck. Whenever a barcheck is encountered during -interpretation, a warning message is issued if it doesn't fall at a -measure boundary. This can help you finding errors in the input. -The beginning of the measure will be relocated, so this can also -be used to shorten measures. - - -@example - - \penalty@keyindex{penalty} @var{int} @code{;} -@end example - -Discourage or encourage line breaks. See identifiers -@code{\break}@keyindex{break} and @code{\nobreak}@keyindex{nobreak} in -section [on identifiers] [FIXME]. - -@example - - \clef@keyindex{clef} @var{clefname} @code{;} -@end example - -Music expression that sets the current clef. The argument is a -string which specifies the name of the clef. Several clef names are -supported. If `@code{_8}' or `@code{^8}' is added to the end of a clef -name, then the clef lowered or raised an octave will be generated. -Here are the supported clef names with middle C shown in each -clef: - -@quotation - -@mudela[] -\score { - \notes { - \cadenza 1; - %\property Voice.textStyle = typewriter - \clef subbass; c'4-"\kern -5mm subbass" - \clef bass; c'4^"\kern -2mm bass" - \clef baritone; c'4_"\kern -5mm baritone" - \clef varbaritone; c'4^"\kern -6mm varbaritone" - \clef tenor; c'4_"\kern -3mm tenor" - \clef "G_8"; c'4^"\kern -2mm G\\_8" - } - \paper { - linewidth = 4.5 \in; - } -} -@end mudela -@end quotation - -@quotation - -@mudela[] -\score { - \notes { - \cadenza 1; - \clef alto; c'4_"\kern -2mm alto" - \clef mezzosoprano; c'4^"\kern -9mm mezzosoprano" - \clef soprano; c'4_"\kern -6mm soprano" - \clef treble; c'4^"\kern -4mm treble" - \clef french; c'4_"\kern -4mm french" - } - \paper { - linewidth = 4.5 \in; - } -} -@end mudela -@end quotation - -The three clef symbols can also be obtained using the names `@code{G}', -`@code{C}' or `@code{F}', optionally followed by an integer which -indicates at which note line the clef is located. An as example, the -@code{mezzosoprano} clef can also be given as `@code{C2}'. - -@example - - \skip@keyindex{skip} @var{duration} @code{;} -@end example - -Skips the amount of time specified by @var{duration}. If no other -music is played, a gap will be left for the skipped time with no -notes printed. It works in Note Mode or Lyrics Mode. In Note mode, -this has the same effect as the space rest `@code{s}'. - - -@cindex beams - -@node manualbeam, , , Reference Manual - -A beam is specified by surrounding the beamed notes with brackets -`@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'. - -@mudela[fragment,verbatim,center] - [a'8 a'] [a'16 a' a' a'] -@end mudela - -Some more elaborate constructions: - -@mudela[fragment,verbatim,center] - [a'16 c'' ] - \times 2/3 { [e'8 f' g'] } -@end mudela - -Beaming can be generated automatically; see section XREF-autobeam [FIXME]. - -To place tremolo marks -@cindex tremolo beams - between two notes, begin -with `@code{[:}@var{length}' and end with `@code{]}'. Tremolo marks -will appear instead of beams. Putting more than two notes in such a -construction will produce odd effects. To create tremolo beams on a -single note, simply attach `@code{:}@var{length}' to the note itself -(see also section XREF-tremolo [FIXME]). - -@mudela[fragment,verbatim,center] - [:16 e'1 g'] [:8 e'4 f'] -@end mudela - -@mudela[fragment,verbatim,center] - c'4:32 [:16 c'8 d'8] -@end mudela - - -@cindex --@@@code{-}@code{-} - -@indexcode{__} - -@cindex extender - -@cindex hyphen - -The syntax for an extender mark is `@code{__}'. This syntax can only -be used within lyrics mode. The syntax for a spanning hyphen (i.e., -a hyphen that will be printed between two lyric syllables) is -`@code{-}@code{-}'. - - -@cindex ties - -A tie connects two adjacent note heads of the same pitch. When used -with chords, it connects all of the note heads whose pitches match. -Ties are indicated using the tilde symbol `@code{~}@indexcode{~}'. -If you try to tie together chords which have no common pitches, a -warning message will appear and no ties will be created. - -@mudela[fragment,verbatim,center] - e' ~ e' ~ -@end mudela - - - -[TODO: explain Requests] - - -@cindex articulations - -@cindex scripts - -@cindex ornaments - -A variety of symbols can appear above and below notes to indicate -different characteristics of the performance. These symbols can be -added to a note with `@var{note}@code{-\}@var{name}'. Numerous symbols -are defined in @file{script.ly} and @file{script.scm}. Symbols can be -forced to appear above or below the note by writing -`@var{note}@code{^\}@var{name}' and `@var{note}@code{_\}@var{name}' -respectively. Here is a chart showing symbols above notes, with the -name of the corresponding symbol appearing underneath. - -@mudela[] - - \score { - < \notes { - c''-\accent c''-\marcato c''-\staccatissimo c''-\fermata - c''-\stopped c''-\staccato c''-\tenuto c''-\upbow - c''-\downbow c''^\lheel c''-\rheel c''^\ltoe - c''-\rtoe c''-\turn c''-\open c''-\flageolet - c''-\reverseturn c''-\trill c''-\prall c''-\mordent - c''-\prallprall c''-\prallmordent c''-\upprall c''-\downprall - c''-\thumb c''-\segno c''-\coda - } - \context Lyrics \lyrics { - accent__ marcato__ staccatissimo__ fermata - stopped__ staccato__ tenuto__ upbow - downbow__ lheel__ rheel__ ltoe - rtoe__ turn__ open__ flageolet - reverseturn__ trill__ prall__ mordent - prallprall__ prallmordent__ uprall__ downprall - thumb__ segno__ coda - } - > - \paper { - linewidth = 5.875\in; - indent = 0.0; - } - } - -@end mudela - -In addition, it is possible to place arbitrary strings of text or -TeX above or below notes by using a string instead of an -identifier: `@code{c^"text"}'. Fingerings -@cindex fingering - can be -placed by simply using digits. All of these note ornaments appear in -the printed output but have no effect on the MIDI rendering of the -music. - -To save typing, fingering instructions (digits 0 to 9 are -supported) and single characters shorthands exist for a few -common symbols - -@mudela[] - - \score { - \notes { - \property Voice.textStyle = typewriter - c''4-._"c-." s4 - c''4--_"c-{}-" s4 - c''4-+_"c-+" s4 - c''4-|_"c-|" s4 - c''4->_"c->" s4 - c''4-^_"c-\\^{ }" s4 - c''4-1_"c-1" s4 - c''4-2_"c-2" s4 - c''4-3_"c-3" s4 - c''4-4_"c-4" s4 - } - \paper { - linewidth = 5.875 \in; - indent = 0.0; - } - } - -@end mudela - -Dynamic marks are specified by using an identifier after a note: -`@code{c4-\ff}' (the dash is optional for dynamics: `@code{c4 \ff})'. -The available dynamic marks are: -@code{\ppp}@keyindex{ppp}, -@code{\pp}@keyindex{pp}, @code{\p}@keyindex{p}, @code{\mp}@keyindex{mp}, -@code{\mf}@keyindex{mf}, @code{\f}@keyindex{f}, @code{\ff}@keyindex{ff}, -@code{\fff}@keyindex{fff}, @code{\fff}@keyindex{ffff}, -@code{\fp}@keyindex{fp}, @code{\sf}@keyindex{sf}, -@code{\sff}@keyindex{sff}, @code{\sp}@keyindex{sp}, -@code{\spp}@keyindex{spp}, @code{\sfz}@keyindex{sfz}, and -@code{\rfz}@keyindex{rfz}. - - -@example - - \textscript@keyindex{textscript} @var{text} @var{style} -@end example - -Defines a text to be printed over or under a note. @var{style} is a -string that may be one of @code{roman}, @code{italic}, @code{typewriter}, -@code{bold}, @code{Large}, @code{large}, @code{dynamic} or @code{finger}. - -You can attach a general textscript request using this syntax: - -@quotation - -@example -c4-\textscript "6" "finger" -c4-\textscript "foo" "normal" -@end example - -@end quotation - -This is equivalent to `@code{c4-6 c4-"foo"}'. - - -@cindex scripts - -@example - - \script@keyindex{script} @var{alias} -@end example - -Prints a symbol above or below a note. The argument is a string -which points into the script-alias table defined in @file{script.scm}. -The scheme definitions specify whether the symbol follows notes into -the staff, dependence of symbol placement on staff direction, and a -priority for placing several symbols over one note. Usually the -@code{\script}@keyindex{script} keyword is not used directly. Various -helpful identifier definitions appear in @file{script.ly}. - - -@cindex slur - -Slurs connects chords and try to avoid crossing stems. A slur is -started with `@code{(}' and stopped with `@code{)}'. The -starting `@code{(}' appears to the right of the first note in -the slur. The terminal `@code{)}' appears to the left of the -first note in the slur. This makes it possible to put a note in -slurs from both sides: - -@mudela[fragment,verbatim,center] - f'()g'()a' [a'8 b'(] a'4 g'2 )f'4 -@end mudela - - -@cindex crescendo - -A crescendo mark is started with @code{\cr}@keyindex{cr} and terminated -with @code{\rc}@keyindex{rc}. A decrescendo mark is started with -@code{\decr}@keyindex{decr} and terminated with -@code{\rced}@keyindex{rced}. There are also shorthands for these -marks. A crescendo can be started with @code{\<}@keyindex{<} and a -decrescendo can be started with @code{\>}@keyindex{>}. Either one can -be terminated with @code{\!}@keyindex{"!}. Note that @code{\!} -must go before the last note of the dynamic mark whereas @code{\rc} -and @code{\rced} go after the last note. Because these marks are -bound to notes, if you want to get several marks during one note, you -must use spacer notes. - -@mudela[fragment,verbatim,center] - c'' \< \! c'' d'' \decr e'' \rced - < f''1 { s4 \< \! s2 \> \! s4 } > -@end mudela - - -@example - - \spanrequest@keyindex{spanrequest} @var{startstop} @var{type} -@end example - -Define a spanning request. The @var{startstop} parameter is either -1 -(@code{\start}@keyindex{start}) or 1 (@code{\stop}@keyindex{stop}) and -@var{type} is a string that describes what should be started. -Supported types are @code{crescendo}, @code{decrescendo}, -@code{beam}, @code{slur}. This is an internal command. Users should -use the shorthands which are defined in the initialization file -@file{spanners.ly}. - -You can attach a (general) span request to a note using - -@mudela[fragment,verbatim,center] - c'4-\spanrequest \start "slur" - c'4-\spanrequest \stop "slur" -@end mudela - -The slur syntax with parentheses is a shorthand for this. - - - -@cindex tremolo marks - -@node tremolo, , , Reference Manual - -Tremolo marks can be printed on a single note by adding -`@code{:}[@var{length}]' after the note. The length must be at -least 8. A @var{length} value of 8 gives one line across -the note stem. If the length is omitted, then the last value is -used, or the value of the @code{abbrev}@indexcode{abbrev} property if there was -no last value. - -@mudela[verbatim,fragment,center] - c'2:8 c':32 -@end mudela - - - -@node Compound music expressions, , , Reference Manual -@section Compound music expressions - -@cindex compound music expressions - -@node compoundmusic, , , Reference Manual - -Music expressions are compound data structures. You can nest music -expressions any way you like. This simple example shows how three -chords can be expressed in two different ways: - -@mudela[fragment,verbatim,center] - \notes \context Staff { - \cadenza 1; - - <{a b c'}{c' d' e'}> - } -@end mudela - - - -@cindex context selection - -@example - - \context@keyindex{context} - @var{contexttype} [@code{=} @var{contextname}] @var{musicexpr} -@end example - -Interpret @var{musicexpr} within a context of type @var{contexttype}. -If the context does not exist, it will be created. The new context -can optionally be given a name. See -section XREF-contextselection [FIXME] and XREF-contextdefs [FIXME] for more -information on interpretation contexts. - - - -@cindex input modes - -@cindex mode switch - -Mode switching keywords form compound music expressions: @code{\notes} -@keyindex{notes} @var{musicexpr}, @code{\chords} @keyindex{chords} -@var{musicexpr}, and @code{\lyrics} @keyindex{lyrics} @var{musicexpr}. -These expressions do not add anything to the meaning of their -arguments. They are just a way to indicate that the arguments should -be parsed in indicated mode. See section XREF-modes [FIXME] for more -information on modes. - -More information on context selection can be found in -section XREF-contextselection [FIXME]. - - - -@cindex sequential music - - - -@example - - \sequential@keyindex{sequential} - @code{@{} @var{musicexprlist} @code{@}} -@end example - -This means that list should be played or written in sequence, i.e., -the second after the first, the third after the second. The duration -of sequential music is the the sum of the durations of the elements. -There is a shorthand, which leaves out the keyword: - -@example - - @code{@{} @var{musicexprlist} @code{@}} -@end example - - - -@cindex simultaneous music - -@indexcode{<} -@indexcode{>} - -@example - - \simultaneous@keyindex{simultaneous} - @code{@{} @var{musicexprlist} @code{@}} -@end example - -It constructs a music expression where all of its arguments start at -the same moment. The duration is the maximum of the durations of the -elements. The following shorthand is a common idiom: - -@example - - @code{<} @var{musicexprlist} @code{>} -@end example - -If you try to use a chord as the first thing in your score, you might -get multiple staffs instead of a chord. - -@mudela[verbatim,center] - \score { - \notes - \paper { - linewidth = -1.; - } - } -@end mudela - -This happens because the chord is interpreted by a score context. -Each time a note is encountered a default Voice context (along with a -Staff context) is created. The solution is to explicitly instantiate -a Voice context: - -@mudela[verbatim,center] - \score { - \notes\context Voice - \paper { - linewidth = -1.; - } - } -@end mudela - - - -@cindex relative pitch specification - -@node relative, , , Reference Manual - -It is easy to get confused by octave changing marks and accidentally -putting a pitch in the wrong octave. A much better way of entering a -note's octave is `the relative octave' mode. - -@example - - \relative@keyindex{relative} @var{startpitch} @var{musicexpr} -@end example - -The octave of notes that appear in @var{musicexpr} are calculated as -follows: If no octave changing marks are used, the basic interval -between this and the last note is always taken to be a fourth or -less.@footnote{The interval is determined without regarding -accidentals. A @code{fisis} following a @code{ceses} will be put above -the @code{ceses}.} The octave changing marks `@code{'}' and `@code{,}' -can then be added to raise or lower the pitch by an extra octave. -Upon entering relative mode, an absolute starting pitch must be -specified that will act as the predecessor of the first note of -@var{musicexpr}. - -Entering scales is straightforward in relative mode. - -@mudela[fragment,verbatim,center] - \relative c' { - c d e f g a b c c, - } -@end mudela - -And octave changing marks are used for intervals greater than a fourth. - -@mudela[fragment,verbatim,center] - \relative c'' { - c g c f, c' a, e'' } -@end mudela - -If the preceding item is a chord, the first note of the chord is used -to determine the first note of the next chord. But other notes -within the second chord are determined by looking at the immediately -preceding note. - -@mudela[fragment,verbatim,center] - \relative c' { - c - - - } -@end mudela - -The pitch after the @code{\relative} contains a notename. To parse -the pitch as a notename, you have to be in note mode, so there must -be a surrounding @code{\notes}@keyindex{notes} keyword (which is not -shown here). - -The relative conversion will not affect @code{\transpose} or -@code{\relative} sections in its argument. If you want to use -relative within transposed music, you must place an additional -@code{\relative} inside the @code{\transpose}. - -It is strongly recommended to use relative pitch mode: less work, -less error-prone, and more readable. - - - -Chord names are a way to generate simultaneous music expressions that -correspond with traditional chord names. It can only be used in -Chord mode (see section XREF-modes [FIXME]). - -@example - - @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}]. -@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 @emph{chord additions}, which 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 has two effects: It adds -the specified interval and all lower odd numbered intervals to the -chord, and it may lower or raise the specified interval. Intervals -must be separated by a dot (`@code{.}'). - -@quotation - -@mudela[fragment,verbatim] -\transpose c'' { - \chords { - c1 c-3- c-7 c-8 - c-9 c-9-.5+.7+ c-3-.5- c-4.6.8 - } -} - -@end mudela -@end quotation - -The second type of modifier that may appear after the `@code{-}' is a -named modifier. Named modifiers are listed in the file -@file{chord-modifiers.ly}. The available modifiers are `@code{m}' and -`@code{min}' which lower the 3rd half a step, `@code{aug}@indexcode{aug}' which -raises the 5th, `@code{dim}@indexcode{dim}' which lowers the 5th, -`@code{maj}@indexcode{maj}' which adds a raised 7th, and `@code{sus}@indexcode{sus}' -which replaces the 5th with a 4th. - -@quotation - -@mudela[fragment,verbatim] -\transpose c'' { - \chords { - c1-m c-min7 c-maj c-aug c-dim c-sus - } -} - -@end mudela -@end quotation - - -Chord subtractions are used to eliminate notes from a chord. The -notes to be subtracted are listed after a `@code{^}' character, -separated by dots. - -@mudela[fragment,verbatim,center] - \transpose c'' { - \chords { - c1^3 c-7^5.3 c-8^7 - } - } -@end mudela - -Chord inversions can be specified by appending `@code{/}@indexcode{/}' and -the name of a single note to a chord. This has the effect of -lowering the specified note by an octave so it becomes the lowest -note in the chord. If the specified note is not in the chord, a -warning will be printed. - -@mudela[fragment,verbatim,center] - \transpose c''' { - \chords { - c1 c/e c/g c-7/e - } - } - -@end mudela - -Throughout these examples, chords have been shifted around the staff -using @code{\transpose}. - -You should not combine @code{\relative} with named chords. - - - -@cindex tuplets - -Tuplets are made out of a music expression by multiplying their -duration with a fraction. - -@example - - \times@keyindex{times} @var{fraction} @var{musicexpr} -@end example - -The duration of @var{musicexpr} will be multiplied by the fraction. -In print, the fraction's denominator will be printed over the notes, -optionally with a bracket. The most common tuplet is the triplet in -which 3 notes have the length of 2, so the notes are 2/3 of -their written length: - -@mudela[fragment,verbatim,center] - g'4 \times 2/3 {c'4 c' c'} d'4 d'4 -@end mudela - - - -@cindex grace notes - -@example - - \grace@keyindex{grace} @var{musicexpr} -@end example - -A grace note expression has duration 0; the next real note is -assumed to be the main note. - -You cannot have the grace note after the main note, in terms of -duration, and main notes, but you can typeset the grace notes to the -right of the main note using the property -@code{graceAlignPosition}@indexcode{graceAlignPosition}. - -When grace music is interpreted, a score-within-a-score is set up: -@var{musicexpr} has its own time bookkeeping, and you could (for -example) have a separate time signature within grace notes. While in -this score-within-a-score, you can create notes, beams, slurs, etc. -Unbeamed eighth notes and shorter by default have a slash through the -stem. This behavior can be controlled with the -@code{stemStyle}@indexcode{stemStyle} property. - -@quotation - -@mudela[fragment,verbatim] -\relative c'' { - \grace c8 c4 \grace { [c16 c16] } c4 - \grace { \property Grace.stemStyle = "" c16 } c4 -} - -@end mudela -@end quotation - -At present, nesting @code{\grace}@keyindex{grace} notes, e.g. - -@example - - @code{\grace @{ \grace c32 c16 @} c4} -@end example - -may result in run-time errors of LilyPond. Since the meaning of such -a construct is unclear, we don't consider this a loss. Similarly, -juxtaposing two @code{\grace} sections is syntactically valid, but -makes no sense and may cause runtime errors. - -Ending a staff or score with grace notes may also generate a run-time -error, since there will be no main note to attach the grace notes to. - - - -@cindex repeats - -@node sec-repeats, , , Reference Manual - -In order to specify repeats, use the @code{\repeat}@keyindex{repeat} -keyword. Since repeats look and sound differently when played or -printed, there are a few different variants of repeats. - -@table @samp - @item unfolded - Repeated music is fully written (played) out. Useful for MIDI - output. - - @item volta - This is the normal notation: Repeats are not written out, but - alternative endings (voltas) are printed, left to right. - - @item folded - Alternative endings are written stacked, which is useful for - lyrics. -@end table - -The syntax for repeats is - -@example - - \repeat @var{variant} @var{repeatcount} @var{repeatbody} -@end example - -If you have alternative endings, you may add - -@example - - \alternative@keyindex{alternative} - @code{@{} @var{alternative1} - @var{alternative2} - @var{alternative3} @dots{} @code{@}} -@end example - -where each @var{alternative} is a Music expression. - -Normal notation repeats are used like this: - -@quotation - -@mudela[fragment,verbatim] - c'1 - \repeat volta 2 { c'4 d' e' f' } - \repeat volta 2 { f' e' d' c' } - -@end mudela -@end quotation - -With alternative endings: - -@quotation - -@mudela[fragment,verbatim] - c'1 - \repeat volta 2 {c'4 d' e' f'} - \alternative { {d'2 d'} {f' f} } - -@end mudela -@end quotation - -Folded repeats look like this:@footnote{Folded repeats offer little -more over simultaneous music. However, it is to be expected that -more functionality -- especially for the MIDI backend -- will be -implemented.} - -@quotation - -@mudela[fragment,verbatim] - c'1 - \repeat fold 2 {c'4 d' e' f'} - \alternative { {d'2 d'} {f' f} } - -@end mudela -@end quotation - -@quotation - -@mudela[fragment,verbatim] -\context Staff { - \relative c' { - \partial 4; - \repeat volta 2 { e | c2 d2 | e2 f2 | } - \alternative { { g4 g g } { a | a a a a | b1 } } - } -} - -@end mudela -@end quotation - -If you don't give enough alternatives for all of the repeats, then -the first alternative is assumed to be repeated often enough to equal -the specified number of repeats. - -@quotation - -@mudela[fragment,verbatim] -\context Staff { - \relative c' { - \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | } - \alternative { { g4 g g } - {\partial 1; e4 e e } - {\partial 1; a a a a | b1 } } - } -} - -@end mudela -@end quotation - -It is possible to nest @code{\repeat}. This is not entirely -supported: the notes will come be in the right places, but the repeat -bars will not. - - - -@cindex transposition of pitches - -@node transpose, , , Reference Manual - -A music expression can be transposed with -@code{\transpose}@keyindex{transpose}. The syntax is - -@example - - \transpose @var{pitch} @var{musicexpr} -@end example - -This means that middle C in @var{musicexpr} is transposed to -@var{pitch}. - -@code{\transpose} distinguishes between enharmonic pitches: both -@code{\transpose cis'} or @code{\transpose des'} will transpose up half -a tone. The first version will print sharps and the second version -will print flats. - -@quotation - -@mudela[fragment,verbatim] -\context Staff { - \clef "F"; - { \key e; c d e f } - \clef "G"; - \transpose des'' { \key e; c d e f } - \transpose cis'' { \key e; c d e f } -} - -@end mudela -@end quotation - -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}. - - - -@cindex automatic lyric durations - -If you have lyrics that are set to a melody, you can import the -rhythm of that melody into the lyrics using @code{\addlyrics}. -@keyindex{addlyrics} The syntax for this is - -@example - - \addlyrics @var{musicexpr1 musicexpr2} -@end example - -This means that both @var{musicexpr1} and @var{musicexpr2} are -interpreted, but that every non-command atomic music expression -(``every syllable'') in @var{musicexpr2} is interpreted using timing -of @var{musicexpr1}. - -If the property @code{automaticMelismata}@indexcode{automaticMelismata} is set in the -context of @var{musicexpr1}, no lyrics will be put on slurred or tied -notes. - -@quotation - -@mudela[verbatim,fragment] -\addlyrics -\transpose c'' { - \property Voice.automaticMelismata = "1" - c8 () cis d8. e16 f2 -} -\context Lyrics \lyrics { - do4 re mi fa } - -@end mudela -@end quotation - -You should use a single rhythm melody, and single rhythm lyrics (a -constant duration is the obvious choice). If you do not, you will get -undesired effects when using multiple stanzas: - -@quotation - -@mudela[verbatim,fragment] -\addlyrics -\transpose c'' { - c8 () cis d8. e16 f2 -} -\context Lyrics \lyrics -< { do4 re mi fa } - { do8 re mi fa } > - -@end mudela -@end quotation - -It is valid (but probably not very useful) to use notes instead of -lyrics for @var{musicexpr2}. - - - - -@node Ambiguities, , , Reference Manual -@section Ambiguities - -@cindex ambiguities - -The grammar contains a number of ambiguities.@footnote{The authors -hope to resolve them at a later time.} - -@itemize @bullet - @item The assignment - - @example -foo = bar -@end example - - can be interpreted as making a string identifier @code{\foo} - containing @code{"bar"}, or a music identifier @code{\foo} - containing the syllable `bar'. - - @item The assignment - - @example -foo = -6 -@end example - - can be interpreted as making an integer identifier - containing -6, or a Request identifier containing the - fingering `6' (with neutral direction). - - @item If you do a nested repeat like - - @quotation - -@example -\repeat @dots{} -\repeat @dots{} -\alternative -@end example - - @end quotation - - then it is ambiguous to which @code{\repeat} the - @code{\alternative} belongs. This is the classic if-then-else - dilemma. It may be solved by using braces. - - @item (an as yet unidentified ambiguity :-) -@end itemize - - - -@node Notation conversion specifics, , , Reference Manual -@section Notation conversion specifics - - - -@cindex automatic beam generation - -@node autobeam, , , Reference Manual - -By default, LilyPond will generate beams automatically. This feature -can be disabled by setting the @code{Voice.noAutoBeaming}@indexcode{Voice.noAutoBeaming} -property to 1. It can be overridden for specific cases by -specifying explicit beams as described in -section XREF-manualbeam [FIXME]. - -A large number of Voice properties are used to decide how to generate -beams. Their default values appear in @file{auto-beam-settings.ly}. -In general, beams can begin anywhere, but their ending location is -significant. Beams can end on a beat, or at durations specified by -the @code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} property. To end beams every -quarter note, for example, you could set -@code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} equal to `@code{"1/4"}'. To end beams -at every three eighth notes you would set it to `@code{"3/8"}'. The -same syntax can be used to specify beam starting points using -@code{Voice.beamAutoBegin}@indexcode{Voice.beamAutoBegin}. - -To allow different settings for different time signatures, these -property names can start with `@code{time}@var{N}@code{_}@var{M}' to -restrict the definition to `@var{N}@code{/}@var{M}' time. For example, -to specify beams ending only for 6/8 time you would use the -property @code{Voice.time6_8beamAutoEnd}. To allow different endings -for notes of different durations, the duration can be tacked onto the -end of the property. To specify beam endings for beams that contain -32nd notes, you would use @code{Voice.beamAutoEnd_32}. - - - -@cindex chord names - -@cindex chords - -@cindex printing!chord names - -For displaying printed chord names, use the @code{ChordNames}@indexcode{ChordNames} -and @code{ChordNameVoice}@indexcode{ChordNameVoice} contexts. The chords may be entered -either using the notation described above, or directly using -simultaneous music. - -@quotation - -@mudela[fragment,verbatim] -< - \context ChordNames { - \chords{a b c} \notes{ } - } - \context Staff \notes { - a b c' d' e' - } -> - -@end mudela -@end quotation - -LilyPond examines chords specified as lists of notes to determine a -name to give the chord. By default, LilyPond will not try to -identify chord inversions: - -@mudela[fragment,verbatim,center] - < - \context ChordNameVoice \notes { - - } - \context Thread \notes { - - } - > -@end mudela - -If you want inversions to be recognized, you must set the property -@code{ChordNames.chordInversion}@indexcode{ChordNames.chordInversion}: - -@mudela[fragment,verbatim,center] - < - \property Score.chordInversion = 1 - \context ChordNameVoice \notes { - - } - \context Thread \notes { - - } - > -@end mudela - - - -@cindex lyrics - -@cindex printing!lyrics - -@node lyricprint, , , Reference Manual - -Lyric syllables must be interpreted within a @code{Lyrics} context - -@cindex context!Lyrics - for printing them. - -Here is a full example: - -@quotation - -@mudela[verbatim] -\score { - < - \notes \transpose c'' { - c d e c | c d e c | - e f g2 | e4 f g2 \bar "|."; - } - \context Lyrics \lyrics { - Va-4 der Ja- cob Va- der Ja- cob - Slaapt gij nog?2 Slaapt4 gij nog?2 - } - > -} - -@end mudela -@end quotation - -You may want a continuous line after the syllables to show melismata. -To achieve this effect, add a `@code{__}' lyric as a separate word -after the lyric to be extended. This will create an extender, a line -that extends over the entire duration of the lyric. This line will -run all the way to the start of the next lyric, so you may want to -shorten it by using a blank lyric (using `@code{_}'). - -@quotation - -@mudela[verbatim] -\score { - < - \notes \relative c'' { - a4 () b () c () d | c () d () b () a | c () d () b () a - } - \context Lyrics \lyrics { - foo1 __ | bar2. __ _4 | baz1 __ - } - > -} - -@end mudela -@end quotation - - -If you want to have hyphens centered between syllables (rather than -attached to the end of the first syllable) you can use the special -`@code{-}@code{-}' lyric as a separate word between syllables. This -will result in a hyphen which length varies depending on the space -between syllables, and which will be centered between the syllables. -For example: - -@quotation - -@mudela[verbatim] -\score { - < - \notes \transpose c'' { - c d e c | c d e c | - e f g2 | e4 f g2 \bar "|."; - } - \context Lyrics \lyrics { - Va4 -- der Ja -- cob | Va -- der Ja -- cob | - Slaapt gij nog?2 | Slaapt4 gij nog?2 - } - > -} - -@end mudela -@end quotation - - - -@node Notation Contexts, , , Reference Manual -@section Notation Contexts - -@cindex notation contexts - -Notation contexts are objects that only exist during a run of -LilyPond. During the interpretation phase of LilyPond, the Music -expression contained in a @code{\score} block is interpreted in time -order. This is the order in which humans read, play, and write -music. - -A context is an object that holds the reading state of the -expression; it contains information like - -@itemize @bullet - @item What notes are playing at this point? - @item What symbols will be printed at this point? - @item In what style will they printed? - @item What is the current key signature, time signature, point within - the measure, etc.? -@end itemize - -Contexts are grouped hierarchically: A @code{Voice} context is -contained in a @code{Staff} context (because a staff can contain -multiple voices at any point), a @code{Staff} context is contained in -a @code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context (because -these can all contain multiple staffs). - -Contexts associated with sheet music output are called @emph{notation -contexts}, those for sound output are called playing contexts. - -Contexts are created either manually or automatically. Initially, -the top level music expression is interpreted by the top level -context (the @code{Score} context). When a atomic music expression -(i.e. a note, a rest, @code{\bar}, or @code{\time} commands), a nested -set of contexts is created that can process these atomic expressions, -as in this example: - -@example - - @example -\score @{ \notes < c4 > @} -@end example - -@end example - -The sequential music, `@code{@{ c4 @}}' is interpreted by @code{Score} -context. When the note `@code{c4}' itself is interpreted, a set of -contexts is needed that will accept notes. The default for this is a -@code{Voice} context, contained in a @code{Staff} context. Creation of -these contexts results in the staff being printed. - - -@node contextselection, , , Reference Manual - -@cindex context - -You can also create contexts manually, and you probably have to do so -if you want to typeset complicated multiple part material. If a -`@code{\context} @var{name} @var{musicexpr}' expression is encountered -during the interpretation phase, the @var{musicexpr} argument will be -interpreted with a context of type @var{name}. If you specify a name, -the specific context with that name is searched. - -If a context of the specified type and name can not be found, a new -one is created. For example, - -@quotation - -@mudela[verbatim] -\score { - \notes \relative c'' { - c4 f - } -} - -@end mudela -@end quotation - -In this example, the @code{c} and @code{d} are printed on the -default staff. For the @code{e}, a context Staff called -`@code{another}' is specified; since that does not exist, a new -context is created. Within @code{another}, a (default) Voice context -is created for the @code{e4}. When all music referring to a -context is finished, the context is ended as well. So after the -third quarter, @code{another} is removed. - -Almost all music expressions inherit their interpretation context -from their parent. In other words, suppose that the syntax for a -music expression is - -@example - - \keyword @var{musicexpr1} @var{musicexpr2} @dots{} -@end example - -When the interpretation of this music expression starts, the context -for @var{musicexpr1}, @var{musicexpr2}, etc. is that of the total -expression. - -Lastly, you may wonder, why this: - -@quotation - -@example -\score @{ - \notes \relative c'' @{ - c4 d4 e4 - @} -@} -@end example - -@end quotation - -doesn't result in this: - -@mudela[] - - \score { - \notes \relative c'' { - - } - } - -@end mudela - -For the @code{c4}, a default @code{Staff} (with a contained -@code{Voice}) context is created. After the @code{c4} ends, no -music refers to this default staff, so it would be ended, with the -result shown. To prevent this inconvenient behavior, the context to -which the sequential music refers is adjusted during the -interpretation. So after the @code{c4} ends, the context of the -sequential music is also the default @code{Voice} context. -The @code{d4} gets interpreted in the same context -as @code{c4}. - - - -These are the contexts supplied with the package. They are defined -in the initialization file @file{ly/engraver.ly}. - -@table @samp - @item @code{Grace}@indexcode{Grace} - The context for handling grace notes. It is instantiated - automatically when you use @code{\grace}. Basically, it is an - `embedded' miniature of the Score context. Since this context - needs special interaction with the rest of LilyPond, you should - not explicitly instantiate it. - - @item @code{LyricVoice}@indexcode{LyricVoice} - Corresponds to a voice with lyrics. Handles the printing of a - single line of lyrics. - - @item @code{Thread}@indexcode{Thread} - Handles note heads, and is contained in the Voice context. You - have to instantiate this explicitly if you want to adjust the - style of individual note heads. - - @item @code{Voice}@indexcode{Voice} - Corresponds to a voice on a staff. This context handles the - conversion of dynamic signs, stems, beams, super- and subscripts, - slurs, ties, and rests. - - You have to instantiate this explicitly if you want to have - multiple voices on the same staff. - - @item @code{ChordNamesVoice}@indexcode{ChordNamesVoice} - A voice with chord names. Handles printing of a line of chord - names. - - @item @code{ChordNames}@indexcode{ChordNames} - Typesets chord names. Can contain @code{ChordNamesVoice} - contexts. - - @item @code{Lyrics}@indexcode{Lyrics} - Typesets lyrics. It can contain @code{LyricVoice} contexts. - - @item @code{Staff}@indexcode{Staff} - Handles clefs, bar lines, keys, accidentals. It can contain - @code{Voice} contexts. - - @item @code{RhythmicStaff}@indexcode{RhythmicStaff} - A context like @code{Staff} but for printing rhythms. Pitches are - ignored; the notes are printed on one line. It can contain - @code{Voice} contexts. - - @item @code{GrandStaff}@indexcode{GrandStaff} - Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a - brace on the left side, grouping the staffs together. The bar - lines of the contained staffs are connected vertically. It can - contain @code{Staff} contexts. - - @item @code{PianoStaff}@indexcode{PianoStaff} - Just like @code{GrandStaff} but with @code{minVerticalAlign} set - equal to @code{maxVerticalAlign} so that interstaff beaming and - slurring can be used. - - @item @code{StaffGroup}@indexcode{StaffGroup} - Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a - bracket on the left side, grouping the staffs together. The bar - lines of the contained staffs are connected vertically. It can - contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or - @code{Lyrics} contexts. - - @item @code{ChoirStaff}@indexcode{ChoirStaff} - Identical to @code{StaffGroup} except that the contained staffs - are not connected vertically. - - @item @code{Score}@indexcode{Score} - This is the top level notation context. No other context can - contain a @code{Score} context. This context handles the - administration of time signatures. It also makes sure that items - such as clefs, time signatures, and key-signatures are aligned - across staffs. It can contain @code{Lyrics}, @code{Staff}, - @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and - @code{ChoirStaff} contexts. - - You cannot explicitly instantiate a Score context (since it is - not contained in any other context). It is instantiated - automatically when an output definition (a @code{\score} or - @code{\paper} block) is processed. -@end table - - - -Properties that are set in one context are inherited by all of the -contained contexts. This means that a property valid for the -@code{Voice} context can be set in the @code{Score} context (for -example) and thus take effect in all @code{Voice} contexts. - -Properties can be preset within the @code{\translator} block -corresponding to the appropriate context. In this case, the syntax -is - -@example - - @var{propname} @code{=} @var{value} -@end example - -This assignment happens before interpretation starts, so a -@code{\property} expression will override any predefined settings. - -The @code{\property} expression will create any property you specify. -There is no guarantee that a property will be used. So if you spell -a property name wrong, there will be no error message. - -The property settings are used during the interpretation phase. They -are read by the LilyPond modules where interpretation contexts are -built of. These modules are called @emph{translators}. Translators for -notation are called @emph{engravers}, and translators for sound are -called @emph{performers}. - -The precise result of a property is determined by the implementation -of the translator that reads them. Therefore, the result of a -property can vary, since it is implementation and configuration -dependent. - -In order to fully find out what properties are used, you must -currently search the source code for calls to @code{get_property}. -The rest of the section is devoted to an (incomplete) overview of -available properties. - - -@cindex properties!Lyrics - -@table @samp - @item @code{textStyle}@indexcode{textStyle} - Set the font for lyrics. The available font choices are - @code{roman}, @code{italic}, @code{bold}, @code{large}, @code{Large}, - @code{typewriter}, and @code{finger}. The @code{finger} font can - only display numbers. Note also that you must be careful when - using @code{\property} in Lyrics mode, because of the way strings - are parsed. Either put quotes around the arguments to - @code{\property} or be sure to leave a space on both sides of the - dot. -@end table - - -@cindex properties!Thread - -@table @samp - @item @code{noteheadStyle}@indexcode{noteheadStyle} - Selects type of note head. Choices are @code{cross}, - @code{diamond}, @code{harmonic}, @code{transparent}, and @code{""}. - They are shown in that order below. - - @mudela[center] - - \score { - \notes { - \property Staff.barNonAuto = 1 - \property Voice.noteHeadStyle = cross - a' - \property Voice.noteHeadStyle = diamond - a' - \property Voice.noteHeadStyle = harmonic - a' - \property Voice.noteHeadStyle = transparent - a' - \property Voice.noteHeadStyle = "" - a' - } - \paper { - linewidth = -1.; - } - } - -@end mudela -@end table - -@subsubheading Grace properties - -@cindex properties!Grace - - -@table @samp - @item @code{stemStyle}@indexcode{stemStyle} - By default set to @code{"grace"} meaning that all unbeamed - notes with flags are typeset with a slash through the flag. - Setting to @code{""} gives standard flags. -@end table - - -@subsubheading Voice properties - -@cindex properties!Voice - -@table @samp - @item @code{abbrev}@indexcode{abbrev} - Set length for tremolo to be used if no length is explicitly - specified. - - @item @code{articulationScriptPadding}@indexcode{articulationScriptPadding} - - Determines the extra space added between articulation marks, such - as staccato, tenuto, trill, up/down bow or fermata, and the - closest staff line or note. - - @item @code{articulationScriptVerticalDirection} - @indexcode{articulationScriptVerticalDirection} - Determines the location of articulation marks. Set to @code{\up} - to print marks above the staff; set to @code{\down} to print marks - below the staff. This property does not override explicit - directions marked with `@code{^}' or `@code{_}' in the mudela file. - - @item @code{noAutoBeaming}@indexcode{beamAuto} - If set to 1 then beams are not generated automatically. - - @item @code{beamAutoEnd}@indexcode{beamAutoEnd} - Specifies when automatically generated beams can end. See - section XREF-autobeam [FIXME]. - - @item @code{beamAutoBegin}@indexcode{beamAutoBegin} - Specifies when automatically generated beams can start. See - section XREF-autobeam [FIXME]. - - @item @code{beamquantisation}@indexcode{beamquantisation} - Set to @code{\none} for no quantization. Set to @code{\normal} to - quantize position and slope. Set to @code{\traditional} to avoid - wedges. These three settings are available via - @code{\beamposfree}@keyindex{beamposfree}, - @code{\beamposnormal}@keyindex{beamposnormal}, and - @code{\beampostraditional}@keyindex{beampostraditional}. - - @item @code{beamslopedamping}@indexcode{beamslopedamping} - Set to @code{\none} for undamped beams. Set to @code{\normal} for - damped beams. Set to @code{\infinity} for beams with zero slope. - The identifiers - @code{\beamslopeproportional}@keyindex{beamslopeproportional}, - @code{\beamslopedamped}@keyindex{beamslopedamped}, and - @code{\beamslopezero}@keyindex{beamslopezero} each set the - corresponding value. - - @item @code{dynamicDirection}@indexcode{dynamicDirection} - Determines location of dynamic marks. Set to @code{\up} to print - marks above the staff; set to @code{\down} to print marks below - the staff. - - @item @code{dynamicStyle}@indexcode{dynamicStyle} - Set the text style for dynamics. - - @item @code{fontSize}@indexcode{fontSize} - Can be used to select smaller font sizes for music. The normal - font size is 0, and the two smaller sizes are -1 - and -2. - - @item @code{forceHorizontalShift}@indexcode{forceHorizontalShift} - Force horizontal shift for collision resolution. It overrides - automatic collision resolution. The value is the shift amount - expressed in @code{note_width}, as set in the paper section. - -[FIXME: this should be moved] - -Lilypond always arranges note heads on alternate sides of a stem (that -is, within a single voice) as necessary to prevent collisions (note head -overlaps). For up stems, the upper note of a colliding pair is placed -on the right side of the stem, the lower on the left. For down stems, -the algorithm works in reverse. - -Lily also attempts to prevent collisions of note heads in different -voices. A situation where chords of two or more voices are played -simultaneously within one staff. - -By default, if only two voices (and both have opposite stem directions) -are in this 'collision group', the notes both are shifted by @code{0.5 -\quartwidth} if there are unisons or seconds between the voices. - -If there are more than two voices in a collision group, shifting is -inactive by default, since in this case, there are multiple chords with -the same stem direction. By distinguish between those chords, LilyPond -can do collision resolution in these cases as well. - -Distinguishing between voices with the same stem direction, is done by -setting the property @code{Voice.horizontalNoteShift}. It must be set -to a different integer for each voice. Then, all note heads in collision -groups (not just unisons and seconds) will be offset, one voice relative -another. The following fragment of sheet music shows how shifting is -done, with values of @code{horizontalNoteShift} printed over and under -the notes. In this case the chords are just simple notes. - -@c URG : mudela book bug. -@mudela[singleline] -\score { - \notes \context Staff < - \context Voice = VA { \stemup f''4^"0" } - \context Voice = VB {\stemup - \property Voice.horizontalNoteShift = 1 d''4^" 1" } - \context Voice = VC { \stemup \property -Voice.horizontalNoteShift = 2 b'4^" 2" } - \context Voice = VD { \stemdown \property -Voice.horizontalNoteShift = 1 g'4_"1 " } - \context Voice = VE { \stemdown e'4_"0" } - > -} -@end mudela - -If you are not satisfied with the collision resolution of LilyPond, you -can override the horizontal shift value of the chord of one Voice, by -setting @code{forceHorizontalShift}. This sets the amount shift, -measured in black note head widths. - -To take complete control of note position shifts in complex passages, -you have set things up for normal collisions and override all shifts by -setting @code{forceHorizontalShift} to zero everywhere -@example -\property Voice.horizontalNoteShift = -\property Voice.forceHorizontalShift = "0.0" -@end example - -Then you can set the force property to a suitable value before each note -that really needs it (unisons and seconds), and reset it to 0.0 after -the note. - - @item @code{horizontalNoteShift}@indexcode{horizontalNoteShift} - Enable LilyPond to shift notes horizontally if they collide with - other notes. This is useful when typesetting many voices on one - staff. The identifier @code{\shift}@keyindex{shift} is defined to - enable this. Traditionally, the outer chords (the upmost and - downmost voices), should have no @code{horizontalNoteShift}. - - @item @code{markScriptPadding}@indexcode{markScriptPadding} - Determines the extra space added between the mark and the closest - staff line or note. - - @item @code{markDirection}@indexcode{markDirection} - Determines if marks should be printed above or below the staff. - Set to @code{\up} to print marks above the staff; set to - @code{\down} to print marks below the staff. - - @item @code{midiInstrument}@indexcode{midiInstrument} - Sets the instrument for MIDI output. If this property is not set - then LilyPond will use the @code{instrument} property. This must - be set to one of the strings on the list of MIDI instruments that - appears in section XREF-midilist [FIXME]. If you use a string which - is not listed, LilyPond will silently substitute piano. - - @item @code{oldTieBehavior}@indexcode{oldTieBehavior} - Set to 1 in order to get old tie behavior where ties would - connect unequal pitches. This property is deprecated, and its - use is not recommended. - - @item @code{restStyle}@indexcode{restStyle} - Change the layout of rests shorter than quarter notes. - Currently, the standard layout @code{""} and mensural notation - @code{"mensural"} are available. Mensural rests of duration - 32 or shorter are not available. - - @item @code{scriptHorizontal}@indexcode{scriptHorizontal} - Put scripts left or right of note heads. Support for this is - limited. Accidentals will collide with scripts. - - @item @code{slurVerticalDirection}@indexcode{slurVerticalDirection} - Set to @code{\free} for free choice of slur direction, set to - @code{\up} to force slurs up, set to @code{\down} to force slurs - down. The shorthands @code{\slurup}@keyindex{slurup}, - @code{\slurdown}@keyindex{slurdown}, and - @code{\slurboth}@keyindex{slurboth} are available. - - @item @code{slurDash}@indexcode{slurDash} - Set to 0 for normal slurs, 1 for dotted slurs, and a - larger value for dashed slurs. Identifiers - @code{\slurnormal}@keyindex{slurnormal} and - @code{\slurdotted}@keyindex{slurdotted} are predefined to set the - first two settings. - -@item @code{stemLength}@indexcode{stemLength} - Set length of stems. Unit is `@code{interline}/2', so - @code{stemLength} defaults to 7. - - @item @code{stemLeftBeamCount}@indexcode{stemLeftBeamCount} - Specify the number of beams to draw on the left side of the next - note. Overrides automatic beaming. The value is only used once, - and then it is erased. - - @item @code{stemRightBeamCount}@indexcode{stemRightBeamCount} - Specify the number of beams to draw on the right side of the next - note. Overrides automatic beaming. The value is only used once, - and then it is erased. - @item @code{tieVerticalDirection}@indexcode{tieVerticalDirection} - Set to @code{\free} for free choice of tie direction, set to - @code{\up} to force ties up, set to @code{\down} to force ties - down. - - @item @code{transposing}@indexcode{transposing} - Transpose the MIDI output. Set this property to the number of - half-steps to transpose by. - - - @item @code{textEmptyDimension}@indexcode{textEmptyDimension} - If set to 1 then text placed above or below the staff is - assumed to have zero width. - - @item @code{textStyle}@indexcode{textStyle} - Set the text style for superscripts and subscripts. See above - for list of text styles. - - @item @code{textScriptPadding}@indexcode{textScriptPadding} - Determines the extra space added between superscripted resp. - subscripted text and the closest staff line or note. - - @item @code{verticalDirection}@indexcode{verticalDirection} - Determines the direction of stems, subscripts, beams, slurs, and - ties. Set to @code{\down} to force them down, @code{\up} to force - them up, or @code{\free} to let LilyPond decide. This can be used - to distinguish between voices on the same staff. The - @code{\stemdown}@keyindex{stemdown}, @code{\stemup}@keyindex{stemup}, - and @code{\stemboth}@keyindex{stemboth} identifiers set this - property. - - - @item @code{tupletDirection}@indexcode{tupletDirection} - Determines the direction of triplets and other tuplets. Set to - @code{\down} to force them below the staff, @code{\up} to force - them above, or @code{\free} to let LilyPond decide. - - @item @code{tupletVisibility}@indexcode{tupletVisibility} - Determines whether tuplets of notes are labelled. Setting - to 0 shows nothing; setting to 1 shows a number; - setting to 2 shows a number and a bracket if there is no - beam; setting to 3 shows a number, and if there is no beam - it adds a bracket; setting to 4 shows both a number and a - bracket unconditionally. - -@end table - -@subsubheading Staff properties - -@cindex properties!Staff - -@table @samp - - @item @code{barNonAuto}@indexcode{barNonAuto} - If set to 1 then bar lines will not be printed - automatically; they must be explicitly created with @code{\bar} - keywords. Unlike with the @code{\cadenza} keyword, measures are - still counted. Bar generation will resume according to that - count if this property is set to zero. - - @item @code{barNumberDirection}@indexcode{barNumberDirection} - Set to @code{\up} or @code{\down} to put bar numbers above or below - the staff. - - @item @code{barNumberHangOnClef}@indexcode{barNumberHangOnClef} - Set to 1 to cause bar numbers to appear above or below the - clef instead of on the bar line. This property is deprecated. - Do not use. - - @item @code{barNumberScriptPadding}@indexcode{barNumberScriptPadding} - Sets extra space between the bar number and the bar it labels. - - @item @code{barSize}@indexcode{barSize} - Specify the height of the bar lines if it should be different - than the staff height. - - @item @code{barAtLineStart}@indexcode{barAtLineStart} - Set to 1 to produce a bar line after the clef at the start - of each line (but not at the beginning of the music). - - @item @code{clefStyle}@indexcode{clefStyle} - Determines how clefs are typeset. If set to @code{transparent}, - the clefs are not printed at all, if set to - @code{fullSizeChanges}, clef changes in the middle of a line are - typeset with a full size clef. By default, clef changes are - typeset in smaller size. - - @item @code{createKeyOnClefChange}@indexcode{createKeyOnClefChange} - Set to a nonempty string if you want key signatures to be printed - when the clef changes. Set to the empty string if you do not - want key signatures printed. - - @item @code{createInitdefaultClef}@indexcode{createInitdefaultClef} - Specify whether clefs are created on default? (Doesn't seem to - do anything.) - - @item @code{defaultClef}@indexcode{defaultClef} - Determines the default clef. See @code{\clef} keyword. - - @item @code{markHangOnClef}@indexcode{markHangOnClef} - Set to 1 to cause marks to appear by clefs instead of by bar - lines. Deprecated, use is not recommended. - - @item @code{marginDirection}@indexcode{marginDirection} - Set to @code{\left} or @code{\right} to specify location of - marginal scripts. - - @item @code{marginScriptPadding}@indexcode{marginScriptPadding} - Specify extra space for marginal scripts. - - @item @code{forgetAccidentals}@indexcode{forgetAccidentals} - Causes accidentals to be printed at every note instead of - remembered for the duration of a measure. - - @item @code{noResetKey}@indexcode{noResetKey} - Do not reset the key at the start of a measure. Accidentals will - be printed only once and are in effect until overridden, possibly - many measures later. - - @item @code{staffLineLeading}@indexcode{staffLineLeading} - Specifies the distance (in points) between lines of the staff. - - @item @code{numberOfStaffLines}@indexcode{numberOfStaffLines} - Specifies the number of staff lines. The default is 5. - - @item @code{postBreakPadding}@indexcode{postBreakPadding} - Extra space in points to be added after the clef, time signature - and key signature on the staff. Deprecated, do not use. - - @item @code{noVoltaBraces}@indexcode{noVoltaBraces} - Set to true to suppress the printing of brackets over alternate - endings specified by the command @code{\alternative}. - - @item @code{numberOfStaffLines}@indexcode{numberOfStaffLines} - Sets the number of lines that the staff has. - - @item @code{barAlways}@indexcode{barAlways} - If set to 1 a bar line is drawn after each note. - - @item @code{defaultBarType}@indexcode{defaultBarType} - Sets the default type of bar line. See Section XREF-barlines [FIXME] - for a list of available bar types. - - @item @code{instrument}, @code{instr} - @indexcode{instrument}@indexcode{instr} - If @code{Staff_margin_engraver} -@cindex Staff_margin_engraver - is - added to the Staff translator, then the @code{instrument} property - is used to label the first line of the staff and the @code{instr} - property is used to label subsequent lines. If the - @code{midiInstrument} property is not set, then @code{instrument} - is used to determine the instrument for MIDI output. - - @item @code{keyOctaviation}@indexcode{keyOctaviation} - If set to 1, then keys are the same in all octaves. If set - to 0 then the key signature for different octaves can be - different and is specified independently: - - @example - \keysignature bes fis' - @end example - - The default value is 1. Can be set to zero with - @code{\specialkey} or reset to 1 with @code{\normalkey}. - - @item @code{timeSignatureStyle}@indexcode{timeSignatureStyle} - Changes the default two-digit layout for time signatures. The - following values are recognized: - - @table @samp - @item @code{C}@indexcode{C} - 4/4 and 2/2 are typeset as C and struck C, respectively. All - other time signatures are written with two digits. - - @item @code{old}@indexcode{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 old-style mensuration marks. All other time - signatures are written with two digits. - - @item @code{1}@indexcode{1} - All time signatures are typeset with a single - digit, e.g. 3/2 is written as 3. - - @item @indexcode{CM/N}@code{C}@var{M}@code{/}@var{N}, - @indexcode{oldM/N}@code{old}@var{M}@code{/}@var{N} or - @code{old6/8alt}@indexcode{old6/8alt} - Tells LilyPond to use a specific symbol as time signature. - @end table - - The different time signature characters are shown below with its - names: - - @mudela[center] - - \score { - \notes\relative c'' { - \property Voice.textStyle = typewriter - \property Staff.timeSignatureStyle = "C2/2" - \time 2/2; a2^"C2/2" a2 - \property Staff.timeSignatureStyle = "C4/4" - \time 2/2; a2^"C4/4" a2 - \property Staff.timeSignatureStyle = "old2/2" - \time 2/2; a2^"old2/2" a2 - \property Staff.timeSignatureStyle = "old3/2" - \time 2/2; a2^"old3/2" a2 - \property Staff.timeSignatureStyle = "old2/4" - \time 2/2; a2^"old2/4" a2 - \property Staff.timeSignatureStyle = "old4/4" - \time 2/2; a2^"old4/4" a2 - \property Staff.timeSignatureStyle = "old6/4" - \time 2/2; a2^"old6/4" a2 - \property Staff.timeSignatureStyle = "old9/4" - \time 2/2; a2^"old9/4" a2 - \property Staff.timeSignatureStyle = "old4/8" - \time 2/2; a2^"old4/8" a2 - \property Staff.timeSignatureStyle = "old6/8" - \time 2/2; a2^"old6/8" a2 - \property Staff.timeSignatureStyle = "old6/8alt" - \time 2/2; a2^"old6/8alt" a2 - \property Staff.timeSignatureStyle = "old9/8" - \time 2/2; a2^"old9/8" a2 - } - \paper { - linewidth = 4.5 \in; - } - } - -@end mudela - - @item @code{voltaSpannerDuration}@indexcode{voltaSpannerDuration} - Set to an integer to control the size of the brackets printed by - @code{\alternative}. The integer specifies the number of whole - notes duration to use for the brackets. It is rounded to the - nearest measure. This can be used to shrink the length of - brackets in the situation where one alternative is very large. - It may have odd effects if the specified duration is longer than - the music given in an @code{\alternative}. -@end table - - -@cindex properties!GrandStaff - -@table @samp - @item @code{alignmentReference}@indexcode{alignmentReference} - Set to @code{\center} for vertical alignment reference point to be - in the center of the vertical group. Set to @code{\up} to put the - reference point at the top of the group. - - @item @code{maxVerticalAlign}@indexcode{maxVerticalAlign} - Set the maximum vertical distance between staffs. - - @item @code{minVerticalAlign}@indexcode{minVerticalAlign} - Set the minimum vertical distance between staffs. -@end table - - -@cindex properties!Score - -@table @samp - @item @code{skipBars}@indexcode{skipBars} - Set to 1 to skip the empty bars that are produced by - multimeasure notes and rests. These bars will not appear on the - printed output. Set to zero (the default) to expand multimeasure - notes and rests into their full length, printing the appropriate - number of empty bars so that synchronization with other voices is - preserved. - - @quotation - -@mudela[fragment,verbatim,center] -r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3 - -@end mudela - @end quotation - -@end table - - -@cindex properties!ChordNamesVoice - -@table @samp - @item @code{chordInversion}@indexcode{chordInversion} - Determines whether LilyPond should look for chord inversions when - translating from notes to chord names. Set to 1 to find - inversions. The default is 0 which does not look for - inversions. -@end table - - - -@node Notation output definitions, , , Reference Manual -@section Notation output definitions - -@cindex output - -@cindex notation output - -@cindex output definition - -@node paper, , , Reference Manual - -The most important output definition is the @code{\paper} block, for -music notation. The syntax is - -@example - - @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}} -@end example - -where each of the items is one of - -@itemize @bullet - @item An assignment. The assignment must be terminated by a - semicolon. See section XREF-papervars [FIXME] for information on - paper variables. - - @item A context definition. See section XREF-contextdefs [FIXME] for - more information on context definitions. - - @item A margin shape declaration. The syntax is - - @example - - \shape @var{indent1}@code{,} @var{width1}@code{,} - @var{indent2}@code{,} @var{width2} @dots{} @code{;} - @end example - - @keyindex{shape} - - Each pair of @var{indent} and @var{width} values is a dimension - specifying how far to indent and how wide to make the line. - The indentation and width of successive lines are specified by - the successive pairs of dimensions. The last pair of - dimensions will define the characeristics of all lines beyond - those explicitly specified. - - @item A font declaration. Its syntax is - - @example - - @var{fontsize} @code{=} \font@keyindex{font} @var{fontname} - @end example - - @var{fontsize} is an integer describing the font to be used. - 0 is the default font. @var{fontname} is the basename of - a font (usually a member of the Feta family). -@end itemize - - - -@cindex changing font size and paper size - -The Feta font provides musical symbols at six different sizes. These -fonts are 11 point, 13 point, 16 point, 20 point, -23 point, and 26 point. The point size of a font is the -height of the five lines in a staff when displayed in the font. - -Definitions for these sizes are the files @file{paperSZ.ly}, where -@code{SZ} is one of 11, 13, 16, 20, 23 and 26. If you include -any of these files, the identifiers @code{paper_eleven}, -@code{paper_thirteen}, @code{paper_sixteen}, @code{paper_twenty}, -@code{paper_twentythree}, and @code{paper_twentysix} are defined -respectively. The default @code{\paper} block is also set. - -To change the paper size, you must first set the -@code{papersize}@indexcode{papersize} variable at top level. Set it to the strings -@code{a4}, @code{letter}, or @code{legal}. After this specification, -you must set the font as described above. If you want the default -font, then use the 20 point font. The new paper size will not -take effect if the font is not loaded and selected afterwards. Paper -size selection works by loading a file named after the paper size you -select. - - - -@cindex paper variables - -@node papervars, , , Reference Manual - -There is a large number of paper variables that are used to control -details of the layout. These variables control the defaults for the -entire score. Usually, they do not have to be changed; they are by -default set to values that depend on the font size in use. The -values are used by the graphic objects while formatting the score; -they are therefore implementation dependent. Most variables are -accompanied by documentation in the initalization file -@file{params.ly} or @file{paperSZ.ly}, where @code{SZ} is the staff -height in points. - -Nevertheless, here are some variables you may want to use or change: - -@table @samp - @item @code{indent}@indexcode{indent} - The indentation of the first line of music. - - @item @code{interline}@indexcode{interline} - The distance between two staff lines, calculated from the center - of the lines. You should use either this or @code{rulethickness} - as a unit for distances you modify. - - @item @code{linewidth}@indexcode{linewidth} - Sets the width of the lines. If set to -1.0, a single - unjustified line is produced. - - @item @code{output}@indexcode{output} - Specifies an alternate name for the the output @file{s}. - A @file{.tex}, @file{.midi} or @file{.ps} extension will be - added to the string you specify. - - @item @code{rulethickness}@indexcode{rulethickness} - Determines the thickness of staff and bar lines. - - @item @code{castingalgorithm}@indexcode{castingalgorithm} - The algorithm to use for breaking lines. Choices are - @code{\Gourlay}@keyindex{Gourlay} for a TeX-like dynamic - programming algorithm, and @code{\Wordwrap}@keyindex{Wordwrap} for - a simple algorithm. Gourlay breaking looks much better, but - takes a lot more resources. Wordwrap leaves loosely spaced lines - at the end. -@end table - - -@node contextdefs, , , Reference Manual - -@cindex context definition - -A notation contexts is defined by the following information - -@enumerate i - @item A name. - - @item The LilyPond modules that do the actual conversion of music to - notation. Each module is a so-called - @emph{engraver} -@cindex engraver -. - - @item How these modules should cooperate, i.e. which ``cooperation - module'' should be used. This cooperation module is a special - type of engraver. - - @item What other contexts the context can contain, - - @item What properties are defined. -@end enumerate - -A context definition has this syntax: - -@example - - \translator @code{@{} - @var{translatorinit} @var{translatormodifierlist} - @code{@}} -@end example - -@var{translatorinit} can be an identifier or of the form - -@example - - \type @var{typename} @code{;} -@end example - -@var{typename} is one of - -@table @samp - @item @code{Engraver_group_engraver}@indexcode{Engraver_group_engraver} - The standard cooperation engraver. - - @item @code{Score_engraver}@indexcode{Score_engraver} - This is cooperation module that should be in the top level context. - - @item @code{Grace_engraver_group}@indexcode{Grace_engraver_group} - This is a special cooperation module (resembling - @code{Score_engraver}) that is used to created an embedded - `miniscore'. -@end table - -@var{translatormodifierlist} is a list of items where each item is -one of - -@itemize @bullet - @item @code{\consists} @var{engravername} @code{;} - Add @var{engravername} to the list of modules in this context. - Section XREF-engravers [FIXME] contains an overview of the engravers - available. The order of engravers added with @code{\consists} is - significant. - - @item @code{\consistsend} @var{engravername} @code{;} - Analogous to @code{\consists}, but makes sure that - @var{engravername} is always added to the end of the list of - engravers. - - Some engraver types need to be at the end of the list; this - insures they are put there, and stay there, if a user adds or - removes engravers. This command is usually not needed for - end-users. - - @item @code{\accepts} @var{contextname} @code{;} - Add @var{contextname} to the list of context this context can - contain. The first listed context the context to create by - default. - - @item @code{\remove} @var{engravername} @code{;} - Remove a previously added (with @code{\consists}) engraver. - - @item @code{\name} @var{contextname} @code{;} - This sets name of the context, e.g. @code{Staff}, @code{Voice}. If - the name is not specified, the translator won't do anything. - - @item @var{propname} @code{=} @var{value} @code{;} - A property assignment. It is allowed to use reals for - @var{value}. -@end itemize - -In the @code{\paper} block, it is also possible to define translator -identifiers. Like other block identifiers, the identifier can only -be used as the very first item of a translator. In order to define -such an identifier outside of @code{\score}, you must do - -@quotation - -@example -\paper @{ - foo = \translator @{ @dots{} @} -@} -\score @{ - \notes @{ - @dots{} - @} - \paper @{ - \translator @{ \foo @dots{} @} - @} -@} -@end example - -@end quotation - - -@cindex paper types, engravers, and pre-defined translators - -Some pre-defined identifiers can simplify modification of -translators. The pre-defined identifiers are: - -@table @samp - @item @code{StaffContext}@indexcode{StaffContext} - Default Staff context. - - @item @code{RhythmicStaffContext}@indexcode{RhythmicStaffContext} - Default RhythmicStaff context. - - @item @code{VoiceContext}@indexcode{VoiceContext} - Default Voice context. - - @item @code{ScoreContext}@indexcode{ScoreContext} - Default Score context. - - @item @code{ScoreWithNumbers}@indexcode{ScoreWithNumbers} - Score context with numbering at the Score level. - - @item @code{BarNumberingStaffContext}@indexcode{BarNumberingStaffContext} - Staff context with numbering at the Staff level. - - @item @code{HaraKiriStaffContext}@indexcode{HaraKiriStaffContext} - Staff context that does not print if it only contains rests. - Useful for orchestral scores.@footnote{Harakiri, also called - Seppuku, is the ritual suicide of the Samourai.} - - @item @code{OrchestralPartStaffContext}@indexcode{OrchestralPartStaffContext} - - @item @code{OrchestralScoreContext}@indexcode{OrchestralScoreContext} -@end table - -Using these pre-defined values, you can remove or add items to the -translator: - -@quotation - -@example -\paper @{ - \translator @{ - \StaffContext - \remove Some_engraver; - \consists Different_engraver; - @} -@} -@end example - -@end quotation - - - -@node engravers, , , Reference Manual - -The engravers for paper output are: - -[incomplete, FIXME] - -@table @samp - @item @code{Bar_engraver}@indexcode{Bar_engraver} - Engraves bar lines. Normally in @code{Staff} and - @code{RhythmicStaff}. - - @item @code{Bar_number_engraver}@indexcode{Bar_number_engraver} - Engrave bar numbers. These numbers appear at the start of each - line. Not normally in any translator. Can be added to - @code{Score} for score-wide numbering or to @code{Staff} for - numbering on each staff. - - @item @code{Beam_engraver}@indexcode{Beam_engraver} - Handles beam requests by engraving beams. Normally appears in - the @code{Voice} translator. If omitted, then notes will be - printed with flags instead of beams. - - @item @code{Beam_req_swallow_translator} - @indexcode{Beam_req_swallow_translator} - Swallows beam requests. In @code{LyricVoice}. - - @item @code{Chord_name_engraver}@indexcode{Chord_name_engraver} - Engraves chord names. Normally in @code{ChordNameVoice} . - - @item @code{Chord_tremolo_engraver}@indexcode{Chord_tremolo_engraver} - - @item @code{Clef_engraver}@indexcode{Clef_engraver} - Engraves the clef symbol. Normally in @code{Staff}. - - @item @code{Collision_engraver}@indexcode{Collision_engraver} - - @item @code{Dot_column_engraver}@indexcode{Dot_column_engraver} - Engraves dots on dotted notes shifted to the right of the note. - Normally in @code{Voice}. If omitted, then dots appear on top of - the notes. - - @item @code{Dynamic_engraver}@indexcode{Dynamic_engraver} - Engraves dynamics symbols. Normally in @code{Voice}. - - @item @code{Font_size_engraver}@indexcode{Font_size_engraver} - - @item @code{Key_engraver}@indexcode{Key_engraver} - Engraves the key signature. Normally in @code{Staff}. - - @item @code{Local_key_engraver}@indexcode{Local_key_engraver} - - @item @code{Lyric_engraver}@indexcode{Lyric_engraver} - Engraves lyrics. Normally in @code{LyricVoice}. - - @item @code{Multi_measure_rest_engraver} - @indexcode{Multi_measure_rest_engraver} - Engraves multi-measure rests that are produced with @code{R}. - Normally in @code{Voice}. - - @item @code{Piano_bar_engraver}@indexcode{Piano_bar_engraver} - - @item @code{Pitch_squash_engraver}@indexcode{Pitch_squash_engraver} - Treat all pitches as middle C. Used in @code{RhythmicStaff}. - Note that the notes move, but the locations of accidentals stay - the same. - - @item @code{Priority_horizontal_align_engraver} - @indexcode{Priority_horizontal_align_engraver} - - @item @code{Repeat_engraver}@indexcode{Repeat_engraver} - Handles repeats? In @code{Staff} and @code{RhythmicStaff}. - - @item @code{Rest_collision_engraver}@indexcode{Rest_collision_engraver} - Handles collisions of rests. In @code{Staff}. - - @item @code{Rest_engraver}@indexcode{Rest_engraver} - Engraves rests. Normally in @code{Voice}. - - @item @code{Rhythmic_column_engraver}@indexcode{Rhythmic_column_engraver} - - @item @code{Score_priority_engraver}@indexcode{Score_priority_engraver} - - @item @code{Script_engraver}@indexcode{Script_engraver} - Handles note ornaments generated by @code{\script}. Normally in - @code{Voice}. - - @item @code{Separating_line_group_engraver} - @indexcode{Separating_line_group_engraver} - - @item @code{Skip_req_swallow_translator} - @indexcode{Skip_req_swallow_translator} - - @item @code{Slur_engraver}@indexcode{Slur_engraver} - Engraves slurs. Normally in @code{Voice}. - - @item @code{Span_bar_engraver}@indexcode{Span_bar_engraver} - Engraves lines across multiple staffs. Normally in - @code{Staffgroup} and @code{GrandStaff}. Removing this from - @code{StaffGroup} gives the definition of @code{ChoirStaff}. - - @item @code{Span_score_bar_engraver}@indexcode{Span_score_bar_engraver} - - @item @code{Staff_group_bar_engraver}@indexcode{Staff_group_bar_engraver} - - @item @code{Staff_margin_engraver}@indexcode{Staff_margin_engraver} - Prints the name of the instrument (specified by - @code{Staff.instrument} and @code{Staff.instr}) at the left of the - staff. - - @item @code{Staff_sym_engraver}@indexcode{Staff_sym_engraver} - - @item @code{Stem_engraver}@indexcode{Stem_engraver} - Engraves stems. Normally in @code{Voice}. - - @item @code{Ties_engraver}@indexcode{Ties_engraver} - Engraves ties. Normally in @code{Voice}. - - @item @code{Time_signature_engraver}@indexcode{Time_signature_engraver} - Engraves the time signature. Normally in @code{Staff} and - @code{RhythmicStaff}. - - @item @code{Timing_engraver}@indexcode{Timing_engraver} - Responsible for synchronizing timing information from staffs. - Normally in @code{Score}. In order to create polyrhythmic music, - this engraver should be removed from @code{Score} and placed in - @code{Staff}. - - @item @code{Tuplet_engraver}@indexcode{Tuplet_engraver} - Engraves tuplet brackets? In @code{Staff}. - - @item @code{Vertical_align_engraver}@indexcode{Vertical_align_engraver} -@end table - - - -@node Sound output, , , Reference Manual -@section Sound output - - - -The MIDI block is analogous to the paper block, but it is simpler. -The @code{\midi} block can contain: -@cindex MIDI block - -@itemize @bullet - @item a @code{\tempo} definition - @item context definitions -@end itemize - -Assignments in the @code{\midi} block are not allowed. - - - -@cindex context definition - -Context definitions follow precisely the same syntax as within the -\paper block. Translation modules for sound are called performers. -The contexts for MIDI output are defined in @file{ly/performer.ly}. - - - -@cindex MIDI instrument names - -@node midilist, , , Reference Manual - -The MIDI instrument name is set by the -@code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or, -if that property is not set, the -@code{Staff.instrument}@indexcode{Staff.instrument} property. The -instrument name should be chosen from the following list. If the -selected string does not exactly match, then LilyPond uses the default -piano. - - -@quotation - -@example -"acoustic grand" "contrabass" "lead 7 (fifths)" -"bright acoustic" "tremolo strings" "lead 8 (bass+lead)" -"electric grand" "pizzicato strings" "pad 1 (new age)" -"honky-tonk" "orchestral strings" "pad 2 (warm)" -"electric piano 1" "timpani" "pad 3 (polysynth)" -"electric piano 2" "string ensemble 1" "pad 4 (choir)" -"harpsichord" "string ensemble 2" "pad 5 (bowed)" -"clav" "synthstrings 1" "pad 6 (metallic)" -"celesta" "synthstrings 2" "pad 7 (halo)" -"glockenspiel" "choir aahs" "pad 8 (sweep)" -"music box" "voice oohs" "fx 1 (rain)" -"vibraphone" "synth voice" "fx 2 (soundtrack)" -"marimba" "orchestra hit" "fx 3 (crystal)" -"xylophone" "trumpet" "fx 4 (atmosphere)" -"tubular bells" "trombone" "fx 5 (brightness)" -"dulcimer" "tuba" "fx 6 (goblins)" -"drawbar organ" "muted trumpet" "fx 7 (echoes)" -"percussive organ" "french horn" "fx 8 (sci-fi)" -"rock organ" "brass section" "sitar" -"church organ" "synthbrass 1" "banjo" -"reed organ" "synthbrass 2" "shamisen" -"accordion" "soprano sax" "koto" -"harmonica" "alto sax" "kalimba" -"concertina" "tenor sax" "bagpipe" -"acoustic guitar (nylon)" "baritone sax" "fiddle" -"acoustic guitar (steel)" "oboe" "shanai" -"electric guitar (jazz)" "english horn" "tinkle bell" -"electric guitar (clean)" "bassoon" "agogo" -"electric guitar (muted)" "clarinet" "steel drums" -"overdriven guitar" "piccolo" "woodblock" -"distorted guitar" "flute" "taiko drum" -"guitar harmonics" "recorder" "melodic tom" -"acoustic bass" "pan flute" "synth drum" -"electric bass (finger)" "blown bottle" "reverse cymbal" -"electric bass (pick)" "skakuhachi" "guitar fret noise" -"fretless bass" "whistle" "breath noise" -"slap bass 1" "ocarina" "seashore" -"slap bass 2" "lead 1 (square)" "bird tweet" -"synth bass 1" "lead 2 (sawtooth)" "telephone ring" -"synth bass 2" "lead 3 (calliope)" "helicopter" -"violin" "lead 4 (chiff)" "applause" -"viola" "lead 5 (charang)" "gunshot" -"cello" "lead 6 (voice)" -@end example - -@end quotation - - -@cindex MIDI types and performers - -The types available for MIDI translators are: - -@table @samp - @item @code{Performer_group_performer}@indexcode{Performer_group_performer} - @item @code{Score_performer}@indexcode{Score_performer} - @item @code{Staff_performer}@indexcode{Staff_performer} -@end table - -The performers for MIDI translators are: - -@table @samp - @item @code{Key_performer}@indexcode{Key_performer} - @item @code{Time_signature_performer}@indexcode{Time_signature_performer} - @item @code{Note_performer}@indexcode{Note_performer} - @item @code{Lyric_performer}@indexcode{Lyric_performer} - @item @code{Swallow_performer}@indexcode{Swallow_performer} -@end table - - - -@node Pre-defined Identifiers, , , Reference Manual - -@section Pre-defined Identifiers - -@cindex pre-defined identifiers - - -Various identifiers are defined in the initialization files to -provide shorthands for some settings. Most of them are in -@file{ly/declarations.ly}. - -@table @samp - @item @code{\break}@keyindex{break} - Force a line break in music by using a large argument for the - keyword @code{\penalty}. - - @item @code{\center}@keyindex{center} - Used for setting direction properties. Equals 0. - - @item @code{\down}@keyindex{down} - Used for setting direction setting properties. Is equal - to -1. - - @item @code{\free}@keyindex{free} - Used for setting direction setting properties. Is equal - to 0. - - @item @code{\left}@keyindex{left} - Used for setting text alignment property. Is equal to -1. - - @item @code{\nobreak}@keyindex{nobreak} - Prevent a line break in music by using a large negative argument - for the keyword @code{\penalty}. - - @item @code{\none}@keyindex{none} - Used for setting @code{Score.beamslopedamping} and - @code{Score.beamquantisation} properties. Is equal to 0. - - @item @code{\normal}@keyindex{normal} - Used for setting @code{Score.beamslopedamping} and - @code{Score.beamquantisation} properties. Is equal to 1. - - @item @code{\normalkey}@keyindex{normalkey} - Select normal key signatures where each octave has the same key - signature. This sets the @code{Staff.keyoctaviation} property. - - @item @code{\right}@keyindex{right} - Used for setting text alignment property. Is set to 1. - - @item @code{\shiftoff}@keyindex{shiftoff} - Disable horizontal shifting of note heads that collide. Sets the - @code{Voice.horizontalNoteShift} property. - - @item @code{\shifton}@keyindex{shifton} - Enable note heads that collide with other note heads to be - shifted horiztonally. Sets the @code{Voice.horizontalNoteShift} - property. - - @item @code{\slurboth}@keyindex{slurboth} - Allow slurs to be above or below notes. This sets the - @code{Voice.slurVerticalDirection} property. - - @item @code{\slurdown}@keyindex{slurdown} - Force slurs to be below notes. This sets the - @code{Voice.slurVerticalDirection} property. - - @item @code{\slurup}@keyindex{slurup} - Force slurs to be above notes. This sets the - @code{Voice.slurVerticalDirection} property. - - @item @code{\specialkey}@keyindex{specialkey} - Allow key signatures do differ in different octaves. This sets - the @code{Staff.keyoctaviation} property. - - @item @code{\stemboth}@keyindex{stemboth} - Allow stems, beams, and slurs to point either upwards or - downwards, decided automatically by LilyPond. This sets the - @code{Voice.verticalDirection} property. - - @item @code{\stemdown}@keyindex{stemdown} - Force stems, beams, and slurs to point down. This sets the - @code{Voice.verticalDirection} property. - - @item @code{\stemup}@keyindex{stemup} - Force stems, beams and slurs to point up. This sets the - @code{Voice.verticalDirection} property. - - @item @code{\traditional}@keyindex{traditional} - Used for setting the @code{Score.beamquantisation} property. Is - equal to 2. - - @item @code{\up}@keyindex{up} - Used for setting various direction properties. Is equal - to 1. -@end table - - - -@node Running LilyPond, , , Reference Manual -@section Running LilyPond - -@cindex running LilyPond - - -When invoked with a filename that has no extension, LilyPond will try -adding `@file{.ly}' as an extension first, then `@file{.fly}' and -finally `@file{.sly}' extension. If the filename ends with -`@file{.fly}', LilyPond processes the file as music using -`@file{init.fly}'. In this case, LilyPond does something like: - -@quotation - -@example -\score @{ - \notes\relative c @{ - \input "yourfile.fly" - @} - \paper@{@} - \midi@{@} -@} -@end example - -@end quotation - -The result of `@file{.sly}' is similar except that a single unjustified -line is produced. - -If you invoke LilyPond with a file `@file{foo.}@var{ext}' that doesn't -have the `@file{.ly}' extension, then LilyPond will look for a file -called `@file{init.}@var{ext}' and process this file. The file -`@file{init.}@var{ext}' must contain the @code{\maininput} keyword or -LilyPond will not read the user specified file. - -When LilyPond processes @file{filename.ly} it will produce -@file{filename.tex} as output. If @file{filename.ly} contains a second -@code{\paper} keyword, then LilyPond will produce @file{filename-1.tex} -as well. Subsequent @code{\paper} keywords will produce sequentially -numbered file names. Several files can be specified; they will each -be processed independently.@footnote{Not entirely true: The status of -GUILE is kept.} - -@node Glossary, , , Top -@chapter Glossary - -@include glossary.texi - - -@bye diff --git a/Documentation/user/regression-test.tely b/Documentation/user/regression-test.tely deleted file mode 100644 index f945a54105..0000000000 --- a/Documentation/user/regression-test.tely +++ /dev/null @@ -1,302 +0,0 @@ -\input texinfo @c -*-texinfo-*- vim:tw=72 -@setfilename regression-test.info -@settitle LilyPond Regression test - -@c fool ls-latex -@ignore -@author Han-Wen Nienhuys and Jan Nieuwenhuizen -@title LilyPond Regression test -@end ignore - -@node Top, , , - -@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. - -@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. - -@mudelafile{rest.fly} - -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. - -@mudelafile{noteheadstyle.ly} - -Noteheads can have dots, and ---although this is bad style in duple -meters--- 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. - -@mudelafile{dots.fly} - -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. - -@mudelafile{multi-measure-rest.ly} - -@section Stems - -Stem tremolos (official naming?) 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. - -@mudelafile{stem-tremolo.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.sly} - -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. - -@mudelafile{stem-direction.sly} - -Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}. - -@mudelafile{stem-direction-down.ly} - -@section Scripts - -The staccato dot (and all scripts with follow-into-staff set), must -not be on staff lines. - -@mudelafile{staccato-pos.sly} - -@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. - -@mudelafile{grace.ly} - - -@section Beams, slurs and other spanners - -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. - -@mudelafile{beaming.ly} - -Beams should behave reasonably well, even under extreme circumstances. -Stems may be short, but noteheads should never touch the beam. - -@mudelafile{beam-extreme.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. - -@mudelafile{beam-position.sly} - -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} - -Ties are strictly horizontal. They are placed in between note heads. -The horizontal middle should not overlap with a staffline. - -@mudelafile{tie.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. - -@mudelafile{beam-interstaff.ly} - -The same goes for slurs. They behave decently when broken across -linebreak. - -@mudelafile{slur-interstaff.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. - -@mudelafile{tup.ly} - -@section Repeats - -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 -simultaneously. 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: - -@mudelafile{repeat-unfold.ly} - -Semi (un)folded behavior. Voltas can start on non-barline moments. -If they don't barlines should still be shown. - -@mudelafile{repeat-semifold.ly} - -Folded. This doesn't make sense without alternatives, but it works. - -@mudelafile{repeat-fold.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. - -@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. - -@mudelafile{rest-collision.ly} - -Normal collisions. We have support for polyphony, where the -middle voices are horizontally shifted. - -@mudelafile{collisions.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. - - -@mudelafile{number-staff-lines.fly} - -@section Spacing - -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.sly} - -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: - -@mudelafile{spacing-tight.ly} - -Natural: - -@mudelafile{spacing-natural.ly} - -Loose: - -@mudelafile{spacing-loose.ly} - - -@section Global stuff - -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. - -@mudelafile{bar-scripts.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: - -@mudelafile{breathing-sign.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. - -@mudelafile[nofly]{size11.ly} - -@mudelafile[nofly]{size13.ly} - -@mudelafile[nofly]{size16.ly} - -@mudelafile[nofly]{size20.ly} - -@mudelafile[nofly]{size23.ly} - -@mudelafile[nofly]{size26.ly} - - -@section Clefs and Time Signatures - -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. - -@mudelafile{clefs.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.fly} -@end ignore - -@bye diff --git a/lily/include/word-wrap.hh b/lily/include/word-wrap.hh deleted file mode 100644 index b81751e20a..0000000000 --- a/lily/include/word-wrap.hh +++ /dev/null @@ -1,20 +0,0 @@ -/* - word-wrap.hh -- declare Word_wrap - - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ - - -#ifndef WORD_WRAP_HH -#define WORD_WRAP_HH - -#include "break.hh" - -/// wordwrap type algorithm: move to next line if current is optimal. -struct Word_wrap : Break_algorithm { - virtual Array do_solve() const; -}; - -#endif // WORD_WRAP_HH diff --git a/lily/word-wrap.cc b/lily/word-wrap.cc deleted file mode 100644 index cf6a95e9fe..0000000000 --- a/lily/word-wrap.cc +++ /dev/null @@ -1,128 +0,0 @@ -/* - word-wrap.cc -- implement Word_wrap - - source file of the LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ - -#include "word-wrap.hh" -#include "paper-def.hh" -#include "paper-score.hh" -#include "debug.hh" -#include "paper-column.hh" -#include "line-spacer.hh" - - -/** El stupido. Add a measure until we're past the optimum. - - - A Dynamic Programming type of algorithm - similar to TeX's is in Gourlay_breaking - - UGH. Should think about pre/post break columns. - */ -Array -Word_wrap::do_solve () const -{ - problem_OK (); - - Line_of_cols &allcols (pscore_l_->col_l_arr_); - int curcol_idx = 0; - - Array breaking; - Line_of_cols breakpoints (find_breaks ()); - assert (breakpoints.size ()>=2); - - int break_idx=0; - while (break_idx < breakpoints.size () -1) - { - Column_x_positions minimum; - Column_x_positions current; - - - // do another line - - Item *post = breakpoints[break_idx]->find_broken_piece (RIGHT); - Paper_column *postcol =dynamic_cast(post); - - int start_break_idx = break_idx; - current.add_paper_column (postcol); - curcol_idx++; // skip the breakable. - break_idx++; - - while (break_idx < breakpoints.size ()) - { - // add another measure. - while (breakpoints[break_idx] != allcols[curcol_idx]) - { - current.add_paper_column (allcols[curcol_idx]); - curcol_idx++; - } - - Item * pre = breakpoints[break_idx]->find_broken_piece (LEFT); - Paper_column* precol = dynamic_cast(pre); - current.add_paper_column (precol); - - current.spacer_l_ = generate_spacing_problem (current.cols_, - pscore_l_->paper_l_->line_dimensions_int (breaking.size ())); - - // try to solve - if (!feasible (current.cols_)) - { - if (!minimum.cols_.size ()) - { - warning (_f ("Ugh, this measure is too long, breakpoint: %d", - break_idx)); - warning (_ ("Generating stupido solution")); - current.stupid_solution (); - current.energy_f_ = - 1; // make sure we break out. - } - else - current.energy_f_ = infinity_f; // make sure we go back - } - else - { - current.solve_line (); - current.print (); - } - - delete current.spacer_l_; - current.spacer_l_ =0; - - if (!current.satisfies_constraints_b_ && start_break_idx == break_idx - 1) - { - warning ( _ ("I don't fit; put me on Montignac")); - minimum = current; - break; - } - - /* - UGR! bug! - */ - if (current.energy_f_ < minimum.energy_f_ || current.energy_f_ < 0) - { - minimum = current; - } - else - { // we're one col too far. - break_idx--; - while (allcols[curcol_idx] != breakpoints[break_idx]) - curcol_idx --; - break; // do the next line. - } - - - // add nobreak version of breakable column - current.cols_.top ()=breakpoints[break_idx]; - curcol_idx ++; - break_idx++; - } - - *mlog << "[" << break_idx << "]" << flush; - breaking.push (minimum); - } - *mlog << endl; - return breaking; -} -