@node Example templates
@chapter Example templates

This section of the manual contains templates with the LilyPond score
already set up for you.  Just add notes, run LilyPond, and enjoy
beautiful printed scores!

Note that all templates contain a @code{\version "x.y.z"} string.  We
highly recommend that you always include the @code{\version}, no matter
how small your file is.  Speaking from personal experience, it's
quite frustrating to try to remember which version of LilyPond you were
using a few years ago.  @code{convert-ly} requires you to declare
which version of LilyPond you used.

@menu
* Single staff::
* Piano templates::
* Small ensembles::
* Jazz combo::
* Other templates::
@end menu

@c   more sections to come soon.
@c  make a note about the \score{} stuff?  It might make more sense
@c  to note that in the tutorial, and reserve this section purely
@c  for templates.  -GP


@node Single staff
@section Single staff
@subsection Notes only

The first example gives you a staff with notes, suitable for a solo
instrument or a melodic fragment.  Cut and paste this into a file,
add notes, and you're finished!

@lilypond[verbatim,raggedright]

\version "2.3.11"
melody = \relative c' {
\clef treble
\key c \major
\time 4/4

  a4 b c d
}

\score{
  \new Staff \melody
  \paper { }
  \midi { \tempo 4=60 }
}

@end lilypond

@subsection Notes and lyrics

The next example demonstrates a simple melody with lyrics.  Cut and
paste, add notes, then words for the lyrics.  This example turns off
automatic beaming, which is common for vocal parts.  If you want to use
automatic beaming, you'll have to change or comment out the relevant
line.

@lilypond[verbatim,raggedright]

\version "2.3.11"
melody = \relative c' {
\clef treble
\key c \major
\time 4/4

  a4 b c d
}

text = \lyrics {
  Aaa Bee Cee Dee
}

\score{
  <<
    \context Voice = one {
      \autoBeamOff
      \melody
      }
    \lyricsto "one" \new Lyrics \text
  >>
  \paper { }
  \midi { \tempo 4=60 }
}

@end lilypond

@subsection Notes and chords

Want to prepare a lead sheet with a melody and chords?  Look no farther!

@lilypond[verbatim,raggedright]

\version "2.3.11"
melody =  \relative c' {
\clef treble
\key c \major
\time 4/4

  f4 e8[ c] d4 g |
  a2 ~ a2 |
}

harmonies = \chords {
  c4:m f:min7 g:maj c:aug d2:dim b:sus
}

\score {
   <<
    \context ChordNames {
        \set chordChanges = ##t
        \harmonies
    }
    \context Staff = one \melody
  >>

  \paper{ }
  \midi  { \tempo 4=60}
}

@end lilypond

@subsection Notes, lyrics, and chords.

This template allows you to prepare a song with melody, words, and chords.

@lilypond[verbatim,raggedright]

\version "2.3.11"
melody =  \relative c' {
\clef treble
\key c \major
\time 4/4

    a b c d
}

text = \lyrics {
    Aaa Bee Cee Dee
}

harmonies = \chords {
    a2 c2
}

\score {
  <<
    \context ChordNames {
        \set chordChanges = ##t
        \harmonies
    }
    \context Voice = one {
	\autoBeamOff
        \melody
    }
    \lyricsto "one" \new Lyrics \text
  >>
  \paper { }
  \midi  { \tempo 4=60}
}

@end lilypond

@node Piano templates
@section Piano templates
@subsection Solo piano

Here's a simple piano staff.

@lilypond[verbatim,raggedright]

\version "2.3.11"
upper = \relative c'' {
\clef treble
\key c \major
\time 4/4

  a b c d
}

lower = \relative c {
\clef bass
\key c \major
\time 4/4

  a2 c
}

\score {
  \context PianoStaff <<
    \set PianoStaff.instrument = "Piano  "
    \context Staff = upper \upper
    \context Staff = lower \lower
    >>  
  \paper { }  
  \midi { \tempo 4=60 }  
}

@end lilypond

@subsection Piano and melody with lyrics

Here's a typical song format: one staff with the melody and lyrics, with
piano accompaniment underneath.

@lilypond[verbatim,raggedright]

\version "2.3.11"
melody =  \relative c'' {
\clef treble
\key c \major
\time 4/4

  a b c d
}

text = \lyrics {
  Aaa Bee Cee Dee
}

upper = \relative c'' {
\clef treble
\key c \major
\time 4/4

  a b c d
}

lower = \relative c {
\clef bass
\key c \major
\time 4/4

  a2 c
}

