]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/satb.ly
Imported Upstream version 2.19.45
[lilypond.git] / ly / satb.ly
diff --git a/ly/satb.ly b/ly/satb.ly
new file mode 100644 (file)
index 0000000..36e9dc3
--- /dev/null
@@ -0,0 +1,195 @@
+%\version "2.19.19"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%                                                %%
+%%     Accompanied Choir with Multiple Verses     %%
+%%                                                %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%{
+  This file may be \include'd in a score to provide the
+  context structure for a score arrangement consisting
+  of the following staves:
+
+  Solo Staff (outside Choir grouping)
+  Descant Staff (within Choir grouping)
+  Women Staff (single voice on one staff)
+  Soprano and Alto (optionally on two Staves or one Staff each)
+  Multiple verses (up to 9)
+  Tenor and Bass (optionally on two Staves or one Staff each)
+  Men Staff (single voice on one staff)
+  Piano Staff
+
+  It is intended primarily to hide the complexity of the context
+  structure from newcomers to LilyPond, but is also useful as a
+  shorthand for seasoned users.
+
+  Usage:
+
+  satb.ly should be included at the *end* of the input file. Before
+  it are placed the required music and lyrics by redefining specific
+  variables, like this:
+
+  \paper { ... }
+  \header { ... }
+  Key = { ... }
+  Time = { ... }
+  SoloMusic = \relative { ... }
+  DescantMusic = \relative { ... }
+  DescantLyrics = \lyricmode { ... }
+  WomenMusic = \relative { ... }
+  WomenLyrics = \lyricmode { ... }
+  SopranoMusic = \relative { ... }
+  SopranoLyrics = \lyricmode { ... }
+  AltoMusic = \relative { ... }
+  AltoLyrics = \lyricmode { ... }
+  VerseOne = \lyricmode { ... }
+  VerseTwo = \lyricmode { ... }
+  ...
+  VerseNine = \lyricmode { ... }
+  TenorMusic = \relative { ... }
+  TenorLyrics = \lyricmode { ... }
+  BassMusic = \relative { ... }
+  BassLyrics = \lyricmode { ... }
+  MenMusic = \relative { ... }
+  MenLyrics = \lyricmode { ... }
+  PianoRHMusic = \relative { ... }
+  PianoDynamics = { ... }
+  PianoLHMusic = \relative { ... }
+  TwoVoicesPerStaff = ##f
+  \include "satb.ly"
+
+  All of the definitions are optional. Staves with no music will be
+  omitted from the output.
+
+  Other variables, such as the instrumentName, shortInstrumentName
+  and MidiInstrument can also be changed by defining variables like
+  AltoInstrumentName, BassMidiInstrument, etc.  The prefixes for staves
+  containing two divided voices are WomenDivided and MenDivided, hence
+  the corresponding variables would be WomenDividedInstrumentName, etc.
+  The key is defined in the variable Key, and the structure of time
+  and repeats in the variable Time, using spacer rests.
+
+  A \layout block may be defined in the variable Layout.  There is
+  no default \header block and no default \paper block.
+
+  Music may be tagged with #'print or #'play to be included only in
+  the printed score or in the MIDI file respectively.
+
+%}
+
+\include "vocal-tkit.ly"
+\include "piano-tkit.ly"
+
+#(define satb-voice-prefixes
+   ;; These define the permitted prefixes to various names.
+   ;; They are combined with a fixed set of postfixes to form
+   ;; names such as AltoMusic, BassInstrumentName, etc.
+   ;; These names may be redefined.
+   '("Alto"
+     "Bass"
+     "Descant"
+     "Men"
+     "MenDivided"
+     "Piano"
+     "PianoLH"
+     "PianoRH"
+     "Solo"
+     "Soprano"
+     "Tenor"
+     "Women"
+     "WomenDivided"))
+
+#(define satb-lyrics-postfixes
+   ;; These define the permitted postfixes to the names of lyrics.
+   ;; They are combined with the prefixes to form names like
+   ;; AltoLyrics, etc.
+   ;; These names may be redefined or extended.
+  '("Lyrics"
+    "LyricsOne"
+    "LyricsTwo"
+    "LyricsThree"
+    "LyricsFour"))
+
+#(define satb-lyrics-variable-names
+   ;; These define the names which may be used to specify stanzas
+   ;; which go between the two two-voice staves when TwoVoicesPerStaff
+   ;; is set to #t.  They may be redefined or extended.
+  '("VerseOne"
+    "VerseTwo"
+    "VerseThree"
+    "VerseFour"
+    "VerseFive"
+    "VerseSix"
+    "VerseSeven"
+    "VerseEight"
+    "VerseNine"))
+
+%% make the above definitions available
+#(set-music-definitions!
+  satb-voice-prefixes
+  satb-lyrics-postfixes
+  satb-lyrics-variable-names)
+
+%% override the usual default value
+#(if (not SoloShortInstrumentName)
+       (set! SoloShortInstrumentName ""))
+
+SATB =
+<<
+  \make-one-voice-vocal-staff "Solo" "treble"
+  \new ChoirStaff <<
+    \make-one-voice-vocal-staff "Descant" "treble"
+    \make-one-voice-vocal-staff "Women" "treble"
+    #(if TwoVoicesPerStaff
+      #{
+        \make-two-vocal-staves-with-stanzas
+          "WomenDivided" "treble" "MenDivided" "bass"
+          "Soprano" "Alto" "Tenor" "Bass"
+          #satb-lyrics-variable-names
+      #}
+      #{
+        <<
+          \make-one-voice-vocal-staff "Soprano" "treble"
+          \make-one-voice-vocal-staff "Alto" "treble"
+          \make-one-voice-vocal-staff "Tenor" "treble_8"
+          \make-one-voice-vocal-staff "Bass" "bass"
+        >>
+      #} )
+    \make-one-voice-vocal-staff "Men" "bass"
+  >>
+>>
+
+Piano = \make-pianostaff
+
+\tagGroup #'(print play)
+
+\layout {
+  \context {
+    \Staff
+    \override VerticalAxisGroup.remove-empty = ##t
+    \override VerticalAxisGroup.remove-first = ##t
+  }
+}
+
+\score {
+  \keepWithTag #'print
+  #(if have-music
+       #{ << \SATB \Piano >> #}
+       #{ { } #} )
+  \layout { $(if Layout Layout) }
+}
+
+
+\score {
+  \keepWithTag #'play
+  #(if have-music
+       #{ << \SATB \Piano >> #}
+       #{ { } #} )
+  \midi {
+    \context {
+      \Score
+      midiChannelMapping = #'instrument
+    }
+  }
+}