]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/fundamental.itely
Misc LM updates.
[lilypond.git] / Documentation / user / fundamental.itely
index c086b6227f69c2d57139bf08e714328ed0711675..2fecc2a24b22892795e98880a34d184c87798ef7 100644 (file)
@@ -8,6 +8,8 @@
 * How LilyPond files work::     
 * Voices contain music::        
 * TODO new sec fundamental::    
+* Extending the templates::     
+* Scores and parts::            
 @end menu
 
 
@@ -538,5 +540,331 @@ TODO: improve this example
 TODO... add more info?  Fluff up the first sentence?
 
 
+@node Extending the templates
+@section Extending the templates
+
+You've read the tutorial, you know how to write music.  But how can you
+get the staves that you want?  The templates are ok, but what if you
+want something that isn't covered?
+
+@menu
+* Soprano and cello::           
+* TODO another example of extending templates::  
+@end menu
+
+@node Soprano and cello
+@unnumberedsubsec Soprano and cello
+
+Start off with the template that seems closest to what you want to end
+up with.  Let's say that you want to write something for soprano and
+cello.  In this case, we would start with @q{Notes and lyrics} (for the
+soprano part).
+
+@example
+\version "2.11.23"
+melody = \relative c' @{
+  \clef treble
+  \key c \major
+  \time 4/4
+
+  a4 b c d
+@}
+
+text = \lyricmode @{
+  Aaa Bee Cee Dee
+@}
+
+\score@{
+  <<
+    \new Voice = "one" @{
+      \autoBeamOff
+      \melody
+    @}
+    \new Lyrics \lyricsto "one" \text
+  >>
+  \layout @{ @}
+  \midi @{ @}
+@}
+@end example
+
+Now we want to add a cello part.  Let's look at the @q{Notes only} example:
+
+@example
+\version "2.11.23"
+melody = \relative c' @{
+  \clef treble
+  \key c \major
+  \time 4/4
+
+  a4 b c d
+@}
+
+\score @{
+\new Staff \melody
+\layout @{ @}
+\midi @{ @}
+@}
+@end example
+
+We don't need two @code{\version} commands.  We'll need the @code{melody}
+section.  We don't want two @code{\score} sections -- if we had two
+@code{\score}s, we'd get the two parts separately.  We want them together,
+as a duet.  Within the @code{\score} section, we don't need two
+@code{\layout} or @code{\midi}.
+
+If we simply cut and paste the @code{melody} section, we would end up with
+two @code{melody} sections.  So let's rename them.  We'll call the section
+for the soprano @code{sopranoMusic} and the section for the cello
+@code{celloMusic}.  While we're doing this, let's rename @code{text}
+to be @code{sopranoLyrics}.  Remember to rename both instances of all
+these names -- both the initial definition (the
+@code{melody = relative c' @{ } part) and the name's use (in the
+@code{\score} section).
+
+While we're doing this, let's change the cello part's staff -- celli
+normally use bass clef.  We'll also give the cello some different
+notes.
+
+@example
+\version "2.11.23"
+sopranoMusic = \relative c' @{
+  \clef treble
+  \key c \major
+  \time 4/4
+
+  a4 b c d
+@}
+
+sopranoLyrics = \lyricmode @{
+  Aaa Bee Cee Dee
+@}
+
+celloMusic = \relative c @{
+  \clef bass
+  \key c \major
+  \time 4/4
+
+  d4 g fis8 e d4
+@}
+
+\score@{
+  <<
+    \new Voice = "one" @{
+      \autoBeamOff
+      \sopranoMusic
+    @}
+    \new Lyrics \lyricsto "one" \sopranoLyrics
+  >>
+  \layout @{ @}
+  \midi @{ @}
+@}
+@end example
+
+This is looking promising, but the cello part won't appear in the
+score -- we haven't used it in the @code{\score} section.  If we
+want the cello part to appear under the soprano part, we need to add
+
+@example
+\new Staff \celloMusic
+@end example
+
+@noindent
+underneath the soprano stuff.  We also need to add @code{<<} and
+@code{>>} around the music -- that tells LilyPond that there's
+more than one thing (in this case, @code{Staff}) happening at once.  The
+@code{\score} looks like this now
+
+@example
+\score@{
+  <<
+    <<
+      \new Voice = "one" @{
+        \autoBeamOff
+        \sopranoMusic
+      @}
+      \new Lyrics \lyricsto "one" \sopranoLyrics
+    >>
+    \new Staff \celloMusic
+  >>
+  \layout @{ @}
+  \midi @{ @}
+@}
+@end example
+
+@noindent
+This looks a bit messy; the indentation is messed up now.  That is
+easily fixed.  Here's the complete soprano and cello template.
+
+@lilypond[quote,verbatim,ragged-right]
+\version "2.11.23"
+sopranoMusic = \relative c' {
+  \clef treble
+  \key c \major
+  \time 4/4
+
+  a4 b c d
+}
+
+sopranoLyrics = \lyricmode {
+  Aaa Bee Cee Dee
+}
+
+celloMusic = \relative c {
+  \clef bass
+  \key c \major
+  \time 4/4
+
+  d4 g fis8 e d4
+}
+
+\score{
+  <<
+    <<
+      \new Voice = "one" {
+        \autoBeamOff
+        \sopranoMusic
+      }
+      \new Lyrics \lyricsto "one" \sopranoLyrics
+    >>
+    \new Staff \celloMusic
+  >>
+  \layout { }
+  \midi { }
+}
+@end lilypond
+
+
+@node TODO another example of extending templates
+@unnumberedsubsec TODO another example of extending templates
+
+TODO: somebody else fill this in.  You guys like vocal stuff,
+right?  Get to it.  :)  -gp
+
+
+
+@node Scores and parts
+@section Scores and parts
+
+TODO: this is really old stuff from the really old tutorial.
+Rewrite, fix, etc.  -gp
+
+In orchestral music, all notes are printed twice.  Once in a part for
+the musicians, and once in a full score for the conductor.  Variables can
+be used to avoid double work.  The music is entered once, and stored in
+a variable.  The contents of that variable is then used to generate
+both the part and the full score.
+
+It is convenient to define the notes in a special file.  For example,
+suppose that the file @file{horn-music.ly} contains the following part
+of a horn/@/bassoon duo
+
+@example
+hornNotes = \relative c @{
+  \time 2/4
+  r4 f8 a cis4 f e d
+@}
+@end example
+
+@noindent
+Then, an individual part is made by putting the following in a file
+
+@example
+\include "horn-music.ly"
+\header @{
+  instrument = "Horn in F"
+@}
+
+@{
+ \transpose f c' \hornNotes
+@}
+@end example
+
+The line
+
+@example
+\include "horn-music.ly"
+@end example
+
+@noindent
+substitutes the contents of @file{horn-music.ly} at this position in
+the file, so @code{hornNotes} is defined afterwards.  The command
+@code{\transpose f@tie{}c'} indicates that the argument, being
+@code{\hornNotes}, should be transposed by a fifth upwards.  Sounding
+@samp{f} is denoted by notated @code{c'}, which corresponds with the
+tuning of a normal French Horn in@tie{}F.  The transposition can be seen
+in the following output
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+  \time 2/4
+  r4 f8 a cis4 f e d
+}
+@end lilypond
+
+In ensemble pieces, one of the voices often does not play for many
+measures.  This is denoted by a special rest, the multi-measure
+rest.  It is entered with a capital @samp{R} followed by a duration
+(@code{1}@tie{}for a whole note, @code{2}@tie{}for a half note,
+etc.).  By multiplying the
+duration, longer rests can be constructed.  For example, this rest
+takes 3@tie{}measures in 2/4 time
+
+@example
+R2*3
+@end example
+
+When printing the part, multi-rests
+must be condensed.  This is done by setting a run-time variable
+
+@example
+\set Score.skipBars = ##t
+@end example
+
+@noindent
+This command sets the property @code{skipBars} in the
+@code{Score} context to true (@code{##t}).  Prepending the rest and
+this option to the music above, leads to the following result
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+  \time 2/4
+  \set Score.skipBars = ##t
+  R2*3
+  r4 f8 a cis4 f e d
+}
+@end lilypond
+
+
+The score is made by combining all of the music together.  Assuming
+that the other voice is in @code{bassoonNotes} in the file
+@file{bassoon-music.ly}, a score is made with
+
+@example
+\include "bassoon-music.ly"
+\include "horn-music.ly"
+
+<<
+  \new Staff \hornNotes
+  \new Staff \bassoonNotes
+>>
+@end example
+
+@noindent
+leading to
+
+@lilypond[quote,ragged-right]
+\relative c <<
+  \new Staff {
+    \time 2/4 R2*3
+    r4 f8 a cis4 f e d
+  }
+  \new Staff {
+    \clef bass
+    r4 d,8 f | gis4 c | b bes |
+    a8 e f4 | g d | gis f
+  }
+>>
+@end lilypond
+