COMMENT(
+ BUGS:
+
+ Causes segfault:
+
+ \score{
+ \notes{ \context Voice {
+ \repeat fold 2 { a b c d } {}
+ }
+ }
+ }
+
+
+ restStyle=mensural doesn't seem to work (lots of characters not found
+ for rests.fly)
+
TODO:
- the use of semicolons needs to be documented once it settles down
+ thread
paper size?
+ paper variables
the explanation of how lyrics mode parses words seems ridiculous.
- Is there a simple way to explain this, or is the behavior
- too complicated for a reasonable explanation?
- \relative and \tranpose and \times make it necessary to specify
- an explicit \type staff, or bizarre things happen.
- catalan.ly
+ Is there a simple way to explain this, or is the behavior
+ too complicated for a reasonable explanation?
accordion symbols
- extender* (see extender.ly)
- \repeat & \alternative -> probably should have an example
- properties:
- unfoldRepeats
- voltaVisibility
- property: stemLeftBeamCount stemRightBeamCount
interstaff beams (beam-interstaff.ly)
interstaff slurs (see preludes-1.ly)
- boolean property barAuto
- property: noteheadStyle
- harmonics: test/harmonics.fly
- autobeamer
- properties: beamAutoEndx ??? rational string "1/2"
- beamAutoBegin
- beamAutoEnd
- beamAuto
- ScriptPadding
- Direction
- chordNameStyle (banter)
- chordInversionPreserve
- createInitdefaultClef
- dynamicStyle
- singleStaffBracket
- numberOfStaffLines
-
-
- {Mark,BarNumber,Margin}{Direction,ScriptPadding}
-
-
)
whentexinfo(notableofcontents())
-article(Mudela 1.0.14 / LilyPond 1.1.27 Reference Manual)
+article(Mudela 1.0.21 / LilyPond 1.1.49 Reference Manual)
(Adrian Mariano, Han-Wen Nienhuys and Jan Nieuwenhuizen)
(nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
A Mudela file consists of keywords with arguments and identifier
assignments separated by spaces, tabs or newlines. Semicolons are
-used by some keywords but are not generally required. A one line
-comment is introduced by a code(%) character. Block comments are
-started by code(%{) and ended by code(%}). They cannot be nested.
+used by some keywords and are inconsistantly required in other
+circumstances. A one line comment is introduced by a code(%)
+character. Block comments are started by code(%{) and ended by
+code(%}). They cannot be nested.
Mudela supports several types:
way you like. This simple example shows how three chords can be
expressed in two different ways:
mudela(fragment,verbatim,center)(
-\notes<{a b c'}{c' d' e'}{e' f' g'}>
-\notes{<a c' e'><b d' f'><c' e' g'>}
-)
+\notes{
+ c
+ <a c' e'> <b d' f'> <c' e' g'>
+ <{a b c'}{c' d' e'}{e' f' g'}>
+})
)
-COMMENT(
-Compound types are built up from the simple types. The compound types
-are: arglist, assignlist and musiclist. An arglist is a
-white space separated list of integers, reals and or strings surrounded
-by braces code({) and code(}). An assignlist is a list of
-identifier assignments, which have the form var(key)code(=)var(value).
-A statement in Mudela has one of three forms:
-verb(\keyword argument
-\keyword argument1 argument2 ... ;
-string=value)
-)
subsect(Identifiers)
name with a backslash: code(\)var(name). It is legal to redefine an
identifier in terms of its old value: code(foo = \foo * 2.0).
Identifier assignments must appear at the top level in the Mudela
-file.
+file. Note that semicolons are forbidden after assignments appearing
+at the top level but they are obligatory after assignments appearing
+elsewhere. (Semicolons are also forbidden after code(\property) assignments.)
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 and are entirely alphanumeric. It is also impossible to refer
to an identifier whose name is the same as the name of a keyword. The
following words are keywords:
-verb(absdynamic duration mark property skip
-accepts font midi pt spandynamic
-alternative grouping mm relative tempo
-bar header musicalpitch remove time
-cadenza in name repeat times
-chordmodifier include notenames scm translator
-chords key notes scmfile transpose
-clef keysignature paper score type
-cm lyrics partial script version
-consists maininput penalty shape)
+verb(accepts duration midi relative textscript
+alternative font mm remove time
+bar musicalpitch repeat times
+cadenza header name scm translator
+chordmodifiers in notenames scmfile transpose
+chords include notes score type
+clef key paper script version
+cm keysignature partial shape
+consists lyrics penalty skip
+consistsend maininput property spanrequest
+context mark pt tempo)
The right hand side of an identifier assignment is parsed completely
when the assignment is made. It therefore must have any context
Section ref(translators) for more information.
-COMMENT(
-subsect(Hierarchical structures)
-
-The general structure consists of declarations:
-verb(IDENTIFIER = \TYPE{
- <type specific data>
-})
-and instantiations:
-
-verb(\TYPE{ <type specific data> })
-
-(Currently, code(\score) is the only type that can be instantiated
-at top level.)
-
-Most instantiations that use an IDENTIFIER are specified as follows:
-
-verb(\TYPE{ \IDENTIFIER [...] })
-
-Some exceptions on this rule have been made to prevent inputting
-Mudela becoming tedious
-)
-
subsect(Modes)
label(modes)
been created yet. You must explicitly specify the Voice context in
this situation
mudela(fragment,verbatim,center)(
-\type Voice { \times 2/3 {c'4 d' e'}}
+\context Voice { \times 2/3 {c'4 d' e'}}
)
A shorthand for code(\times) is to write code(*)var(fraction) after a
mudela(fragment,verbatim,center)(
r1 r1*3 R1*3
)
-If you set the code(Score.SkipBars) property, then only one measure will be
+If you set the code(Score.skipBars) property, then only one measure will be
printed; with code(R), a number indicating the length of the rest will be
displayed.
mudela(fragment,verbatim,center)(
-\property Score.SkipBars=1
+\property Score.skipBars=1
r1 r1*3 R1*3
)
Even though the code(\times) command is not explicit, it is still
R1*3 c'1 d'
)
+
+subsect(Automatic Beam Generation)
+label(autobeam)
+
+By default, Lilypond will generate beams automatically. This feature can be
+disabled by setting the code(Voice.beamAuto) property to 0. It can be
+overridden for specific cases by specifying explicit beams as
+described in Section ref(manualbeam).
+
+In order to decide how to generate beams, Lilypond uses a large number
+of Voice properties, whose 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) property. To
+end beams every quarter note, for example, you could use set
+code(Voice.beamAutoEnd) equal to code("1/4"). To end beams 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).
+
+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(/)code(M) time. So 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).
+
+
subsect(Note Spanners: Beams, Slurs and Ties)
+label(manualbeam)
A beam is specified by surrounding the beamed notes with brackets
code([) and code(]).
)
Some more elaborate constructions:
mudela(fragment,verbatim,center)(
-[a'16 <a' c''> c'' <a' c''>]
+[a'16 <a' c''> c'' <a' c''>]
\times 2/3 { [e'8 f' g'] }
)
f'()g'()a' [a'8 b'(] a'4 g' )f'
)
-A tie connects two adjacent note heads. When used with chords, it
-connects all of the note heads. Ties are indicated using the tilde symbol
+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(~) by analogy with TeX()'s tie which connects words.
+Note that if you try to tie together chords which have no common
+pitches, then a warning message will appear and no tie will be created.
+(Note that ties between different pitches can be enabled using the
+property Voice.oldTieBehavior.)
mudela(fragment,verbatim,center)(
e' ~ e' <c' e' g'> ~ <c' e' g'>
It is possible to create beams and slurs that cross staffs by switching the
context:
mudela(fragment,verbatim,center)(
-<
-\type Staff=one \notes\relative c'{
+\context PianoStaff <
+\context Staff=one \notes\relative c'{
\stemup
[c8 c \translator Staff=two \stemup c c]
\translator Staff=one
d4( \translator Staff=two )a4
}
-\type Staff=two \notes{ \clef bass;}
+\context Staff=two \notes{ \clef bass; s1}
>
)
-COMMENT(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
subsect(Note 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 different
-symbols are defined in file(script.ly). Each symbol is defined using
-the code(\script) keyword which specifies where symbols appear.
-Symbols can be forced to appear above the note by writing
+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 the note by writing
`var(note)code(^\)var(name)', and they can be forced to appear below
by writing `var(note)code(_\)var(name)'. Here is a chart showing
symbols above notes, with the name of the corresponding symbol
-appearing underneath.
+appearing underneath.
mudela()(
\score{
c''-\open c''-\flageolet c''-\reverseturn
c''-\trill
c''-\prall c''-\mordent c''-\prallprall c''-\prallmordent
- c''-\upprall c''-\downprall c''-\thumb }
- \type 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 }
+ c''-\upprall c''-\downprall c''-\thumb c''-\segno c''-\wheel}
+ \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 wheel}
>
\paper{ linewidth = 5.875\in;
indent = 0.0; }
}
)
-COMMENT( The following are defined in script.ly but do not work:
-
-portato lbheel rbheel lbtoe rbtoe lfheel rfheel lftoe rftoe )
-
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 can be placed by simply using digits.
single characters:
mudela()(
\score{ \notes {
- \property Voice.textstyle = typewriter
+ \property Voice.textStyle = typewriter
c''4-._"c-." s4
c''4--_"c-{}-" s4
c''4-+_"c-+" s4
c''4-^_"c-\\^{ }" s4 }
\paper { linewidth = 12.\cm; }})
-Dynamic marks are specified by using an identifier after a note
-without a dash: code(c4 \ff). Note that this syntax is inconsistent
-with the syntax for other types of ornaments. The available dynamic
-marks are: code(\pppppp), code(\ppppp), code (\pppp), code(\ppp), code(\pp),
-code(\p), code(\mp), code(\mf), code(\f), code(\ff), code(\fff),
-code(\ffff), code(\fffff), code(\ffffff),
-code(\fp), code(sf), code(\sff), code(\sp), code(\spp), (\sfz) and code (\rfz).
+Dynamic marks are specified by using an identifier after a note without a dash:
+code(c4 \ff). Note that this syntax is inconsistent with the syntax for other
+types of ornaments. The available dynamic marks are: code(\pppppp),
+code(\ppppp), code(\pppp), code(\ppp), code(\pp), code(\p), code(\mp),
+code(\mf), code(\f), code(\ff), code(\fff), code(\ffff), code(\fffff),
+code(\ffffff), code(\fp), code(\sf), code(\sff), code(\sp), code(\spp),
+code(\sfz) and code(\rfz).
A crescendo mark is started with code(\cr) and terminated with
code(\rc). A decrescendo mark is started with code(\decr) and
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)
+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)
subsect(Relative Pitch Specification)
label(relative)
chord are determined by looking at the immediately preceeding note.
mudela(fragment,verbatim,center)(
-\relative c' { <c e g>
+\relative c' { c <c e g>
<c' e g> <c, e' g> }
)
above. Also note that if the music passed to a code(\relative) keyword
contains a code(\transpose) keyword, the tranposed music will not be
processed in relative mode. An additional code(\relative) must be placed
-inside the code(\transpose).
+inside the code(\transpose). If code(\relative) will be used several
+times, or if it will be used in the same music with code(\transpose),
+then you may get bizarre effects. This can be fixed by using an
+explicit code(Staff) context.
subsect(Tranposition of Pitches)
If you want to use both code(\transpose) and code(\relative), then you must use
code(\transpose) first. Any code(\relative) keywords that are outside the
code(\transpose) have no effect on notes that appear inside the
-code(\transpose).
+code(\transpose). As with code(\relative), using code(\transpose)
+repeatedly can cause bizarre effects. An explicit code(Staff) context
+will eliminate the problems.
sect(Chords)
or directly using angle brackets.
mudela(fragment,verbatim)(
<
- \type ChordNames { \chords{ a b c} \notes{ < d f g > < e g b > } }
- \type Staff \notes{ a b c' d' e' }
+ \context ChordNames { \chords{ a b c} \notes{ < d f g > < e g b > } }
+ \context Staff \notes{ a b c' d' e' }
>
)
Lilypond examines chords specified as lists of notes to determine a
chord inversions:
mudela(fragment,verbatim,center)(
<
- \type ChordNames {
+ \context ChordNames {
\notes{ < e' g' c'' > } }
- \type Staff \notes{ c' }
+ \context Staff \notes{ c' }
>)
If you want inversions to be recognized, you must set the property
code(Score.chordInversion):
mudela(fragment,verbatim,center)(
<
\property Score.chordInversion = 1
- \type ChordNames {
+ \context ChordNames {
\notes{ < e' g' c'' > } }
- \type Staff \notes{ c' }
+ \context Staff \notes{ c' }
>)
-COMMENT(
- Two other properties
- chordInversionPreserve
- and chordNameStyle = Banter
- exist. What do these do?
-)
sect(Lyrics)
See Section ref(modes) for a description of what is interpreted as a lyric.
In order to instruct LilyPond to write lyrics underneath the
-staff, you must enter the lyrics context with code(\type Lyrics).
+staff, you must enter the lyrics context with code(\context Lyrics).
Lyrics should be entered in lyrics mode which is entered with code(\lyrics).
Spaces can be introduced into a lyric either by using quotes (code("))
mudela(verbatim)(\score{
< \notes \transpose c'' {c d e c | c d e c | e f g'2 |
e'4 f g'2 \bar "|."; }
- \type Lyrics \lyrics {
+ \context Lyrics \lyrics {
DOEXPAND(Fr\)`e-4 re Ja- que DOEXPAND(Fr\)`e- re Ja- que
Dor- mez vous?2 Dor-4 mez vous?2 }
>
When one word is attached to many notes, you may
want a continuous line after the lyric to show this. To achieve
-this effect, add a code(__) lyric after the lyric to be extended.
+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. There must be a lyric after the code(__), so if you want
-to extend the final lyric, you will have to end with a blank lyric.
-mudela(verbatim,center)(
-\score{
+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.
+mudela(verbatim)(\score{
< \notes \relative c''{
- a4()b()c()d c()d()b()a }
- \type Lyrics \lyrics {
- foo1 __ bar2. __ _ }
+ a4()b()c()d c()d()b()a c()d()b()a }
+ \context Lyrics \lyrics {
+ foo1 __ bar2. __ _4 baz1 __ }
> })
+If you want to have hyphens centred between syllables (rather than attached
+to the end of the first syllable) you can use the special code(--) lyric as
+separate word between syllables. This will result in a hyphen whose length
+varies depending on the space between syllables, and centred between the
+syllables. For example:
+mudela(verbatim)(\score{
+ < \notes \transpose c'' {c d e c | c d e c | e f g'2 |
+ e'4 f g'2 \bar "|."; }
+ \context Lyrics \lyrics {
+ DOEXPAND(Fr\)`e4 -- re Ja -- que DOEXPAND(Fr\)`e -- re Ja -- que
+ Dor -- mez vous?2 Dor4 -- mez vous?2 }
+ >
+})
-COMMENT(Broken!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
+
sect(Time)
signature enables LilyPond to draw bar lines automatically. The time
signature is specified with the code(\time) keyword: code(\time 3/4).
If no time signature is given, LilyPond assumes 4/4. The automatic
-generation of bar lines can toggled with the code(\cadenza) keyword,
+generation of bar lines can toggled with the code(\cadenza) keyword or the
+code(Staff.barNonAuto) property,
and an incomplete measure at the start of the music can be created
using the code(\partial) keyword: code(\partial 8*2;) creates a
starting measure lasting two eighth notes.
your music by typing code(|). Whenever LilyPond encounters a code(|)
that doesn't fall at a measure boundary, she prints a warning message.
-Rhythmic grouping is a concept closely associated with this.
-A default grouping is selected for the chosen time signature.
-The default consists of combinations of 2 and 3 beats with as many
-groups of 3 as possible, and the groups of 3 coming first. For
-example, 4/4 is divided into 2+2 and 8/8 is divided into 3+3+2. This
-default grouping can be changed using the \grouping keyword which
-takes a list of durations to specify the grouping.
-
COMMENT(
sect(Composition: forming bigger structures)
row(cell()cell(code(|) code({) em(MusicList) code(})))
row(cell()cell(code(|) code(<) em(MusicList) code(>)))
row(cell()cell(code(|) em(Command)))
- row(cell()cell(code(|) code(\type) em(string) code(=) em(string) em(Music)))
+ row(cell()cell(code(|) code(\context) em(string) code(=) em(string) em(Music)))
row(cell()cell(;))
row(cell(em(MusicList))cell(: em(empty)))
row(cell()cell(code(|) em(MusicList) em(Music)))
d % from c to the d that's almost one octave down
{ e4 f4 } % the horizontal music
)
-it()verb(\type)
+it()verb(\context)
it()verb(\property)
it()verb(\translator)
it()verb(\relative)
{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords
)
-)
+END OF COMMENT )
sect(Repeats)
default, repeats are printed with repeat symbols.
mudela(fragment,verbatim,center)(
c'1
-\repeat 2 { c'4 d' e' f' }
-\repeat 2 { f' e' d' c' })
+\repeat semi 2 { c'4 d' e' f' }
+\repeat semi 2 { f' e' d' c' })
In order to specify alternate endings, use the code(\alternative)
keyword.
mudela(fragment,verbatim,center)(
c'1
-\repeat 2 {c'4 d' e' f'}
+\repeat semi 2 {c'4 d' e' f'}
+\alternative { {d'2 d'} {f' f} })
+The code(semi) specifies that normal repeats will be printed. If
+code(fold) is used instead then the alternatives will be stacked:
+mudela(fragment,verbatim,center)(
+c'1
+\repeat fold 2 {c'4 d' e' f'}
\alternative { {d'2 d'} {f' f} })
When the repeats involve partial measures, it will be necessary to use
-code(\partial) keywords to indicate which measures are short.
+code(\partial) keywords in a somewhat unexpected way
+to indicate some measure lengths.
mudela(fragment,verbatim)(
-\type Staff { \relative c'{
- \repeat 2 { \partial 4; e | c2 d2 | e2 f2 | }
- \alternative { { g4 g g } {\partial 2.; a a a a | b1 } }
+\context Staff { \relative c'{
+ \repeat semi 2 { \partial 4; e | c2 d2 | e2 f2 | }
+ \alternative { { g4 g g } {\partial 1; a a a a | b1 } }
+}})
+Repeats can be unfolded by setting the property Staff.unfoldRepeats.
+Note also that if your music begins with code(\repeat), you must place
+it in an explicit code(Staff) context or you will get bizarre results.
+
+If you don't give enough alternatives for all of the repeats, then the
+first alternative is assumed to be repeated enough to equal to
+specified number of repeats.
+mudela(fragment,verbatim)(
+\context Staff { \relative c'{
+ \repeat semi 3 { \partial 4; e | c2 d2 | e2 f2 | }
+ \alternative { { g4 g g } {\partial 1; e4 e e }
+ {\partial 1; a a a a | b1 } }
}})
-Repeats can be unfolded by setting the unfoldRepeats
sect(Keywords)
Normally you should use the more user friendly abbreviations defined
in the init file file(dynamic.ly).
+FIXME: Changed to code(\textscript) var(text) var(style). Defines
+a text-request.
+
dit(code(\accepts) var(string)code(;)) This keyword can appear only within a
code(\translator) block. It specifies what contexts are allowed with the
context that is being defined. See Section ref(translators).
dit(code(\cadenza) var(togglevalue)code(;)) Toggles the automatic generation
of bar lines. If var(togglevalue) is 0 then bar line generation is
-turne off. If var(togglevalue) is 1 then a bar is immediately
-printed and bar generation is turned on.
+turned off. If var(togglevalue) is 1 then a bar is immediately
+printed and bar generation is turned on.
dit(code(\clef) var(clefname)code(;)) Allowed only in music.
Sets the current clef. The argument is
mudela(center)(
\score{
\notes{ \cadenza 1;
- %\property Voice.textstyle = typewriter
+ %\property Voice.textStyle = typewriter
\clef subbass; c'4-"\kern-10mm subbass"
\clef bass; c'4^"\kern -8mm bass"
\clef baritone; c'4_"\kern -10mm baritone"
\clef varbaritone; c'4^"\kern -10mm varbaritone"
\clef tenor; c'4_"\kern -10mm tenor"
- \clef "G_8"; c'4^"\kern -6mm G\_8" }
+ \clef "G_8"; c'4^"\kern -6mm G\_8"
+ }
\paper{ linewidth= 4.5 \in; }
}
)
The treble clef can also be obtained using the names code(G) or
code(violin). The bass clef is also available by code(\clef F).
+dit(code(\chord) var(chordlist)) Parse var(chordlist) in chords mode.
+
+dit(code(\chordmodifiers) var(modifierlist)) Specify the text chord
+modifiers that may appear after chord names. These are specified in
+the file file(chord-modifiers.ly).
+
dit(code(\cm)) Specify a dimension in centimeters.
dit(code(\consists) var(string)code(;)) This keyword can appear only within a
var(string) should be added to the translator. See Section
ref(translators).
+dit(code(\consistsend) var(string)code(;)) Unknown function.
+
+dit(code(\context) var(contexttype) [code(=) var(contextname)]
+var(music) or code(\context) var(translatortype)code(;)) The first
+variant is used only within music to create an instance of a
+context. The new context can optionally be given a name. The
+specified var(music) is processed in the new context. The second
+variant appears within a code(\translator) block and specifies the
+type of translator being created.
+
dit(code(\duration) code({) var(length) var(dotcount) code(})) Specify note
duration. The parameter var(length) is the negative logarithm (base
2) of duration: 1 is a half note, 2 is a quarter note, 3 is an eighth
dit(code(\font) var(string)) Internal keyword. Used within
code(\paper) to specify the font.
-dit(code(\grouping) var(durationseq)code(;)) Sets the metric structure of
-the measure. Each argument specifies the duration of one metric unit.
-For example, code(\duration 16*5;) specifies a grouping of five beats
-together in 5/16 time. The default grouping is to have as many groups
-of 3 as possible followed by groups of two.
dit(code(\header) code({) var(key1) = var(val1); var(key2) = var(val2); ... code(}))
Specifies information about the music. A header should appear at the
each score block describing its contents. Tools like code(ly2dvi) can
use this information for generating titles. Key values that are used
by ly2dvi are: title, subtitle, composer, opus, poet, instrument,
-metre, arranger, and piece.
+metre, arranger, piece and tagline.
dit(code(\in)) Specify a dimension in inches.
var(type) should be code(\major) or code(\minor) to get
var(pitch)-major or var(pitch)-minor, respectively. The second
argument is optional, the default is major keys.
-The var(\type) argument can also be given as an integer, which tells
+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) commands to get the corresponding major key,
-e.g. code(\minor) is defined as 3.
+e.g. code(\minor) is defined as 3. The standard mode names
+code(\ionian), code(\locrian), code(\aeolian), code(\mixolydian),
+code(\lydian), code(\phrygian), and code(\dorian) are also defined.
dit(code(\keysignature) var(pitchseq)code(;))
Specify an arbitrary key signature. The pitches from var(pitch) will
output. See Section ref(paper).
dit(code(\partial) var(duration)code(;)) Specify that the first measure of
-the music lasts only for the specified duration.
+the music lasts only for the specified duration. Use also to specify
+the duration of the first measure of the argument to
+code(\alternative).
-dit(code(\penalty) code(=) var(int)code(;)) Allowed only in music.
+dit(code(\penalty) var(int)code(;)) Allowed only in music.
Discourage or encourage line breaks. See identifiers code(\break) and
code(\nobreak) in Section ref(ident).
code(\translator) block. Specifies that a performer or engraver named
var(string) should be removed. See Section ref(translators).
-dit(code(\repeat) var(count) code({) var(music) code(}))
+dit(code(\repeat) var(style) var(count) code({) var(music) code(}))
Repeats the specified
music var(count) times. Alternative endings can be specified by adding a
-code(\alternative) keyword after the code(\repeat).
+code(\alternative) keyword after the code(\repeat). The var(style)
+parameter should be either code(semi), for regular repeats, or
+code(fold) for repeats displayed vertically.
dit(code(\scm) var(scheme)code(;)) Embeds specified Scheme code.
is the top level notation context.
COMMENT(this still needs work)
-dit(code(\script) code({) var(name) var(instaff) var(withstem)
-var(location) var(invertible) var(priority) code(})) This keyword is
-used the initialization file(script.ly) to define the various symbols
-that can appear above and below notes. The first argument is the name
-of the symbol. The second argument var(instaff) is 1 if the symbol
-follows the notehead into the staff and 0 if the symbol stays above or
-below the staff lines. The third parameter var(withstem) is 0 if the
-symbol's placement does not depend on the stem direction; it is 1 if
-the symbol should be at the stem end of the note and it is -1 if the
-symbol should be at the note head end of the note. The argument
-var(location) is set to 1 for symbols that always appear above the
-staff; it is -1 for symbols that appear below the staff. If
-var(invertible) is set to 1 then the symbol can be inverted; otherwise
-it cannot. The last argument var(priority) sets a priority for the
-order of placement of several symbols on a single note.
+dit(code(\script) var(alias)) 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) keyword is not used
+directly. Various helpful identifier definitions appear in
+file(script.ly).
dit(code(\shape) code(=) var(indent1) var(width1) var(indent2)
var(width2) ... code(;)) Allowed only within code(\paper). Each pair
printed. It works in Note Mode or Lyrics Mode (but generates a
mysterious error in lyrics).
-dit(code(\spandynamic) code({) var(kind) var(toggle) code(})) Internal
-keyword for crescendo and decrescendo symbols. The first parameter
-var(kind) is set to 1 for a crescendo and -1 for a decrescendo. The
-second parameter is set to 1 to start the mark and 2 to stop it.
-Users should use the abbreviations which are defined in the
+dit(code(\spanrequest) var(startstop) var(type)). Define a spanning request
+var(startstop) is either -1 (code(\start)) or 1 (code(\stop)). The var(type)
+parameter is a string that describes what should be started. Supported types
+are "crescendo", "decrescendo", "beam", "slur". This is an internal command.
+Users should use the abbreviations which are defined in the
initialization file file(dynamic.ly).
dit(code(\tempo) var(duration) = var(perminute)code(;)) Used within
only the last one is used to set the tempo for the entire MIDI output.
COMMENT(Is this true?)
+dit(code(\textscript) var(text) var(style)) Print the specified text as a
+script in the specified style.
+
dit(code(\time) var(numerator)code(/)var(denominator)code(;)) Change the time
signature. The default time signature is 4/4.
var(context) = var(name)) The first variant appears only within
code(\paper) and specifies a translator for
converting music to notation. The translator is specified with a
-single code(\type) statement and a series of code(\accepts), and
+single code(\context) statement and a series of code(\accepts), and
code(\consists) statements. See Section ref(translators).
The second variant appears in
music. It specifies that the current the contexts
transposition should be specified inside another code(\relative). See Section
ref(transpose).
-dit(code(\type) var(contexttype) [code(=) var(contextname)]
-var(music) or code(\type) var(translatortype)code(;)) The first
-variant is used only within music to create an instance of a
-context. The new context can optionally be given a name. The
-specified var(music) is processed in the new context. The second
-variant appears within a code(\translator) block and specifies the
-type of translator being created.
+dit(code(\type) var(string)code(;)) Use inside code(\translator) to
+specify the type of the translator.
dit(code(\version) var(string)) Specify the version of Mudela that a
file was written for. The argument is the version number, for example
Notation contexts provide information that appears in printed music
but not in the music itself. A new musical context is created using
-the code(\type) keyword: `code(\type) var(contexttype) [code(=)
+the code(\context) keyword: `code(\context) var(contexttype) [code(=)
var(contextname)] var(music)'. The following context types are
allowed.
contained staffs are not connected vertically.
dit(code(Score)) This is the top level notation context. It is specified with
-the code(\score) keyword rather than the code(\type) command. No
+the code(\score) keyword rather than the code(\context) command. 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
description(
-dit(code(textstyle)) Set the font for lyrics. The available font
+dit(code(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
are parsed, either put quotes around the arguments to code(\property)
or be sure to leave a space on both sides of the dot.
-dit(code(textalignment)) Controls alignment of lyrics. Set to code(\left)
-to align the left end of the lyric with the note; set to code(\right) to
-align the right end of the lyric with the note. Set to code(\center) to
-align the center of the lyric with the note.
)
description(
-dit(code("midi_instrument")) Sets the instrument for MIDI output. This
+dit(code(stemLeftBeamCount)) Specify the number of beams to draw on
+the left side of the next note.
+
+dit(code(stemRightBeamCount)) Specify the number of beams to draw on
+the right side of the next note.
+
+dit(code(beamAuto)) If set to 1 then beams are generated
+automatically. If set to zero then no beams will be automatically
+generated. The default value is 1.
+
+dit(code(beamAutoEnd)) Specifies when automatically generated beams
+can end. See Section ref(autobeam).
+
+dit(code(beamAutoBegin)) Specifies when automatically generated beams
+can start. See Section ref(autobeam).
+
+dit(code(textEmptyDimension)) If set to 1 then text placed above or
+below the staff is assumed to have zero width.
+
+dit(code(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.;}
+}
+)
+
+
+dit(code(restStyle)) Change the layout of rests shorter than quarter notes.
+Currently, the standard layout code(restStyle="") and mensural notation
+code(restStyle="mensural") are available.
+
+dit(code("midiInstrument")) Sets the instrument for MIDI output. This
property name must be quoted because of the embedded underscore. 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
dit(code(transposing)) Tranpose the MIDI output. Set this property to
the number of half-steps to transpose by.
-dit(code(ydirection)) Determines the direction of stems, subscripts,
+dit(code(oldTieBehavior)) Set to 1 in order to get old tie behavior
+where ties would connect unequal pitches.
+
+dit(code(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
this property. See also the identifiers code(\voiceone),
code(\voicetwo), code(\voicethree) and code(\voicefour).
-dit(code(slurydirection)) Set to code(\free) for free choice of slur
+dit(code(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), code(\slurdown), and
code(\slurboth) are available.
-dit(code(tieydirection)) Set to code(\free) for free choice of tie
+dit(code(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.
a larger value for dashed slurs. Identifiers code(\slurnormal) and
code(\slurdotted) are predefined to set the first two settings.
-dit(code(hshift)) Set to 1 to enable LilyPond to shift notes
+dit(code(horizontalNoteShift)) Set to 1 to 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) is
-defined to enable this.
+defined to enable this. If there are several voices, every voice must
+have a distinct value of this property or no shifting will occur.
dit(code(dynamicDir)) 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.
-dit(code(textalignment)) Controls alignment of superscripted and
-subscripted text. Set to \left to align the left end of the text with
-the note; set to \right to align the right end of the text with the
-note. Set to \center to align the center of the text with the note.
+dit(code(dynamicStyle)) Set the text style for dynamics.
-dit(code(textstyle)) Set the text style for superscripts and
+dit(code(textStyle)) Set the text style for superscripts and
subscripts. See above for list of text styles.
-dit(code(fontsize)) Can be used to select smaller font sizes for
+dit(code(textScriptPadding)) Determines the extra space added between
+super-/subscripted text and the closest staff line or note.
+
+dit(code(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.
-dit(code(pletvisibility)) Determines whether tuplets of notes are
+dit(code(abbrev)) Set length for tremolo to be used if no length is
+explicitly specified.
+
+dit(code(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.
+
+dit(code(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.
+setting to 4 shows both a number and a bracket unconditionally. The
+code(pletoff) and code(pleton) identifiers set the property to 0 and 3,
+respectively.
dit(code(markScriptPadding)) Determines the extra space added between
the mark and the closest staff line or note.
or below the staff. Set to code(\up) to print marks above the staff;
set to code(\down) to print marks below the staff.
+dit(code(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.
)
subsubsubsect(Staff properties)
description(
-
+
+dit(code(createInitdefaultClef)) Specify whether clefs are created on
+default? (Doesn't seem to do anything.)
+
+dit(code(barNumberDirection)) Set to code(\up) or code(\down) to put
+bar numbers above or below the staff.
+
+dit(code(barNumberHangOnClef)) Set to 1 to cause bar numbers to appear
+above or below the clef instead of on the bar line.
+
+dit(code(barNumberScriptPadding)) Sets extra space between the bar
+number and the bar it labels.
+
+dit(code(barSize)) Specify the height of the bar lines if it should be
+different than the staff height.
+
+dit(code(markHangOnClef)) Set to 1 to cause marks to appear by clefs
+instead of by bar lines.
+
+dit(code(marginDirection)) Set to code(\left) or code(\right) to
+specify location of marginal scripts.
+
+dit(code(marginScriptPadding)) Specify extra space for marginal scripts.
+
+dit(code(forgetAccidentals)) Causes accidentals to be printed at every
+note instead of remembered for the duration of a measure.
+
+dit(code(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.
+
+dit(code(staffLineLeading)) Specifies the distance (in points) between lines
+of the staff.
+
+dit(code(numberOfStaffLines)) Specifies the number of staff lines. The
+default is 5.
+
+dit(code(postBreakPadding)) Extra space in points to be added after
+the clef, time signature and key signature on the staff.
+
+dit(code(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).
+
+dit(code(voltaVisibility)) Set to 0 to suppress the printing
+of brackets over alternate endings specified by code(\alternative).
+
+dit(code(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 seems
+to be 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).
+
+dit(code(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.
+
dit(code(defaultClef)) Determines the default clef. See code(\clef)
keyword.
-dit(code(nolines)) Sets the number of lines that the staff has.
+dit(code(nuberOfStaffLines)) Sets the number of lines that the staff has.
dit(code(barAlways)) If set to 1 a bar line is drawn after each note.
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(midi_instrument) property is not set then code(instrument) is
+code(midiInstrument) property is not set then code(instrument) is
used to determine the instrument for MIDI output.
COMMENT(This prints the instrument name on top of the staff lines.)
-dit(code(abbrev)) Set length for tremolo to be used if no length is
-explicitly specified.
-
dit(code(createKeyOnClefChange)) Set to a nonempty string if you want key
signatures to be printed when the clef changes. Set to the empty string (the
default) if you do not want key signatures printed.
description(
dit(code(C)) 4/4 and 2/2 are typeset as C and struck C,
respectively. All other time signatures are written with two digits.
- dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
- old-style mensuration marks. All other time signatures are
+ dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4, 9/4, 6/8 and 9/8 are typeset
+ with old-style mensuration marks. All other time signatures are
written with two digits.
dit(code(1)) All time signatures are typeset with a single
digit, e.g. 3/2 is written as 3.
dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2),
- code(old3/4), code(old4/4), code(old6/4) or
- code(old9/4)) Tells Lilypond to use a specific symbol as time
- signature.
+ code(old3/4), code(old4/4), code(old6/4), code(old9/4),
+ code(old6/8) or code(old9/8))Tells Lilypond to use a
+ specific symbol as time signature.
)
The different time signature characters are shown below with
their names:
-mudela(fragment,center)(
-\relative c'' {
-\property Voice.textstyle = typewriter
+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^"old6/4" a2
\property Staff.timeSignatureStyle = "old9/4"
\time 2/2; a2^"old9/4" a2
+\property Staff.timeSignatureStyle = "old6/8"
+\time 2/2; a2^"old6/8" a2
+\property Staff.timeSignatureStyle = "old9/8"
+\time 2/2; a2^"old9/8" a2
+}
+ \paper{ linewidth= 4.5 \in; }
}
)
-COMMENT(Broken!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
-
+dit(code(clefStyle)) Determines how clefs are typeset. When set to
+code(transparent), the clefs are not printed at all, when 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.
)
-
-
subsubsubsect(GrandStaff properties)
description(
+dit(code(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.
+
dit(code(maxVerticalAlign)) Set the maximum vertical distance between
staffs.
description(
-dit(code(SkipBars)) Set to 1 to skip the empty bars that are produced
+dit(code(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
)
-COMMENT(
-
-Mystery properties:
-
-bar-number-engraver.cc: "barScriptPadding" vertical space for numbers
-span-bar-engraver.cc: "singleStaffBracket" do single staffs get a bracket?
-)
sect(Pre-defined Identifiers)
label(ident)
provide shorthands for some settings.
description(
+dit(code(\aeolian)) Used as the second argument of the code(\key)
+keyword to get an aeolian mode.
dit(code(\break)) Force a line break in music by using a large
argument for the keyword code(\penalty).
dit(code(\center)) Used for setting textalignment property. Is set to 0.
dit(code(\cr)) Start a crescendo.
dit(code(\decr)) Start a decrescendo.
+dit(code(\dorian)) Used as the second argument of the code(\key)
+keyword to get a dorian mode.
dit(code(\down)) Used for setting direction setting properties. Is
equal to -1.
dit(code(\f)) Print forte symbol on the preceeding note.
code(castingalgorithm). Is equal to 1.0.
dit(code(\infinity)) Used for setting the Score.beamslopedamping
property. Is actually equal to 10000.
+dit(code(\ionian)) Used as the second argument of the code(\key)
+keyword to get an ionian mode.
dit(code(\left)) Used for setting textalignment property. Is equal to -1.
+dit(code(\locrian)) Used as the second argument of the code(\key)
+keyword to get a locrian mode.
+dit(code(\lydian)) Used as the second argument of the code(\key)
+keyword to get a lydian mode.
dit(code(\major)) Used as the second argument of the code(\key)
-command to get a major key.
+keyword to get a major key.
dit(code(\minor)) Used as the second argument of the code(\key)
-command to get a minor key.
+keyword to get a minor key.
+dit(code(\mixolydian)) Used as the second argument of the code(\key)
+keyword to get a mixolydian mode.
dit(code(\mf)) Print mezzoforte symbol on preceeding note.
dit(code(\mp)) Print mezzopiano symbol on preceeding note.
dit(code(\nobreak)) Prevent a line break in music by using a large
dit(code(\normalkey)) Select normal key signatures where each octave
has the same key signature. This sets the Staff.keyoctaviation property.
dit(code(\p)) Print a piano symbol on preceeding note.
+dit(code(\phrygian)) Used as the second argument of the code(\key)
+keyword to get a phrygian mode.
dit(code(\pp)) Print pianissimo symbol on preceeding note.
dit(code(\ppp)) Print pianississimo symbol on preceeding note.
dit(code(\pppp)) Print pianissississimo symbol on preceeding note.
dit(code(\sff)) Print a subito-fortissimo symbol on preceeding note.
dit(code(\sfz)) Print a sforzato symbol on preceeding note.
dit(code(\shiftoff)) Disable horizontal shifting of note heads that collide.
-Sets the Voice.hshift property.
+Sets the Voice.horizontalNoteShift property.
dit(code(\shifton)) Enable note heads that collide with other note heads
-to be shifted horiztonally. Sets the Voice.hshift property.
+to be shifted horiztonally. Sets the Voice.horizontalNoteShift property.
dit(code(\slurboth)) Allow slurs to be above or below notes. This
-sets the Voice.slurydirection property.
+sets the Voice.slurVerticalDirection property.
dit(code(\slurdown)) Force slurs to be below notes. This sets the
-Voice.slurydirection property.
+Voice.slurVerticalDirection property.
dit(code(\slurup)) Force slurs to be above notes. This sets the
-Voice.slurydirection property.
+Voice.slurVerticalDirection property.
dit(code(\sp)) Print a subito-piano symbol on preceeding note.
dit(code(\spp)) Print a subito-forte symbol on preceeding note.
dit(code(\specialkey)) Allow keys signatures do differ in different
octaves. This sets the Staff.keyoctaviation property.
dit(code(\stemboth)) Allow stems, beams, and slurs to point either
-direction. This sets the Voice.ydirection property.
+direction. This sets the Voice.verticalDirection property.
dit(code(\stemdown)) Force stems, beams, and slurs to point down.
-This sets the Voice.ydirection property.
+This sets the Voice.verticalDirection property.
dit(code(\stemup)) Force stems, beams and slurs to point up. This
-sets the Voice.ydirection property.
+sets the Voice.verticalDirection property.
dit(code(\traditional)) Used for setting the
Score.beamquantisation property. Is equal to 2.
dit(code(\up)) Used for setting various direction properties. Is
dit(var(integer)) If an integer appears on the left side of an
assignment then a code(\font) keyword must appear on the right
side. This defines a music font at a particular size. See Voice
-property code(\fontsize).
+property code(fontSize).
dit(code(arithmetic_basicspace) and code(arithmetic_multiplier))
The space taken by a note is determined by the formula
shortest note in the measure. Typically arithmetic_basicspace is set
to the width of a quarter note head.
-dit(code(barsize)) Specify height of bars. This value may need to be
-adjusted if you change the number of lines in the staff.
dit(code(beam_dir_algorithm)) Specify algorithm for determining
whether beams go up or down. It is real valued. If set to 2.0 then
majority selection is used. If set to 3.0, then mean selection is
used based on the mean center distance. If set to 4.0 then median
selection is used, based on the median center distance.
dit(code(castingalgorithm))
+dit(code(crescendo_shorten))
dit(code(forced_stem_shorten)) Stems that have been forced to go the
unnatural direction are shortened by this amount. Equal to
dit(code(forced_stem_shorten0))
subsect(MIDI Instrument Names)
label(midilist)
-The MIDI instrument name is set by the code(Staff."midi_instrument")
+The MIDI instrument name is set by the code(Staff.midiInstrument)
property or, if that property is not set, the code(Staff.instrument)
property. The instrument name should be chosen from this list. If
string does not exactly match one from this list then LilyPond uses