]> git.donarmstrong.com Git - lilypond.git/commitdiff
* ly/gregorian-init.ly, ly/script-init.ly, mf/parmesan-scripts.mf,
authorJürgen Reuter <j@web.de>
Mon, 21 Apr 2003 23:50:58 +0000 (23:50 +0000)
committerJürgen Reuter <j@web.de>
Mon, 21 Apr 2003 23:50:58 +0000 (23:50 +0000)
scm/script.scm, input/test/gregorian-scripts.ly: added scripts for
chant notation

ChangeLog
input/test/gregorian-scripts.ly [new file with mode: 0644]
ly/gregorian-init.ly
ly/script-init.ly
mf/parmesan-scripts.mf
scm/script.scm

index f4e6768ad39cec02d35edc93431cc4dce99a38bc..d17fd295d8ca12e40916e7342d7cc4a7b078db9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-22  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * ly/gregorian-init.ly, ly/script-init.ly, mf/parmesan-scripts.mf,
+       scm/script.scm, input/test/gregorian-scripts.ly: added scripts for
+       chant notation
+
 2003-04-21  Juergen Reuter  <reuter@ipd.uka.de>
 
        * buildscripts/mf-to-table.py: bugfix: "--" in glyph names:
diff --git a/input/test/gregorian-scripts.ly b/input/test/gregorian-scripts.ly
new file mode 100644 (file)
index 0000000..489504d
--- /dev/null
@@ -0,0 +1,106 @@
+\version "1.7.17"
+\header {
+    title      = "Gregorian Scripts"
+    date       = "2003"
+    texidoc     = "
+
+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
+
+FIXME: horizontal spacing (ragged right mode)
+
+FIXME: padding/minimum-distance is fragile.
+
+"}
+
+\include "paper26.ly"
+\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
+    >
+  >
+  \paper {
+    stafflinethickness = \staffspace / 5.0
+    linewidth = 70.0
+    width = 60.0
+    indent = 0.0
+    raggedright = ##t
+
+%   width = 15.0 \cm %%% no effect?
+%   gourlay_maxmeasures = 1. %%% no effect?
+%   arithmetic_basicspace = 0.0 %%% no effect?
+%   arithmetic_multiplier = 0.\pt %%% 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 #'type = #'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 {
+      \HaraKiriStaffContext
+      \accepts VaticanaVoice
+    }
+    \translator {
+      \ScoreContext
+      \accepts VaticanaStaff
+      \remove Bar_number_engraver
+    }
+  }
+}
index 75af5698f01e82e946bea28ce012118e96dabac7..8dfcde6751c48a35032d77a2393ddc2af06dbe13 100644 (file)
@@ -66,3 +66,7 @@ finalis = {
   \once \property Voice.BreathingSign \override #'Y-offset-callbacks = #'()
   \breathe
 }
+
+episemInitium = #(make-span-event 'TextSpanEvent START)
+
+episemFinis = #(make-span-event 'TextSpanEvent STOP)
index e9c3b4f98e8321f7615c3e887a4086764a7fe9cb..d274fcc569f551e34ff343f847f422a873cf51b4 100644 (file)
@@ -14,6 +14,10 @@ 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")
index a6fd8f3ab4870bd9323e07e9713112f85098c895..aef297768978f84b461f1faeb178e95b4cc93c8e 100644 (file)
@@ -8,6 +8,94 @@
 
 fet_begingroup ("scripts")
 