\score {
  <<
      \context Voice = mel {
	  \autoBeamOff
	  \melody
      }
      \lyricsto mel \new Lyrics \text

      \context PianoStaff <<
	  \context Staff = upper \upper
	  \context Staff = lower \lower
      >>
  >>
  \paper {
      \context { \RemoveEmptyStaffContext }
  }  
  \midi { \tempo 4=60}
}

@end lilypond

@node Small ensembles
@section Small ensembles
@subsection SATB vocal score

Here's a standard four-part SATB vocal score.  With larger ensembles,
it's often useful to include a section which is included in all
parts.  For example, the time signature and key signatures are almost
always the same for all parts.

@lilypond[verbatim,raggedright]

\version "2.3.11"
global = {
\key c \major
\time 4/4
}

sopMusic = \relative c'' {
c4 c c8[( b)] c4
}
sopWords = \lyrics { hi4 hi hi hi  }

altoMusic = \relative c' {
e4 f d e 
}
altoWords =\lyrics { ha4 ha ha ha }

tenorMusic = \relative c' {
g4 a f g
}
tenorWords = \lyrics { hu4 hu hu hu }

bassMusic = \relative c {
c4 c g c
}
bassWords = \lyrics { ho4 ho ho ho }

\score { 
	  \context ChoirStaff <<
	      \context Lyrics = sopranos { s1 }
	      \context Staff = women <<
		  \context Voice = sopranos { \voiceOne << \global \sopMusic >> }
		  \context Voice = altos { \voiceTwo << \global \altoMusic >> }
	      >>
	      \context Lyrics = altos { s1 }
	      \context Lyrics = tenors { s1 }
	      \context Staff = men <<
		  \clef bass
		  \context Voice = tenors { \voiceOne <<\global \tenorMusic >> }
		  \context Voice = basses { \voiceTwo <<\global \bassMusic >> }
	      >>
	      \context Lyrics = basses { s1 }

	      
	      \context Lyrics = sopranos \lyricsto sopranos \sopWords
	      \context Lyrics = altos \lyricsto altos \altoWords
	      \context Lyrics = tenors \lyricsto tenors \tenorWords
	      \context Lyrics = basses \lyricsto basses \bassWords
	  
	  >>
  \paper {
    \context {

	% a little smaller so lyrics can be closer to the staff. 
	\Staff
	minimumVerticalExtent = #'(-3 . 3) 
    }
  }
}

@end lilypond

@subsection String quartet

This template demonstrates a string quartet.  It also uses a @code{\global}
section for time and key signatures.

@lilypond[verbatim,raggedright]

\version "2.3.11"
global = {
\time 4/4
\key c \major
}
violinOne = \relative c''{
\set Staff.instrument = "Violin 1  "
c2 d
e1
}
violinTwo = \relative c''{
\set Staff.instrument = "Violin 2  "
g2 g
g1
}
viola = \relative c'{
\set Staff.instrument = "Viola  "
\clef alto
e2 d
c1
}
cello = \relative c'{
\set Staff.instrument = "Cello  "
\clef bass
c2 g
c,1
}
\score {
  \new StaffGroup <<
    \new Staff << \global \violinOne >>
    \new Staff << \global \violinTwo >>
    \new Staff << \global \viola >>
    \new Staff << \global \cello >>
  >>
  \paper { }
  \midi { \tempo 4=60}
}

@end lilypond

@node Jazz combo
@section Jazz combo

This is a much more complicated template, for a jazz ensemble.  Note that all
instruments are notated @code{\key c \major}.  This refers to the key in
concert pitch; LilyPond will automatically transpose the key if the music
is within a @code{\transpose} section.

@c TODO must clean up this example.
@c   - transpositions stated in names (ie "trumpet in Bb" or whatever)
@c   - one global section, instead of "global" (time) and "key"
@c   - does it need those wierd macros?  sl, nsl, etc.
@c   - maybe ask Amelie Zapf to clean it up, or whether I should just
@c     make whatever changes I feel like.

@lilypond[verbatim,raggedright]

\version "2.3.11"
\header {
        title = "Song"
        subtitle = "(tune)"
        composer = "Me"
        meter = "moderato"
        piece = "Swing"
	tagline = "LilyPond example file by Amelie Zapf, Berlin 07/07/2003"
	texidoc = "Jazz tune for combo (horns, guitar, piano, bass, drums)."
}

#(set-global-staff-size 16)
\include "english.ly"

%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%

sl = {
    \override NoteHead  #'style = #'slash
    \override Stem  #'transparent = ##t
}
nsl = {
    \revert NoteHead #'style
    \revert Stem #'transparent
}
cr = \override NoteHead  #'style = #'cross
ncr = \revert NoteHead #'style

