Keyboards
Keyboard and other multi-staff instruments
Accordion-discant symbols
This snippet has been obsoleted by predefined markup commands, see
’Accordion Registers’ in the Notation Reference. It’s still useful as
a simple demonstration of how to combine symbols: the placement of the
symbols added with \markup
can be tweaked by changing the
\translate-scaled
arguments. \translate-scaled
is used
here rather than \translate
in order to let the positioning of
the symbol parts adapt to changes of font-size
.
| discant = \markup {
\musicglyph "accordion.discant"
}
dot = \markup {
\musicglyph "accordion.dot"
}
\layout { ragged-right = ##t }
% 16 voets register
accBasson = ^\markup {
\combine
\discant
\translate-scaled #'(0 . 0.5) \dot
}
% een korig 8 en 16 voets register
accBandon = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\translate-scaled #'(0 . 1.5) \dot
}
accVCello = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\combine
\translate-scaled #'(0 . 1.5) \dot
\translate-scaled #'(1 . 1.5) \dot
}
% 4-8-16 voets register
accHarmon = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\combine
\translate-scaled #'(0 . 1.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
accTrombon = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\combine
\translate-scaled #'(0 . 1.5) \dot
\combine
\translate-scaled #'(1 . 1.5) \dot
\translate-scaled #'(-1 . 1.5) \dot
}
% eenkorig 4 en 16 voets register
accOrgan = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
accMaster = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 0.5) \dot
\combine
\translate-scaled #'(0 . 1.5) \dot
\combine
\translate-scaled #'(1 . 1.5) \dot
\combine
\translate-scaled #'(-1 . 1.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
accAccord = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 1.5) \dot
\combine
\translate-scaled #'(1 . 1.5) \dot
\combine
\translate-scaled #'(-1 . 1.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
accMusette = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 1.5) \dot
\combine
\translate-scaled #'(1 . 1.5) \dot
\translate-scaled #'(-1 . 1.5) \dot
}
accCeleste = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 1.5) \dot
\translate-scaled #'(-1 . 1.5) \dot
}
accOboe = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 1.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
accClarin = ^\markup {
\combine
\discant
\translate-scaled #'(0 . 1.5) \dot
}
accPiccolo = ^\markup {
\combine
\discant
\translate-scaled #'(0 . 2.5) \dot
}
accViolin = ^\markup {
\combine
\discant
\combine
\translate-scaled #'(0 . 1.5) \dot
\combine
\translate-scaled #'(1 . 1.5) \dot
\translate-scaled #'(0 . 2.5) \dot
}
\relative c'' {
c4 d\accBasson e f
c4 d\accBandon e f
c4 d\accVCello e f
c4 d\accHarmon e f
c4 d\accTrombon e f
\break
c4 d\accOrgan e f
c4 d\accMaster e f
c4 d\accAccord e f
c4 d\accMusette e f
c4 d\accCeleste e f
\break
c4 d\accOboe e f
c4 d\accClarin e f
c4 d\accPiccolo e f
c4 d\accViolin e f
}
|
Accordion register symbols
Accordion register symbols are available as \markup
as well as
as standalone music events (as register changes tend to occur between
actual music events. Bass registers are not overly standardized. The
available commands can be found in ’Accordion Registers’ in the
Notation Reference.
| #(use-modules (scm accreg))
\new PianoStaff
<<
\new Staff \relative {
\clef treble \discant "10" r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
<<
{ r16 <f bes> r <e a> r <d g> }
\\
{ d r a r bes r }
>> |
<cis e a>1
}
\new Staff \relative {
\clef treble \freeBass "1" r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
\clef bass \stdBass "Master"
<<
{ r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
<e a cis>1^"a" }
\\
{ d8_"D" c_"C" bes_"B" | a1_"A" }
>>
}
>>
|
Changing the text for sustain markings
Staff.pedalSustainStrings
can be used to set the text used for
pedal down and up. Note that the only valid strings are those found in
the list of pedal glyphs - the values used this snippet constitute an
exhaustive list.
| sustainNotes = { c4\sustainOn d e\sustainOff\sustainOn f\sustainOff }
\relative c' {
\sustainNotes
\set Staff.pedalSustainStrings = #'("P" "P-" "-")
\sustainNotes
\set Staff.pedalSustainStrings = #'("d" "de" "e")
\sustainNotes
\set Staff.pedalSustainStrings = #'("M" "M-" "-")
\sustainNotes
\set Staff.pedalSustainStrings = #'("Ped" "*Ped" "*")
\sustainNotes
}
|
Clusters
Clusters are a device to denote that a complete range of notes is to be
played.
| fragment = \relative c' {
c4 f <e d'>4
<g a>8 <e a> a4 c2 <d b>4
e2 c
}
<<
\new Staff \fragment
\new Staff \makeClusters \fragment
>>
|
Controlling the placement of chord fingerings
The placement of fingering numbers can be controlled precisely. For
fingering orientation to apply, you must use a chord construct <> even
if it is a single note.
| \relative c' {
\set fingeringOrientations = #'(left)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(down)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(down right up)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(up)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(left)
<c-1>2
\set fingeringOrientations = #'(down)
<e-3>2
}
|
Creating slurs across voices
In some situations, it may be necessary to create slurs between notes
from different voices.
The solution is to add invisible notes to one of the voices, using
\hideNotes
.
This example is measure 235 of the Ciaconna from Bach’s 2nd Partita for
solo violin, BWV 1004.
| \relative c' {
<<
{
d16( a') s a s a[ s a] s a[ s a]
}
\\
{
\slurUp
bes,16[ s e](
\hideNotes a)
\unHideNotes f[(
\hideNotes a)
\unHideNotes fis](
\hideNotes a)
\unHideNotes g[(
\hideNotes a)
\unHideNotes gis](
\hideNotes a)
}
>>
}
|
Cross-staff chords - beaming problems workaround
Sometimes it is better to use stems from the upper staff for creating
cross-staff chords, because no problems with automatic beam collision
avoidance then arise. If the stems from the lower staff were used in
the following example, it would be necessary to change the automatic
beam collision avoidance settings so that it doesn’t detect collisions
between staves using \override Staff.Beam.collision-voice-only =
##t
| \new PianoStaff <<
\new Staff = up
\relative c' {
<<
{ r4
\override Stem.cross-staff = ##t
\override Stem.length = #19 % this is in half-spaces,
% so it makes stems 9.5 staffspaces long
\override Stem.Y-offset = #-6 % stems are normally lengthened
% upwards, so here we must lower the stem by the amount
% equal to the lengthening - in this case (19 - 7) / 2
% (7 is default stem length)
e e e }
{ s4
\change Staff = "bottom"
\override NoteColumn.ignore-collision = ##t
c, c c
}
>>
}
\new Staff = bottom
\relative c' {
\clef bass
\voiceOne
g8 a g a g a g a
}
>>
|
Cross-staff tremolos
Since \repeat tremolo
expects exactly two musical arguments for
chord tremolos, the note or chord which changes staff within a
cross-staff tremolo should be placed inside curly braces together with
its \change Staff
command.
| \new PianoStaff <<
\new Staff = "up" \relative c'' {
\key a \major
\time 3/8
s4.
}
\new Staff = "down" \relative c'' {
\key a \major
\time 3/8
\voiceOne
\repeat tremolo 6 {
<a e'>32
{
\change Staff = "up"
\voiceTwo
<cis a' dis>32
}
}
}
>>
|
Fine-tuning pedal brackets
The appearance of pedal brackets may be altered in different ways.
| \paper { ragged-right = ##f }
\relative c'' {
c2\sostenutoOn c
c2\sostenutoOff c
\once \override Staff.PianoPedalBracket.shorten-pair = #'(-7 . -2)
c2\sostenutoOn c
c2\sostenutoOff c
\once \override Staff.PianoPedalBracket.edge-height = #'(0 . 3)
c2\sostenutoOn c
c2\sostenutoOff c
}
|
Indicating cross-staff chords with arpeggio bracket
An arpeggio bracket can indicate that notes on two different staves are
to be played with the same hand. In order to do this, the
PianoStaff
must be set to accept cross-staff arpeggios and the
arpeggios must be set to the bracket shape in the PianoStaff
context.
(Debussy, Les collines d’Anacapri, m. 65)
| \new PianoStaff <<
\set PianoStaff.connectArpeggios = ##t
\override PianoStaff.Arpeggio.stencil = #ly:arpeggio::brew-chord-bracket
\new Staff {
\relative c' {
\key b \major
\time 6/8
b8-.(\arpeggio fis'-.\> cis-. e-. gis-. b-.)\!\fermata^\laissezVibrer
\bar "||"
}
}
\new Staff {
\relative c' {
\clef bass
\key b \major
<<
{
<a e cis>2.\arpeggio
}
\\
{
<a, e a,>2.
}
>>
}
}
>>
|
Jazz combo template
This is quite an advanced template, for a jazz ensemble. Note that all
instruments are notated in \key c \major
. This refers to the
key in concert pitch; the key will be automatically transposed if the
music is within a \transpose
section.
| \header {
title = "Song"
subtitle = "(tune)"
composer = "Me"
meter = "moderato"
piece = "Swing"
tagline = \markup {
\column {
"LilyPond example file by Amelie Zapf,"
"Berlin 07/07/2003"
}
}
}
% To make the example display in the documentation
\paper {
paper-width = 130
}
%#(set-global-staff-size 16)
\include "english.ly"
%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%
sl = {
\override NoteHead.style = #'slash
\hide Stem
}
nsl = {
\revert NoteHead.style
\undo \hide Stem
}
crOn = \override NoteHead.style = #'cross
crOff = \revert NoteHead.style
%% insert chord name style stuff here.
jazzChords = { }
%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%
global = { \time 4/4 }
Key = { \key c \major }
% ############ Horns ############
% ------ Trumpet ------
trpt = \transpose c d \relative c'' {
\Key
c1 | c | c |
}
trpHarmony = \transpose c' d {
\jazzChords
}
trumpet = {
\global
\clef treble
<<
\trpt
>>
}
% ------ Alto Saxophone ------
alto = \transpose c a \relative c' {
\Key
c1 | c | c |
}
altoHarmony = \transpose c' a {
\jazzChords
}
altoSax = {
\global
\clef treble
<<
\alto
>>
}
% ------ Baritone Saxophone ------
bari = \transpose c a' \relative c {
\Key
c1
c1
\sl
d4^"Solo" d d d
\nsl
}
bariHarmony = \transpose c' a \chordmode {
\jazzChords s1 s d2:maj e:m7
}
bariSax = {
\global
\clef treble
<<
\bari
>>
}
% ------ Trombone ------
tbone = \relative c {
\Key
c1 | c | c
}
tboneHarmony = \chordmode {
\jazzChords
}
trombone = {
\global
\clef bass
<<
\tbone
>>
}
% ############ Rhythm Section #############
% ------ Guitar ------
gtr = \relative c'' {
\Key
c1
\sl
b4 b b b
\nsl
c1
}
gtrHarmony = \chordmode {
\jazzChords
s1 c2:min7+ d2:maj9
}
guitar = {
\global
\clef treble
<<
\gtr
>>
}
%% ------ Piano ------
rhUpper = \relative c'' {
\voiceOne
\Key
c1 | c | c
}
rhLower = \relative c' {
\voiceTwo
\Key
e1 | e | e
}
lhUpper = \relative c' {
\voiceOne
\Key
g1 | g | g
}
lhLower = \relative c {
\voiceTwo
\Key
c1 | c | c
}
PianoRH = {
\clef treble
\global
<<
\new Voice = "one" \rhUpper
\new Voice = "two" \rhLower
>>
}
PianoLH = {
\clef bass
\global
<<
\new Voice = "one" \lhUpper
\new Voice = "two" \lhLower
>>
}
piano = {
<<
\new Staff = "upper" \PianoRH
\new Staff = "lower" \PianoLH
>>
}
% ------ Bass Guitar ------
Bass = \relative c {
\Key
c1 | c | c
}
bass = {
\global
\clef bass
<<
\Bass
>>
}
% ------ Drums ------
up = \drummode {
\voiceOne
hh4 <hh sn> hh <hh sn>
hh4 <hh sn> hh <hh sn>
hh4 <hh sn> hh <hh sn>
}
down = \drummode {
\voiceTwo
bd4 s bd s
bd4 s bd s
bd4 s bd s
}
drumContents = {
\global
<<
\new DrumVoice \up
\new DrumVoice \down
>>
}
%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%
\score {
<<
\new StaffGroup = "horns" <<
\new Staff = "trumpet" \with { instrumentName = "Trumpet" }
\trumpet
\new Staff = "altosax" \with { instrumentName = "Alto Sax" }
\altoSax
\new ChordNames = "barichords" \with { instrumentName = "Trumpet" }
\bariHarmony
\new Staff = "barisax" \with { instrumentName = "Bari Sax" }
\bariSax
\new Staff = "trombone" \with { instrumentName = "Trombone" }
\trombone
>>
\new StaffGroup = "rhythm" <<
\new ChordNames = "chords" \gtrHarmony
\new Staff = "guitar" \with { instrumentName = "Guitar" }
\guitar
\new PianoStaff = "piano" \with {
instrumentName = "Piano"
midiInstrument = "acoustic grand"
}
\piano
\new Staff = "bass" \with { instrumentName = "Bass" }
\bass
\new DrumStaff \with { instrumentName = "Drums" }
\drumContents
>>
>>
\layout {
\context { \Staff \RemoveEmptyStaves }
\context {
\Score
\override BarNumber.padding = #3
\override RehearsalMark.padding = #2
skipBars = ##t
}
}
\midi { }
}
|
Laissez vibrer ties
Laissez vibrer ties have a fixed size. Their formatting can be tuned
using 'tie-configuration
.
| \relative c' {
<c e g>4\laissezVibrer r <c f g>\laissezVibrer r
<c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8
<c d e f>4\laissezVibrer r
\override LaissezVibrerTieColumn.tie-configuration
= #`((-7 . ,DOWN)
(-5 . ,DOWN)
(-3 . ,UP)
(-1 . ,UP))
<c d e f>4\laissezVibrer r
}
|
Piano template (simple)
Here is a simple piano staff with some notes.
| upper = \relative c'' {
\clef treble
\key c \major
\time 4/4
a4 b c d
}
lower = \relative c {
\clef bass
\key c \major
\time 4/4
a2 c
}
\score {
\new PianoStaff \with { instrumentName = "Piano" }
<<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
\layout { }
\midi { }
}
|
Piano template with centered lyrics
Instead of having a full staff for the melody and lyrics, lyrics can be
centered between the staves of a piano staff.
| upper = \relative c'' {
\clef treble
\key c \major
\time 4/4
a4 b c d
}
lower = \relative c {
\clef bass
\key c \major
\time 4/4
a2 c
}
text = \lyricmode {
Aaa Bee Cee Dee
}
\score {
\new PianoStaff <<
\new Staff = upper { \new Voice = "singer" \upper }
\new Lyrics \lyricsto "singer" \text
\new Staff = lower { \lower }
>>
\layout { }
\midi { }
}
|
Piano template with melody and lyrics
Here is a typical song format: one staff with the melody and lyrics,
with piano accompaniment underneath.
| melody = \relative c'' {
\clef treble
\key c \major
\time 4/4
a b c d
}
text = \lyricmode {
Aaa Bee Cee Dee
}
upper = \relative c'' {
\clef treble
\key c \major
\time 4/4
a4 b c d
}
lower = \relative c {
\clef bass
\key c \major
\time 4/4
a2 c
}
\score {
<<
\new Voice = "mel" { \autoBeamOff \melody }
\new Lyrics \lyricsto mel \text
\new PianoStaff <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
>>
\layout {
\context { \Staff \RemoveEmptyStaves }
}
\midi { }
}
|
Removing brace on first line of piano score
This snippet removes the first brace from a PianoStaff
or a
GrandStaff
. It may be useful when cutting and pasting the
engraved image into existing music.
It uses \alterBroken
.
| someMusic = {
\once \override Staff.Clef.stencil = ##f
\once \override Staff.TimeSignature.stencil = ##f
\repeat unfold 3 c1 \break
\repeat unfold 5 c1 \break
\repeat unfold 5 c1
}
\score {
\new PianoStaff
<<
\new Staff = "right" \relative c'' \someMusic
\new Staff = "left" \relative c' { \clef F \someMusic }
>>
\layout {
indent=75
\context {
\PianoStaff
\alterBroken transparent #'(#t) SystemStartBrace
}
}
}
|
Using autochange with more than one voice
Using autochange
with more than one voice.
| \score
{
\new PianoStaff
<<
\new Staff = "up" {
<<
\set Timing.beamExceptions = #'()
\set Timing.beatStructure = #'(4)
\new Voice {
\voiceOne
\autochange
\relative c' {
g8 a b c d e f g
g,8 a b c d e f g
}
}
\new Voice {
\voiceTwo
\autochange
\relative c' {
g8 a b c d e f g
g,,8 a b c d e f g
}
}
>>
}
\new Staff = "down" {
\clef bass
}
>>
}
|
Vocal ensemble template with automatic piano reduction
This template adds an automatic piano reduction to the standard SATB
vocal score demonstrated in “Vocal ensemble template”. This
demonstrates one of the strengths of LilyPond – you can use a music
definition more than once. If any changes are made to the vocal notes
(say, tenorMusic
), then the changes will also apply to the piano
reduction.
| \paper {
top-system-spacing.basic-distance = #10
score-system-spacing.basic-distance = #20
system-system-spacing.basic-distance = #20
last-bottom-spacing.basic-distance = #10
}
global = {
\key c \major
\time 4/4
}
sopMusic = \relative {
c''4 c c8[( b)] c4
}
sopWords = \lyricmode {
hi hi hi hi
}
altoMusic = \relative {
e'4 f d e
}
altoWords =\lyricmode {
ha ha ha ha
}
tenorMusic = \relative {
g4 a f g
}
tenorWords = \lyricmode {
hu hu hu hu
}
bassMusic = \relative {
c4 c g c
}
bassWords = \lyricmode {
ho ho ho ho
}
\score {
<<
\new ChoirStaff <<
\new Lyrics = "sopranos" \with {
% This is needed for lyrics above a staff
\override VerticalAxisGroup.staff-affinity = #DOWN
}
\new Staff = "women" <<
\new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
\new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
>>
\new Lyrics = "altos"
\new Lyrics = "tenors" \with {
% This is needed for lyrics above a staff
\override VerticalAxisGroup.staff-affinity = #DOWN
}
\new Staff = "men" <<
\clef bass
\new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
\new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
>>
\new Lyrics = "basses"
\context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
\context Lyrics = "altos" \lyricsto "altos" \altoWords
\context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
\context Lyrics = "basses" \lyricsto "basses" \bassWords
>>
\new PianoStaff <<
\new Staff <<
\set Staff.printPartCombineTexts = ##f
\partcombine
<< \global \sopMusic >>
<< \global \altoMusic >>
>>
\new Staff <<
\clef bass
\set Staff.printPartCombineTexts = ##f
\partcombine
<< \global \tenorMusic >>
<< \global \bassMusic >>
>>
>>
>>
}
|