+fet_beginchar("ictus", "ictus", "ictus")
+       save ht, wd;
+       ht# = .35 staff_space#;
+       wd# = stafflinethickness#;
+       define_pixels(wd, ht);
+       pickup pencircle
+               xscaled wd
+               yscaled blot_diameter;
+       set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);
+       x1 = 0; top y1 = ht/2;
+       x2 = 0; bot y2 = -ht/2;
+       draw z1 -- z2;
+fet_endchar;
+
+
+def draw_accentus =
+       save thick, thin, ht, wd;
+       thin# = 1 stafflinethickness#;
+       thick# = 1.2 stafflinethickness#;
+       ht# = .35 staff_space#;
+       wd# = .25 staff_space#;
+       define_pixels(wd, ht, thin, thick);
+       z1 = z2 = (-wd/2 + thin/2, -ht/2 + thin/2);
+       z3 = z4 = (wd/2 - thick/2, ht/2 - thick/2);
+       penpos1(thin, angle(z1-z3));
+       penpos2(thin, angle(z1-z3)+90);
+       penpos3(thick, angle(z3-z1)+90);
+       penpos4(thick, angle(z3-z1));
+       fill z1r .. z2r -- z3l .. z4r .. z3r -- z2l .. cycle;
+       set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);
+enddef;
+
+fet_beginchar("accentus up", "uaccentus", "uaccentus")
+       draw_accentus;
+fet_endchar;
+
+fet_beginchar("accentus down", "daccentus", "daccentus")
+       draw_accentus;
+       y_mirror_char;
+fet_endchar;
+
+
+def draw_half_ellipse(expr ellips_width, ellips_height) =
+       save width, height, thin, thick;
+       width# = ellips_width;
+       height# = ellips_height;
+       define_pixels(width, height);
+
+       thin = thick = 0.6 stafflinethickness;
+       penpos1(thick, 0);
+       penpos2(thin, -90);
+       z1r = (width/2, 0);
+       z2r = (0, -height/2);
+       penlabels(1,2);
+       penstroke z1e{down} .. {left}z2e;
+       addto currentpicture also currentpicture xscaled -1;
+enddef;
+
+fet_beginchar("half circle", "usemicirculus", "usemicirculus")
+       draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
+       currentpicture := currentpicture yscaled -1;
+       set_char_box(width#/2, width#/2, 0, height#/2);
+fet_endchar;
+
+
+fet_beginchar("half circle", "dsemicirculus", "dsemicirculus")
+       draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
+       set_char_box(width#/2, width#/2, height#/2, 0);
+fet_endchar;
+
+
+fet_beginchar("circle", "circulus", "circulus")
+       draw_half_ellipse(5/16 staff_space#, 5/16 staff_space#);
+       set_char_box(width#/2, width#/2, height#/2, height#/2);
+       addto currentpicture also currentpicture yscaled -1;
+fet_endchar;
+
+
+fet_beginchar("augmentum", "augmentum", "augmentum")
+       save diameter;
+       diameter# = 0.25 staff_space#;
+       define_pixels(diameter);
+       pickup pencircle scaled diameter;
+       draw (0,0);
+       set_char_box(diameter#/2, diameter#/2, diameter#/2, diameter#/2);
+fet_endchar;
+
+
 def draw_signum_congruentiae =
        save za, zb, zc, zd, ze, zf, zg, zh;
        pair za, zb, zc, zd, ze, zf, zg, zh;
index 0acb44e562cddd6915fbd36fd133287ab38342dd..d8f1be5e356dfe232a99de8f780d819ec12f3ce9 100644 (file)
          ((script-molecule . (feta . ("dportato" . "uportato")))
           (side-relative-direction . -1)))
 
+        ("accentus" .
+         ((script-molecule . (feta . ("uaccentus" . "uaccentus")))
+          (side-relative-direction .  -1)
+          (follow-into-staff  . #t)
+          (priority . -100)
+          (direction  . 1)))
+        ("ictus" .
+         ((script-molecule . (feta . ("ictus" . "ictus")))
+          (side-relative-direction .  -1)
+          (follow-into-staff  . #t)
+          (priority . -100)
+          (direction  . -1)))
+        ("semicirculus" .
+         ((script-molecule . (feta . ("dsemicirculus" . "dsemicirculus")))
+          (side-relative-direction .  -1)
+          (follow-into-staff  . #t)
+          (priority . -100)
+          (direction  . 1)))
+        ("circulus" .
+         ((script-molecule . (feta . ("circulus" . "circulus")))
+          (side-relative-direction .  -1)
+          (follow-into-staff  . #t)
+          (priority . -100)
+          (direction  . 1)))
+
         ("signumcongruentiae" .
          ((script-molecule . (feta . ("dsignumcongruentiae" . "usignumcongruentiae")))
           (direction .  1)))