%% insert chord name style stuff here.

jzchords = { } 


%%%%%%%%%%%% 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 { \jzchords }
trumpet = {
    \global 
    \set Staff.instrument = #"Trumpet"
    \clef treble
    \context Staff <<
	\trpt
    >>
}

% ------ Alto Saxophone ------
alto = \transpose c a \relative c' {
	\Key
        c1 c c
}

altoharmony = \transpose c' a { \jzchords }
altosax = {
        \global
        \set Staff.instrument = #"Alto Sax"
        \clef treble
        \context Staff <<
                \alto
        >>
}

% ------ Baritone Saxophone ------
bari = \transpose c a' \relative c {
	\Key
        c1 c \sl d4^"Solo" d d d \nsl
}

bariharmony = \transpose c' a \chords { \jzchords s1 s d2:maj e:m7 }
barisax = {
        \global
        \set Staff.instrument = #"Bari Sax"
        \clef treble
        \context Staff <<
                \bari
        >>
}
% ------ Trombone ------
tbone =  \relative c {
	\Key
        c1 c c
}

tboneharmony = \chords { \jzchords }
trombone = {
        \global
        \set Staff.instrument = #"Trombone"
        \clef bass
        \context Staff <<
                \tbone
        >>
}
% ############ Rhythm Section #############
% ------ Guitar ------
gtr =  \relative c'' {
	\Key
        c1 \sl b4 b b b \nsl c1
}

gtrharmony = \chords { \jzchords
        s1 c2:min7+ d2:maj9
}

guitar = {
        \global
        \set Staff.instrument = #"Guitar"
        \clef treble
        \context Staff <<
        	\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
        \set Staff.midiInstrument = "acoustic grand"
        \context Staff <<
                \context Voice = one \rhUpper
        	\context Voice = two \rhLower
        >>
}

PianoLH = {
        \clef bass
        \global
        \set Staff.midiInstrument = "acoustic grand"
        \context Staff <<
        	\context Voice = one \lhUpper
        	\context Voice = two \lhLower
        >>
}

piano = {
	\context PianoStaff <<
		\set PianoStaff.instrument = #"Piano"
        	\context Staff = upper \PianoRH
        	\context Staff = lower \PianoLH
        >>
}

% ------ Bass Guitar ------
bass =  \relative c {
	\Key
        c1 c c
}

bass = {
    \global
    \set Staff.instrument = #"Bass"
    \clef bass
    \context Staff <<
	\bass
    >>
}

				% ------ Drums ------

up = \drums {
    hh4 <hh sn>4 hh <hh sn> hh <hh sn>4
    hh4 <hh sn>4
    hh4 <hh sn>4
    hh4 <hh sn>4
}

down = \drums {
    bd4 s bd s bd s bd s bd s bd s
}

drumContents = {
	\global
	<<
		\set DrumStaff.instrument = #"Drums"
		\new DrumVoice { \voiceOne \up }
		\new DrumVoice { \voiceTwo \down }
	>>
}

%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%

\score {
<<
        \context StaffGroup = horns <<
                \context Staff = trumpet \trumpet

                \context Staff = altosax \altosax

		\context ChordNames = barichords \bariharmony

                \context Staff = barisax \barisax

                \context Staff = trombone \trombone
        >>

        \context StaffGroup = rhythm <<
		\context ChordNames = chords \gtrharmony
                \context Staff = guitar \guitar
		\context PianoStaff = piano \piano
                
                \context Staff = bass \bass
                
                \new DrumStaff { \drumContents }
        >>
>>
        \paper {
                \context { \RemoveEmptyStaffContext }
                \context {
                        \Score
                        \override BarNumber #'padding = #3
                        \override RehearsalMark #'padding = #2
                        skipBars = ##t
                }
        }
        \midi { \tempo 4 = 75 }
}

@end lilypond

@node Other templates
@section Other templates
@subsection All headers

This template displays all available headers.  Some of them are only
used in the Mutopia project; they don't affect the printed output at
all.  They are used  if you want the piece to be listed with different
information in the Mutopia database than you wish to have printed on the
music.  For example, Mutopia lists the composer of the famous D major
violin concerto as TchaikovskyPI, whereas perhaps you wish to print
"Petr Tchaikowski" on your music.

@lilypond[verbatim,raggedright]

