From: Jürgen Reuter Date: Sun, 17 Aug 2003 23:34:22 +0000 (+0000) Subject: * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added X-Git-Tag: release/1.8.1~9 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=e9ac8723c50bde14c53fdcc4ef044b64d47a5fa4;p=lilypond.git * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added GregorianTranscription contexts * ly/engraver-init.ly: vaticana contexts: minor fixes * Documentation/user/refman.itely (Ancient notation): added note on appendix length bug * input/puer-fragment.ly, input/test/gregorian-scripts.ly, input/test/vaticana.ly: use vaticana contexts; small fixes --- diff --git a/ChangeLog b/ChangeLog index 95ffbeace6..095ba888cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2003-08-18 Juergen Reuter + + * lilypond.words, ly/engraver-init.ly, ly/params-init.ly: added + GregorianTranscription contexts + + * ly/engraver-init.ly: vaticana contexts: minor fixes + + * Documentation/user/refman.itely (Ancient notation): added note + on appendix length bug + + * input/puer-fragment.ly, input/test/gregorian-scripts.ly, + input/test/vaticana.ly: use vaticana contexts; small fixes + 2003-08-17 Jan Nieuwenhuizen * flower/hash.cc: Remove. diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index e24d451563..e7f41991d6 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -6931,6 +6931,10 @@ Semivocalis head; this looks awful. Trigonus: apply equal spacing, regardless of pitch. +Flexa and similar figurae: the left appendix should be adjusted with +respect to the position of this head (on staffline or on staffspace) +and the vertical position of the subsequent head. + @node Figured bass @subsection Figured bass diff --git a/input/puer-fragment.ly b/input/puer-fragment.ly index d4f9edc13c..b521b67fba 100644 --- a/input/puer-fragment.ly +++ b/input/puer-fragment.ly @@ -1,6 +1,6 @@ -\version "1.7.27" +\version "1.8.0" \header { - title = "Puer natus est nobis" + title = "Puer natus est nobis (excerptum)" subtitle = "Antiphona ad introitum VII" texidoc = " @@ -8,15 +8,12 @@ Demonstrate gregorian chant notation This file pretty nicely demonstrates what still does not work among ligatures: (i) horizontal spacing between ligatures and -lyrics aligment is broken; (ii) the clef does not show on each line; -(iii) lily crashes when removing Stem_engraver, but still using -Slur_engraver (this is useful needed for the \addlyrics feature when -no slurs are to be typeset); (iv) episem causes a parse error (this -used to work a while ago); (v) pitches are typeset half a staff space -too high (the second note is a d, but it appears on the line of the do -clef; this bug must have been introduced only recently); (vi) support -for augmentum dots is missing; (vii) accidentals must be placed before -the ligature (not demonstrated in this example)." +lyrics aligment is broken; (ii) lily crashes when removing +Stem_engraver, but still using Slur_engraver (this is useful needed +for the \addlyrics feature when no slurs are to be typeset); (iii) +episem causes a parse error (this used to work a while ago); (iv) +support for augmentum dots is missing; (v) accidentals must be placed +before the ligature (not demonstrated in this example)." } @@ -27,7 +24,7 @@ the ligature (not demonstrated in this example)." %%% but this is intentional for editorial purposes (simplifies some %%% global search/replace operations in emacs). -cantus = \notes \transpose c c { +cantus = \notes { \[ g4 ( %%% Pu- \pes @@ -86,40 +83,21 @@ cantus = \notes \transpose c c { g-) \] \divisioMaxima - g %%% cu- - a %%% us - c' %%% im- - \[ b - ( %%% pe- - \pes d' e' \pes - f'-) - \] - \[ d' - ( %%% ri- - \flexa - c'-) - \] - c' %%% um } verba = \context Lyrics = verba \lyrics { Pu- er na- tus est no- bis, et fi- li- us da- tus est no- bis: - cu- ius im- pe- ri- um } \score { - \context StaffGroup < - \context VaticanaStaff < - \context VaticanaVoice < - \addlyrics - \cantus - \verba - > - > + \context VaticanaVoice < + \addlyrics + \cantus + \verba > \paper { - stafflinethickness = \staffspace / 5.0 + stafflinethickness = \staffspace / 7.0 linewidth = 137.0\mm width = 137.0\mm indent = 0.0 @@ -127,115 +105,16 @@ verba = \context Lyrics = verba \lyrics { packed = ##t % width = 15.0 \cm %%% no effect? - \translator { - \VoiceContext - \name VaticanaVoice - \alias Voice - - % Can not `\remove "Slur_engraver"', since \addlyrics needs - % slurs working. Hence, set slurs transparent instead. - Slur \override #'transparent = ##t - - % N.B.: Warnings of the type "Degenerate bow: infinite steepness - % reqd" arise from the fact that all noteheads of a ligature are - % in the same paper column. Therefore, the (transparent) slurs - % often start and end in the same column, producing the above - % warning. TODO: supress this warning; we need slurs only for - % \addlyrics, not for printing. - - % `\remove "Stem_engraver"' currently produces a crash (see - % below). Hence, set stems transparent instead. - Stem \set #'transparent = ##t - % \remove "Stem_engraver" - -%{ - -FIXME: - -When removing Stem_engraver from VoiceContext (but still using -Slur_engraver), lily will crash while trying to typeset slurs, since -`()' is not a valid stem: - -In unknown file: - ?: 0* [Slur::after_line_breaking #] - ?: 1* [# # -1] -In /home/reuter/project/lilypond-1.7/share/lilypond/scm/slur.scm: - 43: 2* [not ... - 43: 3* [attached-to-stem # -1] - 10: 4 (let* ((note-columns #) (col #) (stem #)) (and (eq? col #) stem ...)) - ... - 16: 5 [ly:get-grob-property () heads] - -/home/reuter/project/lilypond-1.7/share/lilypond/scm/slur.scm:16:6: In procedure ly_get_grob_property in expression (ly:get-grob-property stem (quote heads)): -/home/reuter/project/lilypond-1.7/share/lilypond/scm/slur.scm:16:6: Wrong type argument in position 1 (expecting grob): () - -%} - - \remove Ligature_bracket_engraver - \consists Vaticana_ligature_engraver - NoteHead \set #'style = #'vaticana_punctum - Script \set #'padding = #0.0 - - % 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 = #'("" . "") - } - \translator { - \VoiceContext - \name GregorianTransciptionVoice - \alias Voice - Stem \set #'transparent = ##t - % \remove "Stem_engraver" - % Slur \override #'transparent = ##t - \remove "Slur_engraver" - } - \translator { - \StaffContext - \name GregorianTranscriptionStaff - \alias Staff - \accepts GregorianTranscriptionVoice - BarLine \override #'transparent = ##t - } - \translator { - \StaffContext - \name VaticanaStaff - \alias Staff - \accepts VaticanaVoice - \remove Bar_engraver - \consists Custos_engraver - clefGlyph = #"clefs-vaticana_do" - centralCPosition = #1 - clefPosition = #1 - clefOctavation = #0 - StaffSymbol \set #'line-count = #4 - StaffSymbol \set #'width = #60.0 % FIXME: unit should be \linewidth - TimeSignature \set #'transparent = ##t - 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 - } - \translator { - \HaraKiriStaffContext - \accepts VaticanaVoice - \accepts GregorianTranscriptionVoice - } \translator { \ScoreContext - \accepts VaticanaStaff - \accepts GregorianTranscriptionStaff \remove Bar_number_engraver -% SpacingSpanner \set #'spacing-increment = #0.5 +% SpacingSpanner \set #'spacing-increment = #0.5 timing = ##f - % Don't do this except for transcription -- it will produce + % Maybe don't do this except for transcription -- it may produce % additional space barAlways = ##t -% skipBars = ##t +% skipBars = ##t } } } diff --git a/input/test/gregorian-scripts.ly b/input/test/gregorian-scripts.ly index 922b8e07ad..29f4dc3034 100644 --- a/input/test/gregorian-scripts.ly +++ b/input/test/gregorian-scripts.ly @@ -1,4 +1,4 @@ -\version "1.7.19" +\version "1.8.0" \header { title = "Gregorian Scripts" texidoc = "@cindex Gregorian Scripts @@ -7,12 +7,11 @@ Gregorian Scripts: ictus, circulus, semicirculus, accentus, episem. -TODO: augmentum. - -FIXME: when applying an episem within a ligature, the TextSpanner's width -collapses to 0.0. - -FIXME: clef does not show on each line. +TODO: augmentum. Syntax: either as bracket (\augmentumInitium, +\augmentumFinis), or as head prefix with subsequently collecting all +dots and putting them behind the ligature in a vertical row. +Counterexample to the second approach: Graduale Triplex, tempus per +annum, hebdomada septima, alleluia (page 280). FIXME: horizontal spacing (ragged right mode). @@ -22,81 +21,28 @@ FIXME: padding/minimum-distance is fragile. \include "gregorian-init.ly" -cantus = \notes \relative c' { - \clef "vaticana_do2" - - a-\ictus - a-\circulus - a-\semicirculus - a-\accentus - - %{ %% TODO: augmentum: - a-\augmentum - \[ \augmentumInitium b \flexa a \augmentumFinis \] - %} - - a \episemInitium b \flexa a \episemFinis - - \[ a \episemInitium b \flexa a \episemFinis \] -} - \score { - \context VaticanaStaff < - \context VaticanaVoice < - \cantus - > - > + \context VaticanaVoice { + \property VaticanaVoice.Script \set #'padding = #-0.5 + \notes { + a-\ictus + a-\circulus + a-\semicirculus + a-\accentus + + %{ %% TODO: augmentum: + a-\augmentum + \[ \augmentumInitium b \flexa a \augmentumFinis \] + %} + + \[ a \episemInitium \pes b \flexa a \episemFinis \] + } + } \paper { linewidth = 70.0 stafflinethickness = \staffspace / 5.0 width = 60.0 indent = 0.0 raggedright = ##t - -% width = 15.0 \cm %%% no effect? -% gourlay_maxmeasures = 1. %%% no effect? - - \translator { - \VoiceContext - \name VaticanaVoice - \alias Voice - \remove "Stem_engraver" - \remove Ligature_bracket_engraver - \consists Vaticana_ligature_engraver - NoteHead \set #'style = #'vaticana_punctum - Script \set #'padding = #0.0 - - % 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 = #'("" . "") - } - \translator { - \StaffContext - \name VaticanaStaff - \alias Staff - \accepts VaticanaVoice - \remove Bar_engraver - \consists Custos_engraver - StaffSymbol \set #'line-count = #4 -% StaffSymbol \set #'width = #60.0 % FIXME: should be \linewidth - TimeSignature \set #'transparent = ##t - 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 - } - \translator { - \RemoveEmptyStaffContext - \accepts VaticanaVoice - } - \translator { - \ScoreContext - \accepts VaticanaStaff - \remove Bar_number_engraver - } } } diff --git a/input/test/vaticana.ly b/input/test/vaticana.ly index fab7d16020..5878392129 100644 --- a/input/test/vaticana.ly +++ b/input/test/vaticana.ly @@ -1,4 +1,4 @@ -\version "1.7.19" +\version "1.8.0" % possible rename to ancient-something. \header { texidoc = "Ancient Vaticana @@ -7,16 +7,7 @@ Vaticana ligature test. " \include "gregorian-init.ly" -% -% FIXME: custodes and clefs do not show on all staves -% - -% -% FIXME: move VaticnaStaff/VaticanaVoice definition to engraver-init.ly? -% Or rather to gregorian-init.ly? -% - -cantus = \notes \relative c { +cantus = \notes { \clef "vaticana_fa2" \[ f \quilisma g \auctum \descendens a \] \[ \virga a g \pes a \inclinatum f \inclinatum d @@ -31,55 +22,23 @@ verba = \context Lyrics = verba \lyrics { } \score { - \context VaticanaStaff < - \context VaticanaVoice < - \cantus - \verba - > + \context VaticanaVoice < + \cantus + \verba > \paper { - stafflinethickness = \staffspace / 5.0 - linewidth = 15.0 \cm + stafflinethickness = \staffspace / 7.0 + linewidth = 137.0 \mm + width = 137.0 \mm indent = 0.0 - raggedright = ##t -% -% FIXME: packed alignment is currently broken -% - - \translator { - \VoiceContext - \name VaticanaVoice - \alias Voice - \remove "Stem_engraver" - \remove Ligature_bracket_engraver - \consists Vaticana_ligature_engraver - NoteHead \set #'style = #'vaticana_punctum -% TextScript \set #'padding = #0.0 - } - \translator { - \StaffContext - \name VaticanaStaff - \alias Staff - \accepts VaticanaVoice - \remove Bar_engraver - \consists Custos_engraver - StaffSymbol \set #'line-count = #4 - TimeSignature \set #'transparent = ##t - 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 - } - \translator { - \RemoveEmptyStaffContext - \accepts VaticanaVoice - } + raggedright = ##t + packed = ##t + % packed = ##t %%%% FIXME \translator { \ScoreContext - \accepts VaticanaStaff \remove Bar_number_engraver + timing = ##f + barAlways = ##t } } } diff --git a/lilypond.words b/lilypond.words index bd3957a18d..4048fcfa39 100644 --- a/lilypond.words +++ b/lilypond.words @@ -143,6 +143,8 @@ Grace \\grandstaff GrandStaff \\GrandStaffContext +GregorianTranscriptionStaff +GregorianTranscriptionVoice \\grobdescriptions \\groupClose \\groupOpen diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index d9ca758961..67e827de26 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -378,6 +378,7 @@ RemoveEmptyStaffContext = \translator { HaraKiriStaffContext = \translator { \RemoveEmptyStaffContext \accepts "VaticanaVoice" + \accepts "GregorianTranscriptionVoice" } ScoreContext = \translator { @@ -419,6 +420,7 @@ ScoreContext = \translator { \accepts "Staff" \accepts "TabStaff" \accepts "VaticanaStaff" + \accepts "GregorianTranscriptionStaff" \accepts "StaffContainer" \accepts "StaffGroup" \accepts "RhythmicStaff" @@ -624,6 +626,12 @@ VaticanaVoiceContext = \translator { % As a workaround, we make the grob transparent. Stem \set #'transparent = ##t + % Since we do not remove stems, but only make it transparent, we have + % to set the length to 0.0. Otherwise, articulation marks (such as + % ictus, circulus or accentus) may be vertically placed quite away from + % the note head. + Stem \set #'length = #'0.0 + \remove "Ligature_bracket_engraver" \consists "Vaticana_ligature_engraver" @@ -641,6 +649,7 @@ VaticanaVoiceContext = \translator { TextSpanner \set #'style = #'line TextSpanner \set #'edge-height = #'(0 . 0) TextSpanner \set #'padding = #0.5 + TextSpanner \set #'enclose-bounds = ##t TextSpanner \set #'edge-text = #'("" . "") } @@ -650,12 +659,13 @@ VaticanaStaffContext = \translator { \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." + \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. + % We can not remove Bar_engraver; otherwise clefs and custodes will + % not show up any more among other line breaking issues. % Instead, we make the grob transparent. BarLine \set #'transparent = ##t @@ -681,3 +691,62 @@ VaticanaStaffContext = \translator { % Score.timing = ##f % Score.barAlways = ##t } + +GregorianTranscriptionVoiceContext = \translator { + \VoiceContext + \name "GregorianTranscriptionVoice" + \alias "Voice" + + % Removing ligature bracket engraver without replacing it by some + % other ligature engraver would cause a "Junking event: `LigatureEvent'" + % warning for every "\[" and "\]". Therefore, we make the grob + % transparent instead. + LigatureBracket \set #'transparent = ##t + + % 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 + + % Since we do not remove stems, but only make it transparent, we have + % to set the length to 0.0. Otherwise, articulation marks (such as + % ictus, circulus or accentus) may be vertically placed quite away from + % the note head. + Stem \set #'length = #'0.0 + + % 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 #'enclose-bounds = ##t + TextSpanner \set #'edge-text = #'("" . "") +} + +GregorianTranscriptionStaffContext = \translator { + \StaffContext + \name "GregorianTranscriptionStaff" + \alias "Staff" + \denies "Voice" + \accepts "GregorianTranscriptionVoice" + + % We can not remove Bar_engraver; otherwise clefs and custodes will + % not show up any more among other line breaking issues. + % Instead, we make the grob transparent. + BarLine \set #'transparent = ##t +} diff --git a/ly/params-init.ly b/ly/params-init.ly index c47e714ea1..821511744d 100644 --- a/ly/params-init.ly +++ b/ly/params-init.ly @@ -52,6 +52,8 @@ interscoreline = 4. \mm \translator { \TabVoiceContext } \translator { \VaticanaStaffContext } \translator { \VaticanaVoiceContext } +\translator { \GregorianTranscriptionStaffContext } +\translator { \GregorianTranscriptionVoiceContext } %%