@cindex quarter tones
@cindex semi-flats, semi-sharps
-@lilypond[verbatim,relative 2]
+@lilypond[verbatim,relative=2]
ceses4
ceseh
ces
Rests are entered like notes, with the note name @code{r}:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
r1 r2 r4 r8
@end lilypond
formatting in polyphonic music easier. Rest collision testing will
leave these rests alone:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
a'4\rest d'4\rest
@end lilypond
An invisible rest (also called a `skip') can be entered like a note
with note name `@code{s}' or with @code{\skip @var{duration}}:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
a2 s4 a4 \skip 1 a4
@end lilypond
-The @code{s} syntax is only available in Note mode and Chord mode. In
+The @code{s} syntax is only available in note mode and chord mode. In
other situations, you should use the @code{\skip} command:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
\score {
\new Staff <<
{ \time 4/8 \skip 2 \time 4/4 }
The skip command is merely an empty musical placeholder. It does not
produce any output, not even transparent output.
+The @code{s} skip command does create @internalsref{Staff} and
+@internalsref{Voice} when necessary, similar to note and rest
+commands. For example, the following results in an empty staff.
+
+@lilypond[raggedright,verbatim]
+\score { \notes { s4 } }
+@end lilypond
+
+The same fragment using @code{\skip} results in an empty page.
+
@seealso
-Internals: @internalsref{SkipEvent}.
+Internals: @internalsref{SkipEvent}, @internalsref{SkipMusic}.
will not affect the appearance of the notes or rests produced.
In the following example, the first three notes take up exactly two
beats:
-@lilypond[fragment,relative 2,verbatim]
+@lilypond[fragment,relative=2,verbatim]
\time 2/4
a4*2/3 gis4*2/3 a4*2/3
a4
to the augmentation dot; in the following example there are two ways of
notating exactly the same concept:
@c
-@lilypond[fragment, singleline,quote]
+@lilypond[fragment,raggedright,quote]
\time 3/4 c'2. c'2 ~ c'4
@end lilypond
If you need to tie a lot of notes over bars, it may be easier to use automatic
example, there are two triplets shown, while @code{\times} was only
used once:
-@lilypond[fragment, relative, singleline, verbatim]
+@lilypond[fragment,relative,raggedright,verbatim]
\property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
\times 2/3 { c'8 c c c c c }
@end lilypond
predecessor of the first note of @var{musicexpr}.
Here is the relative mode shown in action:
-@lilypond[fragment,singleline,verbatim,center]
+@lilypond[fragment,raggedright,verbatim,center]
\relative c'' {
b c d c b c bes a
}
This can be used to skip over the parts of a score that have already
been checked for errors:
-@lilypond[fragment,singleline,verbatim]
+@lilypond[fragment,raggedright,verbatim]
\relative c'' { c8 d
\property Score.skipTypesetting = ##t
e f g a g c, f e d
Partial measures, for example in upsteps, are entered using the
@code{\partial} command:
-@lilypond[fragment,verbatim,relative 1]
+@lilypond[fragment,verbatim,relative=1]
\partial 16*5 c16 cis d dis e | a2. c,4 | b2
@end lilypond
@end lilypond
The following bar types are available:
-@lilypond[fragment, relative, singleline, verbatim]
+@lilypond[fragment,relative,raggedright,verbatim]
c4
\bar "|" c
\bar "" c
automatically applied to all staves. The resulting bar lines are
connected between different staves of a @internalsref{StaffGroup}:
@c
-@lilypond[fragment, verbatim]
+@lilypond[fragment,verbatim]
<< \context StaffGroup <<
\new Staff { e'4 d'
\bar "||"
a stem directions and horizontal shift for each part:
@c
-@lilypond[singleline, verbatim]
+@lilypond[raggedright,verbatim]
\relative c''
\context Staff << \new Voice { \voiceOne cis2 b }
\new Voice { \voiceThree b4 ais ~ ais4 gis4 }
Normally, note heads with a different number of dots are not merged, but
when the object property @code{merge-differently-dotted} is set in
the @internalsref{NoteCollision} object, they are merged:
-@lilypond[verbatim,fragment,singleline]
+@lilypond[verbatim,fragment,raggedright]
\relative c'' \context Voice << {
g8 g8
\property Staff.NoteCollision \override
Similarly, you can merge half note heads with eighth notes, by setting
@code{merge-differently-headed}:
-@lilypond[fragment, relative=2,verbatim]
+@lilypond[fragment,relative=2,verbatim]
\context Voice << {
c8 c4.
\property Staff.NoteCollision
LilyPond also vertically shifts rests that are opposite of a stem:
-@lilypond[singleline,fragment,verbatim]
+@lilypond[raggedright,fragment,verbatim]
\context Voice << c''4 \\ r4 >>
@end lilypond
Beams are used to group short notes into chunks that are aligned with
the metrum. They are inserted automatically in most cases:
-@lilypond[fragment,verbatim, relative=2]
+@lilypond[fragment,verbatim,relative=2]
\time 2/4 c8 c c c \time 6/8 c c c c8. c16 c8
@end lilypond
end at 3 eights; the third beam can only be corrected by specifying
manual beaming.
-@lilypond[singleline,fragment,relative,noverbatim,quote]
+@lilypond[raggedright,fragment,relative,noverbatim,quote]
\property Voice.autoBeamSettings
\override #'(end * * * *) = #(ly:make-moment 3 8)
% rather show case where it goes wrong
>>
@}
@end example
-@lilypond[singleline]
+@lilypond[raggedright]
\score {
\notes \relative c'' <<
\new Staff { cis4 d e2 }
This leads to some weird and often unwanted results
because accidentals from one voice do not get cancelled in other
voices:
-@lilypond[singleline,relative,fragment,verbatim,quote]
+@lilypond[raggedright,relative,fragment,verbatim,quote]
\context Staff <<
\voiceAccidentals
<<
You get all the same accidentals, but temporary
accidentals also get cancelled in other octaves. Furthermore,
in the same octave, they also get cancelled in the following measure:
-@lilypond[singleline,fragment,verbatim]
+@lilypond[raggedright,fragment,verbatim]
\modernAccidentals
cis' c'' cis'2 | c'' c'
@end lilypond
``extra'' accidentals (the ones not typeset by
@code{\defaultAccidentals}) are typeset as cautionary accidentals.
They are printed in reduced size or with parentheses:
-@lilypond[singleline,fragment,verbatim]
+@lilypond[raggedright,fragment,verbatim]
\modernCautionaries
cis' c'' cis'2 | c'' c'
@end lilypond
@cindex @code{\noResetKey}
Same as @code{\defaultAccidentals} but with accidentals lasting
``forever'' and not only until the next measure:
-@lilypond[singleline,fragment,verbatim,relative]
+@lilypond[raggedright,fragment,verbatim,relative]
\noResetKey
c1 cis cis c
@end lilypond
are not remembered at all---and hence all accidentals are
typeset relative to the key signature, regardless of what was
before in the music:
-@lilypond[singleline,fragment,verbatim,relative]
+@lilypond[raggedright,fragment,verbatim,relative]
\forgetAccidentals
\key d\major c4 c cis cis d d dis dis
@end lilypond
accidentals depending on the order in which the notes occur in the
input file:
-@lilypond[singleline,fragment,verbatim]
+@lilypond[raggedright,fragment,verbatim]
\property Staff.autoAccidentals = #'( Staff (any-octave . 0) )
cis'4 <c'' c'> r2 | cis'4 <c' c''> r2
| <cis' c''> r | <c'' cis'> r |
@syntax
They are entered using parentheses:
-@lilypond[relative 1,fragment,verbatim,center]
+@lilypond[relative=1,fragment,verbatim,center]
f( g)( a) a8 b( a4 g2 f4)
<c e>2( <b d>2)
@end lilypond
@internalsref{Staff} context. A bracket is started with
@code{\startGroup} and closed with @code{\stopGroup}:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
\score { \notes \relative c'' {
c4\startGroup\startGroup
c4\stopGroup
by adding a dash and the character signifying the
articulation. They are demonstrated here:
-@lilypondfile[notexidoc]{script-abbreviations.ly}
+@lilypondfile[]{script-abbreviations.ly}
The meanings of these shorthands can be changed: see
@file{ly/script-init.ly} for examples.
The script is automatically placed, but if you need to force
directions, you can use @code{_} to force them down, or @code{^} to
put them up:
-@lilypond[fragment, verbatim]
+@lilypond[fragment,verbatim]
c''4^^ c''4_^
@end lilypond
can be forced up or down using @code{^} and @code{_},
eg.
-@lilypond[verbatim,fragment,relative 2]
+@lilypond[verbatim,fragment,relative=2]
c\fermata c^\fermata c_\fermata
@end lilypond
@cindex coda
@cindex varcoda
-@lilypondfile[notexidoc]{script-chart.ly}
+@lilypondfile[]{script-chart.ly}
@refcommands
@end example
For finger changes, use markup texts:
@c
-@lilypond[verbatim, singleline, fragment]
+@lilypond[verbatim,raggedright,fragment]
c'4-1 c'4-2 c'4-3 c'4-4
c'^\markup { \fontsize #-3 \number "2-3" }
@end lilypond
You can use the thumb-script to indicate that a note should be
played with the thumb (e.g. in cello music):
-@lilypond[verbatim, singleline, fragment]
+@lilypond[verbatim,raggedright,fragment]
<a' a''-3>8(_\thumb <b' b''-3>)_\thumb
<c'' c'''-3>(_\thumb <d'' d'''-3>)_\thumb
@end lilypond
Fingerings for chords can also be added to individual notes
of the chord by adding them after the pitches:
-@lilypond[verbatim,singleline,fragment,relative=1]
+@lilypond[verbatim,raggedright,fragment,relative=1]
< c-1 e-2 g-3 b-5 > 4
@end lilypond
In this case, setting @code{fingeringOrientations} will put fingerings next
to note heads:
-@lilypond[verbatim,singleline,fragment,relative=1]
+@lilypond[verbatim,raggedright,fragment,relative=1]
\property Voice.fingeringOrientations = #'(left down)
<c-1 es-2 g-4 bes-5 > 4
\property Voice.fingeringOrientations = #'(up right down)
note spacing, but by using the command @code{\fatText}, the widths
will be taken into account:
@c
-@lilypond[fragment,singleline,verbatim] \relative c' {
+@lilypond[fragment,raggedright,verbatim] \relative c' {
c4^"longtext" \fatText c4_"longlongtext" c4 }
@end lilypond
denotes the logical time, one denotes the grace timing. The above
example is shown here with timing tuples:
-@lilypond[singleline]
+@lilypond[raggedright]
<<
\relative c''{
c4 \grace c16 c4 \grace {
If you want to end a note with a grace, then the standard trick
is to put the grace notes after a ``space note'', e.g.
-@lilypond[fragment,verbatim, relative=2]
+@lilypond[fragment,verbatim,relative=2]
\context Voice {
<< { d1^\trill ( }
{ s2 \grace { c16[ d] } } >>
for example, to produce smaller type, and set directions. Hence, when
introducing layout tweaks, they should be inside the grace section,
for example,
-@lilypond[fragment,verbatim,relative 1]
+@lilypond[fragment,verbatim,relative=1]
\new Voice {
\acciaccatura {
\property Voice.Stem \override #'direction = #-1
Another option is to change the variables @code{startGraceMusic},
@code{stopGraceMusic}, @code{startAccacciaturaMusic},
@code{stopAccacciaturaMusic}, @code{startAppoggiaturaMusic},
-@code{stopAppoggiaturaMstuic}. More information is in the file
+@code{stopAppoggiaturaMusic}. More information is in the file
@file{ly/grace-init.ly}
@code{\fff}, @code{\fff}, @code{\fp}, @code{\sf}, @code{\sff},
@code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}:
-@lilypond[verbatim,singleline,fragment,relative]
+@lilypond[verbatim,raggedright,fragment,relative]
c'\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
c2\sf c\rfz
@end lilypond
alternative is assumed to be played more than once.
Normal notation repeats are used like this:
-@lilypond[fragment,verbatim,relative 1]
+@lilypond[fragment,verbatim,relative=1]
c1
\repeat volta 2 { c4 d e f }
\repeat volta 2 { f e d c }
@end lilypond
With alternative endings:
-@lilypond[fragment,verbatim,relative 1]
+@lilypond[fragment,verbatim,relative=1]
c1
\repeat volta 2 {c4 d e f}
\alternative { {d2 d} {f f,} }
@end lilypond
-@lilypond[fragment,verbatim,relative 1]
+@lilypond[fragment,verbatim,relative=1]
\context Staff {
\partial 4
\repeat volta 4 { e | c2 d2 | e2 f2 | }
stops a running volta bracket:
@end table
-@lilypond[verbatim, fragment,relative 2]
+@lilypond[verbatim,fragment,relative=2]
c4
\property Score.repeatCommands = #'((volta "93") end-repeat)
c4 c4
To place tremolo marks between notes, use @code{\repeat} with tremolo
style:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\score {
\context Voice \notes\relative c' {
\repeat "tremolo" 8 { c16 d16 }
Tremolo marks can also be put on a single note. In this case, the
note should not be surrounded by braces.
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\repeat "tremolo" 4 c16
@end lilypond
Patterns of a one and two measures are replaced by percent-like signs,
patterns that divide the measure length are replaced by slashes:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\context Voice { \repeat "percent" 4 { c'4 }
\repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
}
@menu
+* Showing melody rhythms::
* Percussion staves::
-* Percussion MIDI output::
@end menu
similar to @code{notes}. Each piece of percussion has a full name and
an abbreviated name, and both be used in input files:
-@lilypond[singleline]
+@lilypond[raggedright]
\drums { hihat4 hh4 }
@end lilypond
@internalsref{DrumStaff} and @internalsref{DrumVoice} contexts:
@c
-@lilypond[singleline,verbatim,quote]
+@lilypond[raggedright,verbatim,quote]
up = \drums { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat }
down = \drums { bassdrum4 snare8 bd r bd sn4 }
\score {
@item timbales-style
to typeset timbales on a two line staff:
-@lilypond[singleline]
+@lilypond[raggedright]
nam = \lyrics { timh ssh timl ssl cb }
mus = \drums { timh ssh timl ssl cb s16 }
\score {
@item congas-style
to typeset congas on a two line staff:
-@lilypond[singleline]
+@lilypond[raggedright]
nam = \lyrics { cgh cgho cghm ssh cgl cglo cglm ssl }
mus = \drums { cgh cgho cghm ssh cgl cglo cglm ssl s16 }
\score {
@item bongos-style
to typeset bongos on a two line staff:
-@lilypond[singleline]
+@lilypond[raggedright]
nam = \lyrics { boh boho bohm ssh bol bolo bolm ssl }
mus = \drums { boh boho bohm ssh bol bolo bolm ssl s16 }
\score {
@item percussion-style
to typeset all kinds of simple percussion on one line staves:
-@lilypond[singleline]
+@lilypond[raggedright]
nam = \lyrics { tri trio trim gui guis guil cb cl tamb cab mar hc }
mus = \drums { tri trio trim gui guis guil cb cl tamb cab mar hc s16 }
\score {
If you do not like any of the predefined lists you can define your own
list at the top of your file:
-@lilypond[singleline, verbatim]
+@lilypond[raggedright,verbatim]
#(define mydrums '(
(bassdrum default #f -1)
(snare default #f 0)
point), and it looks ahead skipping over rests to switch in
advance. Here is a practical example:
-@lilypond[verbatim,singleline,quote]
+@lilypond[verbatim,raggedright,quote]
\score { \notes \context PianoStaff <<
\context Staff = "up" {
\autochange \new Voice \relative c' {
Internals: @internalsref{LyricEvent}, @internalsref{HyphenEvent}, and
@internalsref{ExtenderEvent}.
+Examples: @inputfileref{input/test,lyric-hyphen-retain.ly}
+
@refbugs
The definition of lyrics mode is too complex.
@code{\melisma} after the first note of the group, and
@code{\melismaEnd} after the last one, e.g.
-@lilypond[relative 1, singleline, fragment,verbatim]
+@lilypond[relative=1,raggedright,fragment,verbatim]
<< \context Voice = "lala" { \time 3/4
f4 g8
\melisma
A complete example of a SATB score setup is in the file
@inputfileref{input/template,satb.ly}.
+
@refcommands
@code{\melisma}, @code{\melismaEnd}
@end example
The complete example is shown here:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
\score {
<< \notes \relative c'' \context Voice = duet { \time 3/4
g2 e4 a2 f4 g2. }
@end example
-
-
@node Ambitus
@subsection Ambitus
@cindex ambitus
@end example
This results in the following output:
-@lilypond[singleline]
+@lilypond[raggedright]
upper = \notes \relative c {
\clef "treble"
\key c \minor
set of pitches, so they can be transposed:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
twoWays = \notes \transpose c c' {
\chords {
c1 f:sus4 bes/f
names. It is introduced by the keyword @code{\chords}.
In chords mode, a chord is entered by the root, which is entered
like a common pitch:
-@lilypond[fragment,verbatim,quote, relative=1]
+@lilypond[fragment,verbatim,quote,relative=1]
\chords { es4. d8 c2 }
@end lilypond
@cindex chord entry
The chords may be entered either using the notation
described above, or directly using @code{<} and @code{>}:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
scheme = \notes {
\chords {a1 b c} <d' f' a'> <e' g' b'>
}
display chord names when there is a change in the chords scheme and at
the start of a new line:
-@lilypond[verbatim, linewidth=9cm]
+@lilypond[verbatim,linewidth=9\cm]
scheme = \chords {
c1:m c:m \break c:m c:m d
}
example, @code{markFormatter} is set to a canned procedure. After a
few measures, it is set to function that produces a boxed number.
-@lilypond[verbatim,fragment,relative 1]
+@lilypond[verbatim,fragment,relative=1]
\property Score.markFormatter = #format-mark-numbers
c1 \mark \default
c1 \mark \default
whose source is available as
@inputfileref{input/test,bar-number-regular-interval.ly}:
-@lilypondfile[notexidoc]{bar-number-regular-interval.ly}
+@lilypondfile[]{bar-number-regular-interval.ly}
@seealso
used, for the next ones @code{instr} is used:
@quotation
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\property Staff.instrument = "ploink " { c''4 }
@end lilypond
@end quotation
names:
@quotation
-@lilypond[fragment,verbatim,singleline]
+@lilypond[fragment,verbatim,raggedright]
\notes {
\property Staff.instrument = \markup {
\column < "Clarinetti"
@code{\transpose c des} will transpose up half a tone. The first
version will print sharps and the second version will print flats:
-@lilypond[singleline, verbatim]
+@lilypond[raggedright,verbatim]
mus =\notes { \key d \major cis d fis g }
\score { \notes \context Staff {
\clef "F" \mus
combiner: putting parts on one staff, and setting stem directions and
polyphony:
-@lilypond[verbatim,singleline,fragment,relative 1]
+@lilypond[verbatim,raggedright,fragment,relative=1]
\new Staff \partcombine
{
g a( b) r
If you just want the merging parts, and not the textual markings, you
may set the property @var{soloADue} to false:
-@lilypond[verbatim,singleline,fragment]
+@lilypond[verbatim,raggedright,fragment]
\new Staff <<
\property Staff.soloADue = ##f
\partcombine
off, the part combiner may typeset @code{a2} more than once in a
measure.
+@code{\partcombine} can not be inside @code{\times}.
+
@node Hiding staves
@end example
would yield
-@lilypondfile[notexidoc]{tag-filter.ly}
+@lilypondfile[]{tag-filter.ly}
The argument of the @code{\tag} command should be a symbol, or a list
of symbols, for example,
The following example demonstrates the @code{neo_mensural} style:
-@lilypond[fragment,singleline,verbatim]
+@lilypond[fragment,raggedright,verbatim]
\property Voice.NoteHead \set #'style = #'neo_mensural
a'\longa a'\breve a'1 a'2 a'4 a'8 a'16
@end lilypond
select ancient accidentals. Supported styles are
@code{mensural}, @code{vaticana}, @code{hufnagel} and @code{medicaea}.
-@lilypond[singleline,26pt]
+@lilypond[raggedright,staffsize=26]
\score {
\notes {
\fatText
The following example demonstrates the @code{neo_mensural} style:
-@lilypond[fragment,singleline,verbatim]
+@lilypond[fragment,raggedright,verbatim]
\property Voice.Rest \set #'style = #'neo_mensural
r\longa r\breve r1 r2 r4 r8 r16
@end lilypond
modern style mensural C clef @tab
@code{neo_mensural_c1}, @code{neo_mensural_c2},
@code{neo_mensural_c3}, @code{neo_mensural_c4} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "neo_mensural_c2" c
@end lilypond
@code{petrucci_c5}
@tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "petrucci_c2" c
@end lilypond
@code{clefs-petrucci_f} @tab
petrucci style mensural F clef @tab
@code{petrucci_f} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "petrucci_f" c
@end lilypond
@code{clefs-petrucci_g} @tab
petrucci style mensural G clef @tab
@code{petrucci_g} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "petrucci_g" c
@end lilypond
historic style mensural C clef @tab
@code{mensural_c1}, @code{mensural_c2}, @code{mensural_c3},
@code{mensural_c4} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "mensural_c2" c
@end lilypond
@code{clefs-mensural_f} @tab
historic style mensural F clef @tab
@code{mensural_f} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "mensural_f" c
@end lilypond
@code{clefs-mensural_g} @tab
historic style mensural G clef @tab
@code{mensural_g} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "mensural_g" c
@end lilypond
@code{clefs-vaticana_do} @tab
Editio Vaticana style do clef @tab
@code{vaticana_do1}, @code{vaticana_do2}, @code{vaticana_do3} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "vaticana_do2" c
@code{clefs-vaticana_fa} @tab
Editio Vaticana style fa clef @tab
@code{vaticana_fa1}, @code{vaticana_fa2} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "vaticana_fa2" c
@code{clefs-medicaea_do} @tab
Editio Medicaea style do clef @tab
@code{medicaea_do1}, @code{medicaea_do2}, @code{medicaea_do3} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "medicaea_do2" c
@code{clefs-medicaea_fa} @tab
Editio Medicaea style fa clef @tab
@code{medicaea_fa1}, @code{medicaea_fa2} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "medicaea_fa2" c
@code{clefs-hufnagel_do} @tab
historic style hufnagel do clef @tab
@code{hufnagel_do1}, @code{hufnagel_do2}, @code{hufnagel_do3} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "hufnagel_do2" c
@code{clefs-hufnagel_fa} @tab
historic style hufnagel fa clef @tab
@code{hufnagel_fa1}, @code{hufnagel_fa2} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.StaffSymbol \set #'line-count = #4
\property Staff.TimeSignature \set #'transparent = ##t
\clef "hufnagel_fa2" c
@code{clefs-hufnagel_do_fa} @tab
historic style hufnagel combined do/fa clef @tab
@code{hufnagel_do_fa} @tab
-@lilypond[relative 0, notime]
+@lilypond[relative,notime]
\property Staff.TimeSignature \set #'transparent = ##t
\clef "hufnagel_do_fa" c
@end lilypond
select ancient flags. Besides the @code{default} flag style,
only @code{mensural} style is supported:
-@lilypond[fragment,singleline,verbatim]
+@lilypond[fragment,raggedright,verbatim]
\property Voice.Stem \set #'flag-style = #'mensural
\property Voice.Stem \set #'thickness = #1.0
\property Voice.NoteHead \set #'style = #'mensural
of the end of each flare is different between notes on staff lines and
notes between staff lines:
-@lilypond[fragment,singleline]
+@lilypond[fragment,raggedright]
\property Voice.Stem \set #'flag-style = #'mensural
\property Voice.Stem \set #'thickness = #1.0
\property Voice.Stem \set #'adjust-if-on-staffline = ##f
Therefore, @code{gregorian-init.ly} also defines @code{\virgula} and
@code{\caesura}:
-@lilypondfile[notexidoc]{divisiones.ly}
+@lilypondfile[]{divisiones.ly}
@refcommands
By default, the @internalsref{LigatureBracket} engraver just puts a
square bracket above the ligature:
-@lilypond[singleline,verbatim]
+@lilypond[raggedright,verbatim]
\score {
\notes \transpose c c' {
\[ g c a f d' \]
s4
\[ e1 f1 a\breve g\longa \]
@end example
-@lilypond[singleline]
+@lilypond[raggedright]
\score {
\notes \transpose c c' {
\property Score.timing = ##f
@internalsref{Mensural_ligature_engraver}, the same music transcribes
to the following:
-@lilypond[singleline]
+@lilypond[raggedright]
\score {
\notes \transpose c c' {
\property Score.timing = ##f
@item
@code{1. Punctum}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.5cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.5\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=2.5cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=2.5\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{2. Virga}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{3. Apostropha vel Stropha}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{4. Oriscus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{5. Clivis vel Flexa}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=2.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=2.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{6. Podatus vel Pes}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=2.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=2.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{7. Pes Quassus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{8. Quilisma Pes}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{9. Podatus Initio Debilis}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{10. Torculus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{11. Torculus Initio Debilis}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{12. Porrectus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{13. Climacus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{14. Scandicus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{15. Salicus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
}
@end lilypond
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
@item
@code{16. Trigonus}
@tab
-@lilypond[noindent, 26pt, nofragment, linewidth=1.0cm]
+@lilypond[noindent,staffsize=26,nofragment,linewidth=1.0\cm]
\include "gregorian-init.ly"
\score {
\notes \transpose c c' {
cluster-notes. Cluster notes are created by applying the function
@code{notes-to-clusters} to a sequence of chords, e.g.
@c
-@lilypond[relative 1,verbatim]
+@lilypond[relative=1,verbatim]
\apply #notes-to-clusters { <c e > <b f'> }
@end lilypond
@inputfileref{input/regression,cluster.ly}) shows what the result
looks like:
-@lilypondfile[notexidoc]{cluster.ly}
+@lilypondfile[]{cluster.ly}
By default, @internalsref{Cluster_spanner_engraver} is in the
@internalsref{Voice} context. This allows putting ordinary notes and
The following are supported
-@lilypond[singleline]
+@lilypond[raggedright]
\score {
<< \addlyrics \notes {
b'
The following example demonstrates its use.
-@lilypond[verbatim,fragment,singleline,relative 1]
+@lilypond[verbatim,fragment,raggedright,relative=1]
\context Voice
\applyoutput
#(add-balloon-text 'NoteHead "heads, or tails?"
The `easy play' note head includes a note name inside the head. It is
used in music aimed at beginners:
-@lilypond[singleline,verbatim,26pt]
+@lilypond[raggedright,verbatim,staffsize=26]
\score {
\notes { c'2 e'4 f' | g'1 }
\paper { \translator { \EasyNotation } }
In the following example, only one @internalsref{Stem} object is
changed from its original setting:
-@lilypond[verbatim, fragment, relative=1]
+@lilypond[verbatim,fragment,relative=1]
c4
\once \property Voice.Stem \set #'thickness = #4
c4
@noindent
For clarity, you can also do this for single arguments, e.g.
-@example
- \markup @{ is \italic @{ anyone @} home @}
-@end example
+
+@verbatim
+ \markup { is \italic { anyone } home }
+@end verbatim
@cindex font size, texts
+
+
+
+
+@menu
+* Common text markup commands::
+* Markup construction in scheme::
+* Markup command definition::
+@end menu
+
+@node Common text markup commands
+@subsubsection Common text markup commands
+
+
The following size commands set absolute sizes:
@cindex @code{\teeny}
\notes { a^\allegro b c d }
@end verbatim
-The markup mechanism is extensible. Refer to
-@file{scm/new-markup.scm} for more information.
-
Some objects have alignment procedures of their own, which cancel out
any effects of alignments applied to their markup arguments as a
Init files: @file{scm/new-markup.scm}.
+
@refbugs
@cindex kerning
+@node Markup construction in scheme
+@subsubsection Markup construction in scheme
+
+@cindex defining markup commands
+
+The @code{markup} macro builds markup expressions in Scheme while
+providing a LilyPond-like syntax. For example,
+@example
+(markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world")
+ #:bigger #:line ("foo" "bar" "baz")))
+@end example
+
+@noindent
+is equivalent to:
+@example
+\markup \column < @{ \bold \italic "hello" \raise #0.4 "world" @}
+ \bigger @{ foo bar baz @} >
+@end example
+
+@noindent
+This example exposes the main translation rules between regular
+LilyPond markup syntax and scheme markup syntax, which are summed up
+is this table:
+@multitable @columnfractions .5 .5
+@item @b{LilyPond} @tab @b{Scheme}
+@item @code{\command} @tab @code{#:command}
+@item @code{\variable} @tab @code{variable}
+@item @code{@{ ... @}} @tab @code{#:line ( ... )}
+@item @code{\center < ... >} @tab @code{#:center ( ... )}
+@item @code{string} @tab @code{"string"}
+@item @code{#scheme-arg} @tab @code{scheme-arg}
+@end multitable
+
+Besides, the whole scheme language is accessible inside the
+@code{markup} macro: thus, one may use function calls inside
+@code{markup} in order to manipulate character strings for
+instance. This proves useful when defining new markup commands (see
+@ref{Markup command definition}).
+
+@refbugs
+
+One can not feed the @code{#:line} (resp @code{#:center},
+@code{#:column}) command with a variable or the result of a function
+call. Eg:
+@lisp
+(markup #:line (fun-that-returns-markups))
+@end lisp
+is illegal. One should use the @code{make-line-markup} (resp
+@code{make-center-markup}, @code{make-column-markup}) function
+instead:
+@lisp
+(markup (make-line-markup (fun-that-returns-markups)))
+@end lisp
+
+@node Markup command definition
+@subsubsection Markup command definition
+
+New markup commands can be defined thanks to the @code{def-markup-command} scheme macro.
+@lisp
+(def-markup-command (@emph{command-name} @emph{paper} @emph{props} @emph{arg1} @emph{arg2} ...) (@emph{arg1-type?} @emph{arg2-type?} ...)
+ ..command body..)
+
+ @emph{argi}: i@emph{th} command argument
+ @emph{argi-type?}: a type predicate for the i@emph{th} argument
+ @emph{paper}: the `paper' definition
+ @emph{props}: a list of alists, containing all active properties.
+@end lisp
+
+As a simple example, we show how to add a @code{\smallcaps} command,
+which selects @TeX{}'s small caps font. Normally, we could select the
+small caps font as follows:
+
+@verbatim
+ \markup { \override #'(font-shape . caps) Text-in-caps }
+@end verbatim
+
+This selects the caps font by setting the @code{font-shape} property to
+@code{#'caps} for interpreting @code{Text-in-caps}.
+
+To make the above available as @code{\smallcaps} command, we have to
+define a function using @code{def-markup-command}. The command should
+take a single argument, of markup type. Therefore, the start of the
+definition should read
+@example
+ (def-markup-command (smallcaps paper props argument) (markup?)
+@end example
+
+@noindent
+
+What follows is the content of the command: we should interpret
+the @code{argument} as a markup, i.e.
+
+@example
+ (interpret-markup paper @dots{} argument)
+@end example
+
+@noindent
+This interpretation should add @code{'(font-shape . caps)} to the active
+properties, so we substitute the the following for the @dots{} in the
+above example:
+
+@example
+ (cons (list '(font-shape . caps) ) props)
+@end example
+
+@noindent
+The variable @code{props} is a list of alists, and we prepend to it by
+consing a list with the extra setting.
+
+However, suppose that we are using a font that does not have a
+small-caps variant. In that case, we have to fake the small caps font,
+by setting a string in upcase, with the first letter a little larger:
+
+@example
+#(def-markup-command (smallcaps paper props str) (string?)
+ "Print the string argument in small caps. Syntax: \\smallcaps #\"string\""
+ (interpret-markup paper props
+ (make-line-markup
+ (map (lambda (s)
+ (if (= (string-length s) 0)
+ s
+ (markup #:large (string-upcase (substring s 0 1))
+ #:translate (cons -0.6 0)
+ #:tiny (string-upcase (substring s 1)))))
+ (string-split str #\Space)))))
+@end example
+
+The @code{smallcaps} command first splits its string argument into
+tokens separated by spaces (@code{(string-split str #\Space)}); for
+each token, a markup is built with the first letter made large and
+upcased (@code{#:large (string-upcase (substring s 0 1))}), and a
+second markup built with the following letters made tiny and upcased
+(@code{#:tiny (string-upcase (substring s 1))}). As LilyPond
+introduces a space between markups on a line, the second markup is
+translated to the left (@code{#:translate (cons -0.6 0) ...}). Then,
+the markups built for each token are put in a line
+(@code{(make-line-markup ...)}). Finally, the resulting markup is
+passed to the @code{interpret-markup} function, with the @code{paper}
+and @code{props} arguments.
+
+Finally, suppose that we are typesetting a recitative in an opera, and
+we would like to define a command that will show character names in a
+custom manner. Names should be printed with small caps and translated a
+bit to the left and top. We will define a @code{\character} command
+that takes into account the needed translation, and uses the newly
+defined @code{\smallcaps} command:
+
+@verbatim
+#(def-markup-command (character paper props name) (string?)
+ "Print the character name in small caps, translated to the left and
+ top. Syntax: \\character #\"name\""
+ (interpret-markup paper props
+ (markup "" #:translate (cons -4 2) #:smallcaps name)))
+@end verbatim
+
+There is one complication that needs explanation: texts above and below
+the staff are moved vertically to be at a certain distance (the
+@code{padding} property) from the staff and the notes. To make sure
+that this mechanism does not annihilate the vertical effect of our
+@code{#:translate}, we add an empty string (@code{""}) before the
+translated text. Now the @code{""} will be put above the notes, and the
+@code{name} is moved in relation to that empty string. The net effect is
+that the text is moved to the upper left.
+
+The final result is as follows:
+@verbatim
+\score {
+ \notes { \fatText
+ c''^\markup \character #"Cleopatra"
+ e'^\markup \character #"Giulio Cesare"
+ }
+}
+@end verbatim
+
+@lilypond[raggedright]
+#(def-markup-command (smallcaps paper props str) (string?)
+ "Print the string argument in small caps. Syntax: \\smallcaps #\"string\""
+ (interpret-markup paper props
+ (make-line-markup
+ (map (lambda (s)
+ (if (= (string-length s) 0)
+ s
+ (markup #:large (string-upcase (substring s 0 1))
+ #:translate (cons -0.6 0)
+ #:tiny (string-upcase (substring s 1)))))
+ (string-split str #\Space)))))
+
+#(def-markup-command (character paper props name) (string?)
+ "Print the character name in small caps, translated to the left and
+ top. Syntax: \\character #\"name\""
+ (interpret-markup paper props
+ (markup "" #:translate (cons -4 0) #:smallcaps name)))
+
+\score {
+ \notes { \fatText
+ c''^\markup \character #"Cleopatra"
+ e'^\markup \character #"Giulio Cesare"
+ }
+}
+@end lilypond
For example, the following piece contains lots of half, quarter and
8th notes, the eighth note is followed by 1 note head width (NHW).
The quarter note is followed by 2 NHW, the half by 3 NHW, etc.
-@lilypond[fragment, verbatim, relative=1] c2 c4. c8 c4. c8 c4. c8 c8
+@lilypond[fragment,verbatim,relative=1] c2 c4. c8 c4. c8 c4. c8 c8
c8 c4 c4 c4
@end lilypond
only a few 16th notes to the example above, they would be followed by
half a NHW:
-@lilypond[fragment, verbatim, relative=2]
+@lilypond[fragment,verbatim,relative=2]
c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4
@end lilypond
@cindex @code{interscorelinefill}
If the variable @code{lastpagefill} is defined,
-@c fixme: this should only be done if lastpagefill == #t
+@c fixme: this should only be done if lastpagefill= #t
systems are evenly distributed vertically on the last page. This
might produce ugly results in case there are not enough systems on the
last page. The @command{lilypond-book} command ignores
Since slurs are not interpreted, @code{\lyricsto} and
@code{\addlyrics} sections will be interpreted wrongly.
+The MIDI output allocates a channel for each Staff, and one for global
+settings. Hence, the MIDI file should not have more than 15 staves
+(or 14 if you do not use drums).
+
@menu
* MIDI block::