+2003-08-17 Juergen Reuter <reuter@ipd.uka.de>
+
+ * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added
+ Vaticana contexts
+
+ * Documentation/user/refman.itely (Ancient notation): documented
+ some bugs; tiny fixes; added docu on Vaticana contexts
+
+ * gregorian-init.ly, ly/script-init.ly: moved ancient articulation
+ scripts
+
2003-08-16 Juergen Reuter <reuter@ipd.uka.de>
* Documentation/user/refman.itely (Ancient notation): added some
You can use the thumb-script to indicate that a note should be
played with your thumb (used in cello music):
-@lilypond[verbatim, singleline, fragmnt]
+@lilypond[verbatim, singleline, fragment]
<<a' a''-3>>8-(_\thumb-[ <<b' b''-3>>-)_\thumb
<<c'' c'''-3>>-(_\thumb <<d'' d'''-3>>-)_\thumb-]
@end lilypond
@c [TODO: write more comprehensive introduction on ancient notation]
-Support for ancient notation currently includes features for mensural
+Support for ancient notation is still under heavy development.
+Regardless of all of the current limitations (see the bugs section
+below for details), it currently includes features for mensural
notation and Gregorian Chant notation. There is also limited support
for figured bass notation.
* Figured bass::
@end menu
+If this all is way too much of documentation for you, and you just
+want to dive into typesetting without worrying too much about the
+details on how to customize a context, then you may have a look at the
+predefined contexts (see @ref{Vaticana style contexts}). Use them to
+set up predefined style-specific voice and staff contexts, and
+directly go ahead with the note entry.
+
+@menu
+* Vaticana style contexts::
+@end menu
+
+@refbugs
+
+Ligatures need special spacing that has not yet been implemented. As
+a result, there is too much space between ligatures most of the time,
+and line breaking often is unsatisfactory. Also, lyrics do not
+correctly align with ligatures.
+
+Accidentals must not be printed within a ligature, but instead need to
+be collected and printed in front of it.
+
+Augmentum dots within ligatures are currently not handled correctly.
+
@node Ancient note heads
@subsection Ancient note heads
Slash notation for alterations is not supported.
+@node Vaticana style contexts
+@subsection Vaticana style contexts
+
+@cindex VaticanaVoiceContext
+@cindex VaticanaStaffContext
+
+The predefined @code{VaticanaVoiceContext} and
+@code{VaticanaStaffContext} can be used to easily engrave a piece of
+Gregorian Chant in the style of the Editio Vaticana. These contexts
+initialize all relevant context properties and grob properties to
+proper values. With these contexts, you can immediately go ahead
+entering the chant, as the following short excerpt demonstrates:
+
+@lilypond[raggedright,verbatim,noindent]
+\include "gregorian-init.ly"
+\score {
+ \addlyrics
+ \context VaticanaVoice {
+ \property Score.BarNumber \set #'transparent = ##t
+ \notes {
+ \[ c'( c' \flexa a \] \[ a \flexa \deminutum g-) \] f \divisioMinima
+ \[ f( \pes a c' c' \pes d'-) \] c' \divisioMinima \break
+ \[ c'( c' \flexa a \] \[ a \flexa \deminutum g-) \] f \divisioMinima
+ }
+ }
+ \context Lyrics \lyrics {
+ San- ctus, San- ctus, San- ctus
+ }
+}
+@end lilypond
+
@node Contemporary notation
@section Contemporary notation
\\upperVoice
\\upprall
\\varcoda
+VaticanaStaff
+VaticanaVoice
\\version
VerticalAlignment
\\verylongfermata
Beam \override #'auto-knee-gap = #'()
}
-HaraKiriStaffContext = \translator { \RemoveEmptyStaffContext }
+HaraKiriStaffContext = \translator {
+ \RemoveEmptyStaffContext
+ \accepts "VaticanaVoice"
+}
ScoreContext = \translator {
\type Score_engraver
\accepts "Staff"
\accepts "TabStaff"
+ \accepts "VaticanaStaff"
\accepts "StaffContainer"
\accepts "StaffGroup"
- \accepts "RhythmicStaff"
+ \accepts "RhythmicStaff"
\accepts "Lyrics"
\accepts "ChordNames"
\accepts "GrandStaff"
\accepts "ChoirStaff"
\accepts "PianoStaff"
\accepts "NoteNames"
- \accepts "FiguredBass"
+ \accepts "FiguredBass"
soloText = #"Solo"
soloIIText = #"Solo II"
clefGlyph = #"clefs-tab"
clefPosition = #0
}
-
+
+% TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
+% but this does not work (is this a bug or intended behaviour?):
+%
+% If I try to do so, I get "error: unknown escaped string:
+% `\VaticanaStaffContext'" in params-init.ly. If I also move
+% "\translator { \Vaticana*Context }" from params-init.ly to the end
+% of gregorian-init.ly, then I get "error: parse error, unexpected
+% TRANSLATOR: \translator { \VaticanaStaffContext }" in
+% gregorian-init.ly. --jr
+
+VaticanaVoiceContext = \translator {
+ \VoiceContext
+ \name "VaticanaVoice"
+ \alias "Voice"
+ \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
+
+ % We can not remove Slur_engraver, since \addlyrics depends on it.
+ % Instead, we make the grob transparent.
+ % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
+ % infinite steepness reqd"), since in ligatures, all note heads are in
+ % the same paper column such that the (transparent) slurs eventually may
+ % start and end in the same column.
+ Slur \override #'transparent = ##t
+
+ % We can not remove Stem_engraver, since slurs depend on stems. If
+ % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
+ % in position 1 (expecting grob): ()".
+ % As a workaround, we make the grob transparent.
+ Stem \set #'transparent = ##t
+
+ \remove "Ligature_bracket_engraver"
+ \consists "Vaticana_ligature_engraver"
+
+ % Set default head for notes outside of \[ \].
+ NoteHead \set #'style = #'vaticana_punctum
+
+ % Put some space before and after divisiones.
+ % FIXME: This does not seem to show any effect.
+ Script \set #'padding = #0.5
+
+ % There are no beams in Gregorian Chant notation.
+ autobeaming = ##f
+
+ % Prepare TextSpanner for \episem{Initium|Finis} use.
+ TextSpanner \set #'style = #'line
+ TextSpanner \set #'edge-height = #'(0 . 0)
+ TextSpanner \set #'padding = #0.5
+ TextSpanner \set #'edge-text = #'("" . "")
+}
+
+VaticanaStaffContext = \translator {
+ \StaffContext
+ \name "VaticanaStaff"
+ \alias "Staff"
+ \denies "Voice"
+ \accepts "VaticanaVoice"
+% \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
+
+ \remove "Time_signature_engraver"
+ \consists "Custos_engraver"
+
+ % We can not remove Bar_engraver, since clef and custos depend on it.
+ % Instead, we make the grob transparent.
+ BarLine \set #'transparent = ##t
+
+ StaffSymbol \set #'line-count = #4
+
+ % FIXME: unit on StaffSymbol's width should be \linewidth.
+ % StaffSymbol \set #'width = #60.0
+
+ % Choose vaticana do clef on 3rd line as default.
+ clefGlyph = #"clefs-vaticana_do"
+ centralCPosition = #1
+ clefPosition = #1
+ clefOctavation = #0
+
+ % Select vaticana style font.
+ KeySignature \set #'style = #'vaticana
+ Accidental \set #'style = #'vaticana
+ Custos \set #'style = #'vaticana
+ Custos \set #'neutral-position = #3
+ Custos \set #'neutral-direction = #-1
+ Custos \set #'adjust-if-on-staffline = ##t
+
+ % Score.timing = ##f
+ % Score.barAlways = ##t
+}
-\version "1.7.18"
+\version "1.8.0"
%%%%%%%%
%%%%%%%% shortcuts common for all styles of gregorian chant notation
\breathe
}
+%
+% declare articulation shortcuts
+%
+accentus = #(make-articulation "accentus")
+ictus = #(make-articulation "ictus")
+semicirculus = #(make-articulation "semicirculus")
+circulus = #(make-articulation "circulus")
episemInitium = #(make-span-event 'TextSpanEvent START)
-
episemFinis = #(make-span-event 'TextSpanEvent STOP)
\translator { \FiguredBassContext }
\translator { \TabStaffContext }
\translator { \TabVoiceContext }
+\translator { \VaticanaStaffContext }
+\translator { \VaticanaVoiceContext }
%%
marcato = #(make-articulation "marcato")
staccatissimo = #(make-articulation "staccatissimo")
portato = #(make-articulation "portato")
-accentus = #(make-articulation "accentus")
-ictus = #(make-articulation "ictus")
-semicirculus = #(make-articulation "semicirculus")
-circulus = #(make-articulation "circulus")
signumcongruentiae = #(make-articulation "signumcongruentiae")
fermata = #(make-articulation "fermata")
shortfermata = #(make-articulation "shortfermata")