From fbc4164a12eece33bf759f3bbad85b79287791aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Reuter?= Date: Sun, 17 Aug 2003 03:20:00 +0000 Subject: [PATCH] * 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 --- ChangeLog | 11 ++++ Documentation/user/refman.itely | 60 +++++++++++++++++++- lilypond.words | 2 + ly/engraver-init.ly | 99 +++++++++++++++++++++++++++++++-- ly/gregorian-init.ly | 10 +++- ly/params-init.ly | 2 + ly/script-init.ly | 4 -- 7 files changed, 176 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b9469a719d..65083d6427 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2003-08-17 Juergen Reuter + + * 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 * Documentation/user/refman.itely (Ancient notation): added some diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index ea3dc7f9d1..19283e72bd 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -2030,7 +2030,7 @@ For finger changes, use markup texts: 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] <>8-(_\thumb-[ <>-)_\thumb <>-(_\thumb <>-)_\thumb-] @end lilypond @@ -4368,7 +4368,9 @@ output: @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. @@ -4402,6 +4404,29 @@ ancient notation, see @ref{Custodes}, @ref{Divisiones}, * 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 @@ -6985,6 +7010,37 @@ and @internalsref{FiguredBass} context. 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 diff --git a/lilypond.words b/lilypond.words index 595eeec779..bd3957a18d 100644 --- a/lilypond.words +++ b/lilypond.words @@ -487,6 +487,8 @@ unfold \\upperVoice \\upprall \\varcoda +VaticanaStaff +VaticanaVoice \\version VerticalAlignment \\verylongfermata diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 25e2ad92e5..d9ca758961 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -375,7 +375,10 @@ RemoveEmptyStaffContext = \translator { Beam \override #'auto-knee-gap = #'() } -HaraKiriStaffContext = \translator { \RemoveEmptyStaffContext } +HaraKiriStaffContext = \translator { + \RemoveEmptyStaffContext + \accepts "VaticanaVoice" +} ScoreContext = \translator { \type Score_engraver @@ -415,16 +418,17 @@ ScoreContext = \translator { \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" @@ -589,4 +593,91 @@ TabStaffContext = \translator { 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 +} diff --git a/ly/gregorian-init.ly b/ly/gregorian-init.ly index 8485d215dc..8111cae230 100644 --- a/ly/gregorian-init.ly +++ b/ly/gregorian-init.ly @@ -1,4 +1,4 @@ -\version "1.7.18" +\version "1.8.0" %%%%%%%% %%%%%%%% shortcuts common for all styles of gregorian chant notation @@ -87,6 +87,12 @@ finalis = { \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) diff --git a/ly/params-init.ly b/ly/params-init.ly index 504a3deb87..c47e714ea1 100644 --- a/ly/params-init.ly +++ b/ly/params-init.ly @@ -50,6 +50,8 @@ interscoreline = 4. \mm \translator { \FiguredBassContext } \translator { \TabStaffContext } \translator { \TabVoiceContext } +\translator { \VaticanaStaffContext } +\translator { \VaticanaVoiceContext } %% diff --git a/ly/script-init.ly b/ly/script-init.ly index 0ce835037d..8dd3521cac 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -14,10 +14,6 @@ accent = #(make-articulation "accent") 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") -- 2.39.2