\notes \transpose c' {
\property Staff.Clef \set #'font-family = #'ancient
+ \property Staff.KeySignature \set #'font-family = #'ancient
\property Staff.KeySignature \override #'style = #'vaticana
+ \property Staff.Accidentals \set #'font-family = #'ancient
\property Staff.Accidentals \override #'style = #'vaticana
\property Staff.Custos \set #'font-family = #'ancient
\property Staff.Custos \override #'style = #'vaticana
+ \property Staff.Custos \override #'neutral-position = #4
+ \property Staff.Custos \override #'neutral-direction = #-1
+ \property Staff.Custos \override #'adjust-if-on-staffline = ##t
\property Voice.NoteHead \set #'font-family = #'ancient
\property Voice.NoteHead \override #'style = #'vaticana_punctum
\property Voice.Porrectus \override #'style = #'vaticana
\notes \transpose c' {
\property Voice.noAutoBeaming = ##t
\property Staff.Clef \set #'font-family = #'ancient
+ \property Staff.KeySignature \set #'font-family = #'ancient
\property Staff.KeySignature \override #'style = #'mensural
+ \property Staff.Accidentals \set #'font-family = #'ancient
\property Staff.Accidentals \override #'style = #'mensural
\property Staff.Custos \set #'font-family = #'ancient
\property Staff.Custos \override #'style = #'mensural
+ \property Staff.Custos \override #'neutral-position = #3
+ \property Staff.Custos \override #'neutral-direction = #-1
+ \property Staff.Custos \override #'adjust-if-on-staffline = ##t
\property Voice.NoteHead \set #'font-family = #'ancient
\property Voice.NoteHead \override #'style = #'neo_mensural
\property Voice.Stem \set #'font-family = #'ancient % ancient flags
source file of the GNU LilyPond music typesetter
- (C) 2000 Juergen Reuter <reuterj@ira.uka.de>
+ (C) 2000, 2002 Juergen Reuter <reuter@ipd.uka.de>
*/
/* TODO:
- do not show if a clef change immediately follows in the next line
- - make custos direction control configurable
-
- decide: do or do not print custos if the next line starts with a rest
*/
#include <stdio.h>
+#include "direction.hh"
#include "staff-symbol-referencer.hh"
#include "custos.hh"
#include "molecule.hh"
#include "note-head.hh"
#include "item.hh"
#include "font-interface.hh"
+#include "math.h" // rint
/*
This function is a patched and hopefully much more understandable
if (gh_symbol_p (scm_style))
{
String style = ly_scm2string (scm_symbol_to_string (scm_style));
+ bool adjust =
+ to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
+
+ String idx = "custodes-" + style + "-";
- String idx = "custodes-";
- int interspaces = Staff_symbol_referencer::line_count (me)-1;
+ int neutral_pos;
+ SCM ntr_pos = me->get_grob_property ("neutral-position");
+ if (gh_number_p (ntr_pos))
+ neutral_pos = gh_scm2int (ntr_pos);
+ else
+ neutral_pos = 0;
+
+ Direction neutral_direction =
+ to_dir (me->get_grob_property ("neutral-direction"));
+
+ int pos = (int)rint (Staff_symbol_referencer::position_f (me));
+ int sz = Staff_symbol_referencer::line_count (me)-1;
+
+ if (pos < neutral_pos)
+ idx += "u";
+ else if (pos > neutral_pos)
+ idx += "d";
+ else if (neutral_direction == UP)
+ idx += "u";
+ else if (neutral_direction == DOWN)
+ idx += "d";
+ else // auto direction; not yet supported -> use "d"
+ idx += "d";
+
+ if (adjust)
+ {
+ idx += (((pos ^ sz) & 0x1) == 0) ? "1" : "0";
+ }
+ else
+ {
+ idx += "2";
+ }
- Real pos = Staff_symbol_referencer::position_f (me);
-
- if (pos > (interspaces/2 + 1)) // TODO: make this rule configurable
- idx += "r";
- idx += style;
Molecule molecule
= Font_interface::get_default_font (me)->find_by_name (idx);
if (molecule.empty_b ())
{
- String message = "unknown custos style: `" + style + "'";
+ String message = "no such custos: `" + idx + "'";
warning (_ (message.ch_C ()));
return SCM_EOL;
}
else
{
- add_streepjes (me, (int)pos, interspaces, &molecule);
+ add_streepjes (me, (int)pos, sz, &molecule);
return molecule.smobbed_copy ();
}
}
{
style = "";
}
+ bool adjust = to_boolean (me->get_grob_property ("adjust-if-on-staffline"));
+
if (String::compare_i (style, "mensural") == 0)
/* Mensural notation: For notes on staff lines, use different
flags than for notes between staff lines. The idea is that
touches a staff line.
*/
{
- /* Urrgh! We have to detect wether this stem ends on a staff
- line or between two staff lines. But we can not call
- stem_end_position(me) or get_default_stem_end_position(me),
- since this encounters the flag and hence results in an
- infinite recursion. However, in pure mensural notation,
- there are no multiple note heads attached to a single stem,
- neither is there usually need for using the stem_shorten
- property (except for 32th and 64th notes, but that is not a
- problem since the stem length in this case is augmented by
- an integral multiple of staff_space). Hence, it should be
- sufficient to just take the first note head, assume it's
- the only one, look if it's on a staff line, and select the
- flag's shape accordingly. In the worst case, the shape
- looks slightly misplaced, but that will usually be the
- programmer's fault (e.g. when trying to attach multiple
- note heads to a single stem in mensural notation).
-
- */
- Grob *first = first_head(me);
- int sz = Staff_symbol_referencer::line_count (me)-1;
- int p = (int)rint (Staff_symbol_referencer::position_f (first));
- staffline_offs = (((p ^ sz) & 0x1) == 0) ? "1" : "0";
+ if (adjust)
+ {
+ /* Urrgh! We have to detect wether this stem ends on a staff
+ line or between two staff lines. But we can not call
+ stem_end_position(me) or get_default_stem_end_position(me),
+ since this encounters the flag and hence results in an
+ infinite recursion. However, in pure mensural notation,
+ there are no multiple note heads attached to a single stem,
+ neither is there usually need for using the stem_shorten
+ property (except for 32th and 64th notes, but that is not a
+ problem since the stem length in this case is augmented by
+ an integral multiple of staff_space). Hence, it should be
+ sufficient to just take the first note head, assume it's
+ the only one, look if it's on a staff line, and select the
+ flag's shape accordingly. In the worst case, the shape
+ looks slightly misplaced, but that will usually be the
+ programmer's fault (e.g. when trying to attach multiple
+ note heads to a single stem in mensural notation). */
+ Grob *first = first_head(me);
+ int sz = Staff_symbol_referencer::line_count (me)-1;
+ int p = (int)rint (Staff_symbol_referencer::position_f (first));
+ staffline_offs = (((p ^ sz) & 0x1) == 0) ? "1" : "0";
+ }
+ else
+ {
+ staffline_offs = "2";
+ }
}
else
{
- staffline_offs = "";
+ staffline_offs = "";
}
char c = (get_direction (me) == UP) ? 'u' : 'd';
String index_str
#include "time-signature.hh"
#include "paper-def.hh"
#include "font-interface.hh"
+#include "warn.hh"
MAKE_SCHEME_CALLBACK (Time_signature,brew_molecule,1);
/*
if (!m.empty_b ())
return m;
+ String message =
+ "unknown time signature `" + s +
+ "'; resorting to default layout with numbers";
+ warning (_ (message.ch_C ()));
+
// Resort to default layout with numbers
return time_signature (me, n, d);
}
noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
define_pixels(noteheight);
+save between_staff_lines, on_staff_line, anywhere;
+between_staff_lines = 0;
+on_staff_line = 1;
+anywhere = 2;
+
+save dir_up, dir_down;
+dir_up = 1;
+dir_down = -1;
+
%%%%%%%%
%
%
%
-% stem up
-fet_beginchar("Custos Hufnagel", "hufnagel", "hufnagel")
- save b_h,a_w;
- a_b:=1.54; % b_h*a_b/a_w = wd/ht
- b_h:=0.85;
- a_w:=1.09;
-
- save a, beta, ht, wd;
- ht# =noteheight#;
- 2beta#=ht#*b_h;
- a# = beta#*a_b;
- wd# = 2a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2);
- black_notehead_width# := wd#;
-
- save rh_width, rh_height, rh_edge; % rhombus dimensions
- rh_width#=0.7ht#; % ht*tan(35)
- rh_height#=1.0ht#;
- rh_edge#=0.61ht#; % (ht/2)/cos(35)
-
- define_pixels(rh_width, rh_height, rh_edge);
- pickup pencircle
- xscaled stafflinethickness
- yscaled rh_edge rotated -35;
- z1=(0.5rh_width,+0.25rh_height);
- z2=(1.0rh_width,-0.25rh_height);
- z3=(2.0rh_width,+0.50rh_height);
- draw z1 -- z2 -- z3;
-fet_endchar;
-
-% stem down
-fet_beginchar("Reverse Custos Hufnagel", "rhufnagel", "rhufnagel")
- save b_h,a_w;
- a_b:=1.54; % b_h*a_b/a_w = wd/ht
- b_h:=0.85;
- a_w:=1.09;
-
- save a, beta, ht, wd;
- ht# =noteheight#;
- 2beta#=ht#*b_h;
- a# = beta#*a_b;
- wd# = 2a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2);
- black_notehead_width# := wd#;
-
- save rh_width, rh_height, rh_edge; % rhombus dimensions
- rh_width#=0.7ht#; % ht*tan(35)
- rh_height#=1.0ht#;
- rh_edge#=0.61ht#; % (ht/2)/cos(35)
-
- define_pixels(rh_width, rh_height, rh_edge);
- pickup pencircle
- xscaled stafflinethickness
- yscaled rh_edge rotated +35;
- z1=(0.5rh_width,-0.25rh_height);
- z2=(1.0rh_width,+0.25rh_height);
- z3=(2.0rh_width,-0.50rh_height);
- draw z1 -- z2 -- z3;
-fet_endchar;
-
+% parameterized hufnagel custos
+def custos_hufnagel(expr verbose_name, internal_name, mudela_name,
+ direction, staffline_adjustment) =
+
+ fet_beginchar(verbose_name, internal_name, mudela_name)
+
+ save b_h, a_w;
+ a_b := 1.54; % b_h * a_b / a_w = wd / ht
+ b_h := 0.85;
+ a_w := 1.09;
+
+ save a, beta, ht, wd;
+ ht# = noteheight#;
+ 2beta# = ht# * b_h;
+ a# = beta# * a_b;
+ wd# = 2a# / a_w;
+ set_char_box(0, wd#, ht# / 2, ht# / 2);
+ black_notehead_width# := wd#;
+
+ save rh_width, rh_height, rh_edge; % rhombus dimensions
+ rh_width# / ht# = tand(35);
+ rh_height# = 1.0ht#;
+ rh_edge# * cosd(35) = ht# / 2;
+
+ save stem_size;
+ if staffline_adjustment = between_staff_lines:
+ stem_size = 0.25;
+ elseif staffline_adjustment = on_staff_line:
+ stem_size = 0.75;
+ else: % staffline_adjustment = anywhere
+ stem_size = 0.50;
+ fi;
+
+ define_pixels(rh_width, rh_height, rh_edge);
+ pickup pencircle
+ xscaled stafflinethickness
+ yscaled rh_edge
+ rotated (-35*direction);
+ z1=(0.5rh_width,+0.25direction*rh_height);
+ z2=(1.0rh_width,-0.25direction*rh_height);
+ z3-z2=(stem_size*rh_width,+0.75*stem_size*direction*rh_height);
+ draw z1 -- z2 -- z3;
+
+ fet_endchar;
+enddef;
+
+% custos hufnagel, stem up, between staff lines
+custos_hufnagel("Custos Hufnagel", "hufnagel-u0", "hufnagel_u0",
+ dir_up, between_staff_lines);
+
+% custos hufnagel, stem up, on staff line
+custos_hufnagel("Custos Hufnagel", "hufnagel-u1", "hufnagel_u1",
+ dir_up, on_staff_line);
+
+% custos hufnagel, stem up, anywhere
+custos_hufnagel("Custos Hufnagel", "hufnagel-u2", "hufnagel_u2",
+ dir_up, anywhere);
+
+% custos hufnagel, stem down, between staff lines
+custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d0", "hufnagel_d0",
+ dir_down, between_staff_lines);
+
+% custos hufnagel, stem down, on staff line
+custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d1", "hufnagel_d1",
+ dir_down, on_staff_line);
+
+% custos hufnagel, stem down, anywhere
+custos_hufnagel("Reverse Custos Hufnagel", "hufnagel-d2", "hufnagel_d2",
+ dir_down, anywhere);
%%%%%%%%
%
+%
% Medicaea style
%
+%
+
+def custos_medicaea(expr verbose_name, internal_name, mudela_name,
+ direction, staffline_adjustment) =
+
+ fet_beginchar(verbose_name, internal_name, mudela_name)
+
+ save b_h, a_w;
+ a_b := 1.54; % b_h * a_b / a_w = wd / ht
+ b_h := 0.85;
+ a_w := 1.09;
+
+ save a, beta, ht, wd;
+ ht# = noteheight# * mag;
+ 2beta# = ht# * b_h;
+ a# = beta# * a_b;
+ wd# = 0.4a# / a_w; % width intentionally too small
+ set_char_box(0, wd#, ht# / 2, ht# / 2);
+ black_notehead_width# := wd#;
+
+ define_pixels(ht, wd);
+
+ save stem_size;
+ if staffline_adjustment = between_staff_lines:
+ stem_size = 0.90;
+ elseif staffline_adjustment = on_staff_line:
+ stem_size = 1.40;
+ else: % staffline_adjustment = anywhere
+ stem_size = 1.15;
+ fi;
+
+ pickup pencircle xscaled blot_diameter yscaled 1.0ht;
+ z1 = (0.0wd, 0.0ht);
+ z2 = z1 + (1.0wd - blot_diameter/2, 0);
+ draw z1 .. z2;
-% stem up
-fet_beginchar("Custos Med.", "medicaea", "medicaea")
- save b_h, a_w;
- a_b := 1.54; % b_h*a_b/a_w = wd/ht
- b_h := 0.85;
- a_w := 1.09;
-
- save a, beta, ht, wd;
- ht# = noteheight# * mag;
- 2beta# = ht# * b_h;
- a# = beta# * a_b;
- wd# = 0.4a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
-
- % head
- pickup pencircle xscaled blot_diameter yscaled 1.0ht;
- z1 = (0.0wd, 0.0ht);
- z2 = z1 + (1.0wd - blot_diameter/2, 0);
- draw z1 .. z2;
-
- % stem
- pickup pencircle scaled stafflinethickness;
- z3 = (1.0wd - stafflinethickness/2, 0.0ht);
- z4 = z3 + (0, +1.0ht);
- draw z3 .. z4;
-fet_endchar;
-
-
-% stem down
-fet_beginchar("Reverse Custos Med.", "rmedicaea", "rmedicaea")
- save b_h, a_w;
- a_b := 1.54; % b_h*a_b/a_w = wd/ht
- b_h := 0.85;
- a_w := 1.09;
-
- save a, beta, ht, wd;
- ht# = noteheight# * mag;
- 2beta# = ht# * b_h;
- a# = beta# * a_b;
- wd# = 0.4a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
-
- % head
- pickup pencircle xscaled blot_diameter yscaled 1.0ht;
- z1 = (0.0wd, 0.0ht);
- z2 = z1 + (1.0wd - blot_diameter/2, 0);
- draw z1 .. z2;
-
- % stem
- pickup pencircle scaled stafflinethickness;
- z3 = (1.0wd - stafflinethickness/2, 0.0ht);
- z4 = z3 + (0, -1.0ht);
- draw z3 .. z4;
-fet_endchar;
+ pickup pencircle scaled stafflinethickness;
+ z3 = (1.0wd - stafflinethickness/2, 0.0ht);
+ z4 = z3 + (0, +direction*stem_size*ht);
+ draw z3 .. z4;
+ fet_endchar;
+enddef;
+
+% custos medicaea, stem up, between staff lines
+custos_medicaea("Custos Med.", "medicaea-u0", "medicaea_u0",
+ dir_up, between_staff_lines);
+
+% custos medicaea, stem up, on staff line
+custos_medicaea("Custos Med.", "medicaea-u1", "medicaea_u1",
+ dir_up, on_staff_line);
+
+% custos medicaea, stem up, anywhere
+custos_medicaea("Custos Med.", "medicaea-u2", "medicaea_u2",
+ dir_up, anywhere);
+
+% custos medicaea, stem down, between staff lines
+custos_medicaea("Reverse Custos Med.", "medicaea-d0", "medicaea_d0",
+ dir_down, between_staff_lines);
+
+% custos medicaea, stem down, on staff line
+custos_medicaea("Reverse Custos Med.", "medicaea-d1", "medicaea_d1",
+ dir_down, on_staff_line);
+
+% custos medicaea, stem down, anywhere
+custos_medicaea("Reverse Custos Med.", "medicaea-d2", "medicaea_d2",
+ dir_down, anywhere);
%%%%%%%%
%
+%
% Editio Vaticana style
%
+%
-% stem up
-fet_beginchar("Custos Ed. Vat.", "vaticana", "vaticana")
- save b_h, a_w;
- a_b := 1.54; % b_h*a_b/a_w = wd/ht
- b_h := 0.85;
- a_w := 1.09;
-
- save a, beta, ht, wd;
- ht# = noteheight# * mag;
- 2beta# = ht# * b_h;
- a# = beta# * a_b;
- wd# = 0.4a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2);
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
- pickup pencircle scaled stafflinethickness;
-
- z1 = (0.0wd, +0.05ht);
- z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
- penpos1(0.5ht, 90);
- penpos2(0.5ht, 90);
- penstroke z1e{z2 - z1} .. {right}z2e;
-
- z3=(1.0wd, +0.0ht);
- z4=(1.0wd, +1.0ht);
- draw z3 -- z4;
-fet_endchar;
-
-
-% stem down
-fet_beginchar("Reverse Custos Ed. Vat.", "rvaticana", "rvaticana")
- save b_h, a_w;
- a_b := 1.54; % b_h*a_b/a_w = wd/ht
- b_h := 0.85;
- a_w := 1.09;
-
- save a, beta, ht, wd;
- ht# = noteheight# * mag;
- 2beta# = ht# * b_h;
- a# = beta# * a_b;
- wd# = 0.4a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2);
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
- pickup pencircle scaled stafflinethickness;
-
- z1 = (0.0wd, -0.05ht);
- z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
- penpos1(0.5ht, 90);
- penpos2(0.5ht, 90);
- penstroke z1e{z2 - z1} .. {right}z2e;
-
- z3=(1.0wd, -0.0ht);
- z4=(1.0wd, -1.0ht);
- draw z3 -- z4;
-fet_endchar;
-
+def custos_vaticana(expr verbose_name, internal_name, mudela_name,
+ direction, staffline_adjustment) =
+
+ fet_beginchar(verbose_name, internal_name, mudela_name)
+
+ save b_h, a_w;
+ a_b := 1.54; % b_h * a_b / a_w = wd / ht
+ b_h := 0.85;
+ a_w := 1.09;
+
+ save a, beta, ht, wd;
+ ht# = noteheight# * mag;
+ 2beta# = ht# * b_h;
+ a# = beta# * a_b;
+ wd# = 0.4a# / a_w;
+ set_char_box(0, wd#, ht# / 2, ht# / 2);
+ black_notehead_width# := wd#;
+
+ save stem_size;
+ if staffline_adjustment = between_staff_lines:
+ stem_size = 0.60;
+ elseif staffline_adjustment = on_staff_line:
+ stem_size = 1.10;
+ else: % staffline_adjustment = anywhere
+ stem_size = 0.85;
+ fi;
+
+ define_pixels(ht, wd);
+ pickup pencircle scaled stafflinethickness;
+
+ z1 = (0.0wd, +direction*0.05ht);
+ z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
+ penpos1(0.5ht, 90);
+ penpos2(0.5ht, 90);
+ penstroke z1e{z2 - z1} .. {right}z2e;
+
+ z3=(1.0wd, +0.0ht);
+ z4=(1.0wd, +direction*stem_size*ht);
+ draw z3 -- z4;
+
+ fet_endchar;
+enddef;
+
+% custos vaticana, stem up, between staff lines
+custos_vaticana("Custos Ed. Vat.", "vaticana-u0", "vaticana_u0",
+ dir_up, between_staff_lines);
+
+% custos vaticana, stem up, on staff line
+custos_vaticana("Custos Ed. Vat.", "vaticana-u1", "vaticana_u1",
+ dir_up, on_staff_line);
+
+% custos vaticana, stem up, anywhere
+custos_vaticana("Custos Ed. Vat.", "vaticana-u2", "vaticana_u2",
+ dir_up, anywhere);
+
+% custos vaticana, stem down, between staff lines
+custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d0", "vaticana_d0",
+ dir_down, between_staff_lines);
+
+% custos vaticana, stem down, on_staff_line
+custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d1", "vaticana_d1",
+ dir_down, on_staff_line);
+
+% custos vaticana, stem down, anywhere
+custos_vaticana("Reverse Custos Ed. Vat.", "vaticana-d2", "vaticana_d2",
+ dir_down, anywhere);
%%%%%%%%
%
+%
% Mensural style
%
+%
-% stem up
-fet_beginchar("Custos Mensural", "mensural", "mensural")
- save b_h,a_w;
- a_b:=1.54; % b_h*a_b/a_w = wd/ht
- b_h:=0.85;
- a_w:=1.09;
-
- save a, beta, ht, wd;
- ht# =noteheight#;
- 2beta#=ht#*b_h;
- a# = beta#*a_b;
- wd# = 2a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
- pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated -35;
- z1=(0.0wd,-0.2ht);
- z2=(0.2wd,+0.2ht);
- z3=(0.4wd,-0.2ht);
- z4=(0.6wd,+0.2ht);
- z5=(0.8wd,-0.2ht);
- z6=(1.6wd,+1.4ht);
- draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
-fet_endchar;
-
-% stem down
-fet_beginchar("Reverse Custos Mensural", "rmensural", "rmensural")
- save b_h,a_w;
- a_b:=1.54; % b_h*a_b/a_w = wd/ht
- b_h:=0.85;
- a_w:=1.09;
-
- save a, beta, ht, wd;
- ht# =noteheight#;
- 2beta#=ht#*b_h;
- a# = beta#*a_b;
- wd# = 2a# / a_w;
- set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
- black_notehead_width# := wd#;
-
- define_pixels(ht, wd);
- pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated +35;
- z1=(0.0wd,+0.2ht);
- z2=(0.2wd,-0.2ht);
- z3=(0.4wd,+0.2ht);
- z4=(0.6wd,-0.2ht);
- z5=(0.8wd,+0.2ht);
- z6=(1.6wd,-1.4ht);
- draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
-fet_endchar;
+def custos_mensural(expr verbose_name, internal_name, mudela_name,
+ direction, staffline_adjustment) =
+
+ fet_beginchar(verbose_name, internal_name, mudela_name)
+
+ save b_h,a_w;
+ a_b:=1.54; % b_h * a_b / a_w = wd / ht
+ b_h:=0.85;
+ a_w:=1.09;
+
+ save a, beta, ht, wd;
+ ht# = noteheight#;
+ 2beta# = ht# * b_h;
+ a# = beta# * a_b;
+ wd# = 2a# / a_w; % width intentionally too small
+ set_char_box(0, wd#, ht# / 2, ht# / 2);
+ black_notehead_width# := wd#;
+
+ save stem_size;
+ if staffline_adjustment = between_staff_lines:
+ stem_size = 0.85;
+ elseif staffline_adjustment = on_staff_line:
+ stem_size = 1.35;
+ else: % staffline_adjustment = anywhere
+ stem_size = 1.10;
+ fi;
+
+ define_pixels(ht, wd);
+ pickup pencircle
+ xscaled stafflinethickness
+ yscaled 0.4ht
+ rotated (-35*direction);
+ z1=(0.0wd,-direction*0.2ht);
+ z2=(0.2wd,+direction*0.2ht);
+ z3=(0.4wd,-direction*0.2ht);
+ z4=(0.6wd,+direction*0.2ht);
+ z5=(0.8wd,-direction*0.2ht);
+ z6-z5=(stem_size*0.5wd,+direction*stem_size*ht);
+ draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
+
+ fet_endchar;
+enddef;
+
+% custos mensural, stem up, between staff lines
+custos_mensural("Custos Mensural", "mensural-u0", "mensural_u0",
+ dir_up, between_staff_lines);
+
+% custos mensural, stem up, on staff line
+custos_mensural("Custos Mensural", "mensural-u1", "mensural_u1",
+ dir_up, on_staff_line);
+
+% custos mensural, stem up, anywhere
+custos_mensural("Custos Mensural", "mensural-u2", "mensural_u2",
+ dir_up, anywhere);
+
+% custos mensural, stem down, between staff lines
+custos_mensural("Reverse Custos Mensural", "mensural-d0", "mensural_d0",
+ dir_down, between_staff_lines);
+
+% custos mensural, stem down, on staff line
+custos_mensural("Reverse Custos Mensural", "mensural-d1", "mensural_d1",
+ dir_down, on_staff_line);
+
+% custos mensural, stem down, anywhere
+custos_mensural("Reverse Custos Mensural", "mensural-d2", "mensural_d2",
+ dir_down, anywhere);
fet_endgroup ("custodes")
fet_begingroup ("flags")
+save between_staff_lines, on_staff_line, anywhere;
+between_staff_lines = 0;
+on_staff_line = 1;
+anywhere = 2;
-%%%%%%%%
-%
-%
-%
-% Mensural Notation
-%
-%
-%
-
-def draw_mensural_outermost_flag_i =
- define_pixels(stafflinethickness, staff_space)
-
- pickup pencircle
- xscaled 1.00 stafflinethickness
- yscaled 0.22 staff_space
- rotated -35;
-
- save za, zb, zc, zd, ze;
- pair za, zb, zc, zd, ze;
-
- za = (+0.00 staff_space, -0.00 staff_space);
- zb = (+0.15 staff_space, -0.00 staff_space);
- zc = (+0.45 staff_space, -0.35 staff_space);
- zd = (+0.45 staff_space, -0.85 staff_space);
- ze = (+0.00 staff_space, -2.00 staff_space);
-
- draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_outermost_flag_ii =
- define_pixels(stafflinethickness, staff_space)
-
- pickup pencircle
- xscaled 1.00 stafflinethickness
- yscaled 0.22 staff_space
- rotated -35;
-
- save za, zb, zc, zd, ze;
- pair za, zb, zc, zd, ze;
-
- za = (+0.00 staff_space, -0.00 staff_space);
- zb = (+0.15 staff_space, -0.00 staff_space);
- zc = (+0.20 staff_space, -0.05 staff_space);
- zd = (+0.20 staff_space, -1.15 staff_space);
- ze = (+0.00 staff_space, -1.40 staff_space);
-
- draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_inner_flag(expr il_shift) =
- define_pixels(stafflinethickness, staff_space)
-
- pickup pencircle
- xscaled 1.00 stafflinethickness
- yscaled 0.22 staff_space
- rotated -35;
+save dir_up, dir_down;
+dir_up = 1;
+dir_down = -1;
- save zs, za, zb, zc, zd;
- pair zs, za, zb, zc, zd;
-
- zs = (0, -il_shift * staff_space);
- za = zs + (+0.00 staff_space, -0.10 staff_space);
- zb = zs + (+0.33 staff_space, -0.30 staff_space);
- zc = zs + (+0.33 staff_space, -0.70 staff_space);
- zd = zs + (+0.00 staff_space, -0.90 staff_space);
-
- draw za{2,1} .. zb .. zc .. {-2,-1}zd;
-enddef;
-
-fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
- set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
- set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
- draw_mensural_outermost_flag_ii
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
- set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
- draw_mensural_outermost_flag_i
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
- set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
- draw_mensural_outermost_flag_ii
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- draw_mensural_inner_flag(3.0)
-fet_endchar;
-
-fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
-fet_endchar;
-
-fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- draw_mensural_inner_flag(3.0)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- draw_mensural_inner_flag(3.5)
-fet_endchar;
-
-fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.17)
- draw_mensural_inner_flag(2.08)
- draw_mensural_inner_flag(3.00)
-fet_endchar;
-
-fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- draw_mensural_inner_flag(3.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
-
-fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.17)
- draw_mensural_inner_flag(2.08)
- draw_mensural_inner_flag(3.00)
- currentpicture := currentpicture xscaled -1 yscaled -1;
-fet_endchar;
%%%%%%%%
%
%
%
-def draw_mensural_outermost_flag_i =
+def draw_mensural_outermost_flare (expr staffline_adjustment) =
define_pixels(stafflinethickness, staff_space)
pickup pencircle
za = (+0.00 staff_space, -0.00 staff_space);
zb = (+0.15 staff_space, -0.00 staff_space);
- zc = (+0.45 staff_space, -0.35 staff_space);
- zd = (+0.45 staff_space, -0.85 staff_space);
- ze = (+0.00 staff_space, -2.00 staff_space);
- draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
-enddef;
-
-def draw_mensural_outermost_flag_ii =
- define_pixels(stafflinethickness, staff_space)
-
- pickup pencircle
- xscaled 1.00 stafflinethickness
- yscaled 0.22 staff_space
- rotated -35;
-
- save za, zb, zc, zd, ze;
- pair za, zb, zc, zd, ze;
-
- za = (+0.00 staff_space, -0.00 staff_space);
- zb = (+0.15 staff_space, -0.00 staff_space);
- zc = (+0.20 staff_space, -0.05 staff_space);
- zd = (+0.20 staff_space, -1.15 staff_space);
- ze = (+0.00 staff_space, -1.40 staff_space);
+ if staffline_adjustment = between_staff_lines:
+ zc = (+0.45 staff_space, -0.35 staff_space);
+ zd = (+0.45 staff_space, -0.85 staff_space);
+ ze = (+0.00 staff_space, -2.00 staff_space);
+ elseif staffline_adjustment = on_staff_line:
+ zc = (+0.20 staff_space, -0.05 staff_space);
+ zd = (+0.20 staff_space, -1.15 staff_space);
+ ze = (+0.00 staff_space, -1.40 staff_space);
+ else: % staffline_adjustment = anywhere
+ zc = (+0.33 staff_space, -0.20 staff_space);
+ zd = (+0.33 staff_space, -1.00 staff_space);
+ ze = (+0.00 staff_space, -1.70 staff_space);
+ fi;
draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
enddef;
-def draw_mensural_inner_flag(expr il_shift) =
+def draw_mensural_inner_flare(expr il_shift) =
define_pixels(stafflinethickness, staff_space)
pickup pencircle
draw za{2,1} .. zb .. zc .. {-2,-1}zd;
enddef;
+def draw_mensural_flag (expr staffline_adjustment, flares, direction) =
+ save char_box_adjust, flare_shift;
+ if staffline_adjustment = between_staff_lines:
+ flare_shift = 0.5;
+ elseif staffline_adjustment = on_staff_line:
+ flare_shift = 0.0;
+ else: % staffline_adjustment = anywhere
+ flare_shift = 0.25;
+ fi;
+ char_box_adjust = flare_shift+0.5;
+ if direction = dir_up:
+ set_char_box(0, 0.60 staff_space#,
+ (1.00+char_box_adjust)*staff_space#, 0)
+ else: % direction = dir_down
+ set_char_box(0.60 staff_space#, 0,
+ (1.00+char_box_adjust)*staff_space#, 0)
+ fi;
+ draw_mensural_outermost_flare (staffline_adjustment)
+ for flare_count := 2 step 1 until 4:
+ if flares >= flare_count:
+ draw_mensural_inner_flare(flare_shift+flare_count-0.5)
+ fi;
+ endfor;
+ if direction = dir_down:
+ currentpicture := currentpicture xscaled -1 yscaled -1;
+ fi;
+enddef;
+
+% 8th mensural flag, upwards, between staff lines
fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
- set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
+ draw_mensural_flag (between_staff_lines, 1, dir_up)
fet_endchar;
+% 8th mensural flag, upwards, on staff line
fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
- set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
- draw_mensural_outermost_flag_ii
+ draw_mensural_flag (on_staff_line, 1, dir_up)
+fet_endchar;
+
+% 8th mensural flag, upwards, anywhere
+fet_beginchar("8th Mensural Flag (up)", "mensuralu23", "mens1eighthflag")
+ draw_mensural_flag (anywhere, 1, dir_up)
fet_endchar;
+% 8th mensural flag, downwards, between staff lines
fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
- set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
- draw_mensural_outermost_flag_i
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (between_staff_lines, 1, dir_down)
fet_endchar;
+% 8th mensural flag, downwards, on staff line
fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
- set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
- draw_mensural_outermost_flag_ii
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (on_staff_line, 1, dir_down)
+fet_endchar;
+
+% 8th mensural flag, downwards, anywhere
+fet_beginchar("8th Mensural Flag (down)", "mensurald23", "mensd1eighthflag")
+ draw_mensural_flag (anywhere, 1, dir_down)
fet_endchar;
+% 16th mensural flag, upwards, between staff lines
fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
+ draw_mensural_flag (between_staff_lines, 2, dir_up)
fet_endchar;
+% 16th mensural flag, upwards, on staff line
fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
+ draw_mensural_flag (on_staff_line, 2, dir_up)
fet_endchar;
+% 16th mensural flag, upwards, anywhere
+fet_beginchar("16th Mensural Flag (up)", "mensuralu24", "mens1sixteenthflag")
+ draw_mensural_flag (anywhere, 2, dir_up)
+fet_endchar;
+
+% 16th mensural flag, downwards, between staff lines
fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (between_staff_lines, 2, dir_down)
fet_endchar;
+% 16th mensural flag, downwards, on staff line
fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (on_staff_line, 2, dir_down)
+fet_endchar;
+
+% 16th mensural flag, downwards, anywhere
+fet_beginchar("16th Mensural Flag (down)", "mensurald24", "mensd1sixteenthflag")
+ draw_mensural_flag (anywhere, 2, dir_down)
fet_endchar;
+% 32th mensural flag, upwards, between staff lines
fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- draw_mensural_inner_flag(3.0)
+ draw_mensural_flag (between_staff_lines, 3, dir_up)
fet_endchar;
+% 32th mensural flag, upwards, on staff line
fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
+ draw_mensural_flag (on_staff_line, 3, dir_up)
fet_endchar;
+% 32th mensural flag, upwards, anywhere
+fet_beginchar("32th Mensural Flag (up)", "mensuralu25", "mens1thirtysecondflag")
+ draw_mensural_flag (anywhere, 3, dir_up)
+fet_endchar;
+
+% 32th mensural flag, downwards, between staff lines
fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(2.0)
- draw_mensural_inner_flag(3.0)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (between_staff_lines, 3, dir_down)
fet_endchar;
+% 32th mensural flag, downwards, on staff line
fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (on_staff_line, 3, dir_down)
+fet_endchar;
+
+% 32th mensural flag, downwards, anywhere
+fet_beginchar("32th Mensural Flag (down)", "mensurald25", "mensd1thirtysecondflag")
+ draw_mensural_flag (anywhere, 3, dir_down)
fet_endchar;
+% 64th mensural flag, upwards, between staff lines
fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- draw_mensural_inner_flag(3.5)
+ draw_mensural_flag (between_staff_lines, 4, dir_up)
fet_endchar;
+% 64th mensural flag, upwards, on staff line
fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.17)
- draw_mensural_inner_flag(2.08)
- draw_mensural_inner_flag(3.00)
+ draw_mensural_flag (on_staff_line, 4, dir_up)
fet_endchar;
+% 64th mensural flag, upwards, anywhere
+fet_beginchar("64th Mensural Flag (up)", "mensuralu26", "mens1sixtyfourthflag")
+ draw_mensural_flag (anywhere, 4, dir_up)
+fet_endchar;
+
+% 64th mensural flag, downwards, between staff lines
fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_i
- draw_mensural_inner_flag(1.5)
- draw_mensural_inner_flag(2.5)
- draw_mensural_inner_flag(3.5)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (between_staff_lines, 4, dir_down)
fet_endchar;
+% 64th mensural flag, downwards, on staff line
fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
- set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
- draw_mensural_outermost_flag_ii
- draw_mensural_inner_flag(1.17)
- draw_mensural_inner_flag(2.08)
- draw_mensural_inner_flag(3.00)
- currentpicture := currentpicture xscaled -1 yscaled -1;
+ draw_mensural_flag (on_staff_line, 4, dir_down)
+fet_endchar;
+
+% 64th mensural flag, downwards, anywhere
+fet_beginchar("64th Mensural Flag (down)", "mensurald26", "mensd1sixtyfourthflag")
+ draw_mensural_flag (anywhere, 4, dir_down)
fet_endchar;
fet_endgroup ("flags")
fet_begingroup ("noteheads")
-noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
+noteheight#:=staff_space# + (1 + overdone_heads)*stafflinethickness#;
define_pixels(noteheight);
%
% ledger (leger) lines
%
+%
fet_beginchar("Ledger ending", "ledgerending", "ledgerending")
set_char_box (5/2 ledgerlinethickness#, 5/2 ledgerlinethickness#,
ledgerlinethickness#/2,ledgerlinethickness#/2);
false, false, false, false, 1.0);
% punctum cavum (for OpusTeX compatibility)
-%punctum_char("Ed. Vat. punctum cavum", "0vaticana_punctum_cavum",
-% "vatpunctumcavumhead",
-% false, false, false, true, false,
-% false, false, false, false, 1.0);
+punctum_char("Ed. Vat. punctum cavum", "0vaticana_punctum_cavum",
+ "vatpunctumcavumhead",
+ false, false, false, true, false,
+ false, false, false, false, 1.0);
% linea punctum (for OpusTeX compatibility)
-%punctum_char("Ed. Vat. linea punctum", "0vaticana_linea_punctum",
-% "vatlineapunctumhead",
-% false, false, true, false, false,
-% false, false, false, false, 1.0);
+punctum_char("Ed. Vat. linea punctum", "0vaticana_linea_punctum",
+ "vatlineapunctumhead",
+ false, false, true, false, false,
+ false, false, false, false, 1.0);
% linea punctum cavum (for OpusTeX compatibility)
-%punctum_char("Ed. Vat. linea punctum cavum", "0vaticana_linea_punctum_cavum",
-% "vatlineapunctumcavumhead",
-% false, false, true, true, false,
-% false, false, false, false, 1.0);
+punctum_char("Ed. Vat. linea punctum cavum", "0vaticana_linea_punctum_cavum",
+ "vatlineapunctumcavumhead",
+ false, false, true, true, false,
+ false, false, false, false, 1.0);
% punctum inclinatum
inclinatum_char("Ed. Vat. inclinatum", "0vaticana_inclinatum",
fet_endchar;
% solesmes punctum inclinatum parvum
-%inclinatum_char("Solesmes punctum inclinatum parvum", "0solesmes_incl_parvum",
-% "solinclparvumhead",
-% true, false, false);
+inclinatum_char("Solesmes punctum inclinatum parvum", "0solesmes_incl_parvum",
+ "solinclparvumhead",
+ true, false, false);
% solesmes punctum auctum ascendens
-%punctum_char("Solesmes punctum auctum ascendens", "0solesmes_auct_asc",
-% "solauctaschead",
-% false, false, false, false, false,
-% true, true, false, false, 1.0);
+punctum_char("Solesmes punctum auctum ascendens", "0solesmes_auct_asc",
+ "solauctaschead",
+ false, false, false, false, false,
+ true, true, false, false, 1.0);
% solesmes punctum auctum descendens
-%punctum_char("Solesmes punctum auctum descendens", "0solesmes_auct_desc",
-% "solauctdeschead",
-% false, false, false, false, false,
-% true, false, false, false, 1.0);
+punctum_char("Solesmes punctum auctum descendens", "0solesmes_auct_desc",
+ "solauctdeschead",
+ false, false, false, false, false,
+ true, false, false, false, 1.0);
% solesmes punctum inclinatum auctum
-%inclinatum_char("Solesmes punctum incl. auctum", "0solesmes_incl_auctum",
-% "solpunctuminclinatumauctumhead",
-% false, false, true);
+inclinatum_char("Solesmes punctum incl. auctum", "0solesmes_incl_auctum",
+ "solpunctuminclinatumauctumhead",
+ false, false, true);
% solesmes stropha
-%inclinatum_char("Solesmes stropha", "0solesmes_stropha",
-% "solstrophahead",
-% false, true, false);
+inclinatum_char("Solesmes stropha", "0solesmes_stropha",
+ "solstrophahead",
+ false, true, false);
% solesmes stropha aucta
-%inclinatum_char("Solesmes stropha aucta", "0solesmes_stropha_aucta",
-% "solstrophaauctahead",
-% false, true, true);
+inclinatum_char("Solesmes stropha aucta", "0solesmes_stropha_aucta",
+ "solstrophaauctahead",
+ false, true, true);
% solesmes oriscus
fet_beginchar("Solesmes oriscus", "0solesmes_oriscus",
(left-padding . 0.2)
(right-padding . 0.4)
(paren-cautionaries . #t)
+ (font-family . music)
(meta . ,(grob-description accidentals-interface font-interface side-position-interface))
))
))
(Custos . (
- (break-align-symbol . Custos)
- (breakable . #t )
- (molecule-callback . ,Custos::brew_molecule)
- (visibility-lambda . ,end-of-line-visible)
- (style . vaticana)
- (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
- (font-family . music)
- (meta . ,(grob-description custos-interface staff-symbol-referencer-interface break-aligned-interface) )
+ (break-align-symbol . Custos)
+ (breakable . #t)
+ (molecule-callback . ,Custos::brew_molecule)
+ (visibility-lambda . ,end-of-line-visible)
+ (style . vaticana)
+ (neutral-position . 0)
+ (neutral-direction . -1)
+ (adjust-if-on-staffline . #t)
+ (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
+ (font-family . music)
+ (meta . ,(grob-description custos-interface staff-symbol-referencer-interface break-aligned-interface) )
))
(X-offset-callbacks . (,Stem::off_callback))
(X-extent-callback . ,Stem::dim_callback)
(Y-extent-callback . ,Stem::height)
+ (adjust-if-on-staffline . #t)
(font-family . music)
(meta . ,(grob-description stem-interface font-interface))
))
. OPTION-LIST) entries. OPTION-LIST can contain 'cautionary, 'natural
and 'tie-break-reminder ")
(grob-property-description 'add-stem boolean? "Add stem to porrectus?.")
+(grob-property-description 'adjust-if-on-staffline boolean? "If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween.")
(grob-property-description 'after-line-breaking-callback procedure? "Procedure taking a grob as argument.
This procedure is called (using dependency resolution) after line breaking. Return value is ignored.")
(grob-property-description 'align number? "the alignment of the text, 0 is horizontal, 1 is vertical.")
(grob-property-description 'dash-period number? "the length of one dash + white space.")
(grob-property-description 'dashed number? "[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.")
(grob-property-description 'de-uglify-parameters list? "list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.")
-(grob-property-description 'neutral-direction dir? "Where to go if
-we're in the middle of the staff. [Ross] has the following to say
-about this: Some engravers consider the middle line neutral, and take
-the option of using either up- or down-stems for notes that fall on
-it. However, more up-to-date engraving no longer permits an option;
-now a down-stem is always appropriate.")
+
+(grob-property-description 'neutral-direction dir? "Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate.")
+(grob-property-description 'neutral-position number? "Position (in half staff spaces) where to flip the direction of stems: by default, custodes above this position get their stems downwards; custodes below this position get their stems upwards. A value of 0 designates the center of the staff. Use property neutral-direction to control the behaviour of stems on the neutral position itself. (Note: currently, neutral-position is supported only for custodes; for stems of note heads, neutral-position is currently fixed to 0, i.e. the middle of the staff.)")
(grob-property-description 'delta-y number? "amount of ascension.")
(grob-property-description 'dependencies list? "list of score-grob pointers that indicate who to compute first for certain global passes.")
(grob-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace.")
(grob-property-description 'molecule-callback procedure? "Function taking grob as argument, returning a Scheme encoded Molecule.")
+
(grob-property-description 'new-accidentals list? "list of (pitch, accidental) pairs.")
(grob-property-description 'no-spacing-rods boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).")
(grob-property-description 'no-stem-extend boolean? "should stem not be extended to middle staff line?.")