From: Jürgen Reuter Date: Mon, 21 Apr 2003 23:50:58 +0000 (+0000) Subject: * ly/gregorian-init.ly, ly/script-init.ly, mf/parmesan-scripts.mf, X-Git-Tag: release/1.7.18~24 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b78065c0006eecf50d1f3a756b2f3115a9df3bed;p=lilypond.git * 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 --- diff --git a/ChangeLog b/ChangeLog index f4e6768ad3..d17fd295d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-04-22 Juergen Reuter + + * 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 * 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 index 0000000000..489504d247 --- /dev/null +++ b/input/test/gregorian-scripts.ly @@ -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 + } + } +} diff --git a/ly/gregorian-init.ly b/ly/gregorian-init.ly index 75af5698f0..8dfcde6751 100644 --- a/ly/gregorian-init.ly +++ b/ly/gregorian-init.ly @@ -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) diff --git a/ly/script-init.ly b/ly/script-init.ly index e9c3b4f98e..d274fcc569 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -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") diff --git a/mf/parmesan-scripts.mf b/mf/parmesan-scripts.mf index a6fd8f3ab4..aef2977689 100644 --- a/mf/parmesan-scripts.mf +++ b/mf/parmesan-scripts.mf @@ -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; diff --git a/scm/script.scm b/scm/script.scm index 0acb44e562..d8f1be5e35 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -23,6 +23,31 @@ ((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)))