\version "2.3.11"
\header {
  dedication = "dedication"
  title = "Title"
  subtitle = "Subtitle"
  subsubtitle = "Subsubtitle"
  composer = "Composer (xxxx-yyyy)"
  opus = "Opus 0"
  piece = "Piece I"
  instrument = "Instrument"
  arranger = "Arranger"
  poet = "Poet"
  texttranslator = "Translator"
  copyright = "public domain"

%   These are headers used by the Mutopia Project  http://www.mutopiaproject.org/
 mutopiatitle = ""
  mutopiacomposer = ""
  mutopiapoet = ""
  mutopiainstrument = ""
  date = "composer's dates"
  source = "urtext "
  maintainer = "your name here"
  maintainerEmail = "your email here"
  maintainerWeb = "your home page"
  lastupdated = "2004/Aug/26"
}

\score {
   \header {
      piece = "piece1"
      opus = "opus1"
    }
  { c'4 }
}

\score {
   \header {
      piece = "piece2"
      opus = "opus2"
    }
  { c'4 }
}

@end lilypond

@subsection Gregorian template

This example demonstrates how to do modern transcriptions of Gregorian
music.  Gregorian music has no measure, no stems; it uses only half and
quarter notes, and two types of barlines, a short one indicating a rest,
and a second one indicating a breath mark.


@lilypond[verbatim,raggedright]

barOne =  { \once \override Staff.BarLine  #'bar-size = #2
	\bar "|" }
barTwo =  { \once \override Staff.BarLine  #'extra-offset = #'(0 . 2)
	\once \override Staff.BarLine  #'bar-size = #2
	\bar "|" }
chant = \relative c' {
\set Score.timing = ##f
\override Staff.Stem  #'transparent = ##t

f4 a2 \barTwo
g4 a2 f2 \barOne
g4( f) f( g) a2
}
\score {
  \chant
  \paper{ }
  \midi { \tempo 4=60 }
}

@end lilypond

@subsection Bagpipe music

Here's an example of bagpipe music.  It demonstrates a big strength of
LilyPond, compared to graphical score editors: in LilyPond, you can
very easily reuse small segments of music without writing them out
completely.  This template defines a large number of small segments
(@code{taor, grip, thrd,} etc), which can be reused easily.

@lilypond[verbatim,raggedright]

taor = { \grace { g32[ d' g e'] } }
grip = { \grace { g32[ b g ]    } }
thrd = { \grace { g32[ d' c']   } }
birl = { \grace { g32[ a g]     } }
gstd = { \grace { g'32[ d' g]   } }
fgg =  { \grace { f32[ g'32]    } }
dblb = { \grace { g'32[ b d']   } }
dblc = { \grace { g'32[ c' d']  } }
dble = { \grace { g'32[ e' f']  } }
dblf = { \grace { g'32[ f' g']  } }
dblg = { \grace { g'32[ f']     } }
dbla = { \grace { a'32[ g']     } }
lgg =  { \grace { g32  } }
lag =  { \grace { a32  } }
cg   = { \grace { c'32 } }
eg   = { \grace { e'32 } }
gg   = { \grace { g'32 } }
dg   = { \grace { d'32 } }
hag  = { \grace { a'32 } }
gefg = { \grace { g'32[ e' f']  } }
efg  = { \grace { e'32[ f']     } }
gdcg = { \grace { g'32[ d' c']  } }
gcdg = { \grace { g'32[ c' d']  } }
	
\transpose a a' {
    #(add-grace-property 'Voice 'Stem 'length 6)
    \time 6/8 \partial 4
    \tieUp
    \slurUp
    
    f'4 |
    \gg f'4 e'8 \thrd d'4. |
    \eg a4.(a4) d'8 |
    \gg d'4 f'8 \dble e'4. ( | \noBreak
    e'8) d'4 \gg d'4 e'8 |

    \break
    \time 9/8
    \dblf f'2.( f'4) d'8 |
    \time 6/8
    \dblg g'4 a'8 \gg a'4. |
    \thrd d'4.( d'4) \eg a8 |
    \time 9/8
    \dble e'4 \lag e'8 \gg  e'16[ d'8. e'8] \gg f'4 g'8 |

    \break
    \time 6/8
    \gg f'4 e'8 \thrd d'4. |
    \eg a4.( a4) d'8 |
    \dblg g'4 a'8 \gg a'4. |
    \thrd d'4.( d'4) f'8 |

    \break
    \dblg g'4 e'8( e'8) \dblf  f'8.[ e'16] |
    \thrd d'4.( d'4) \cg d'8 |
    \gg c'4 e'8 \thrd d'4.( |
    d'4.) \gdcg d'4.
    
}

@end lilypond





