2 % parmesan-timesig.mf -- implement ancient time signatures
4 % source file of LilyPond's pretty-but-neat music font
6 % (c) 1998--2002 Mats Bengtsson <matsb@s3.kth.se>,
7 % Christian Mondrup <scancm@biobase.dk>
9 fet_begingroup ("timesig")
11 path threequartercircle;
12 threequartercircle = halfcircle & quartercircle rotated 180;
14 save Cdiameter, Cthickness, Chairpin;
15 Cdiameter# := 3/2 staff_space#;
16 Cthickness# := 2 stafflinethickness#;
17 Chairpin# := 0.5 stafflinethickness#;
18 define_pixels(Cdiameter, Cthickness, Chairpin);
29 def draw_nail (expr bottom_left, top_right) =
31 round = floor min(blot_diameter,
32 xpart (top_right-bottom_left),
33 ypart (top_right-bottom_left));
35 pickup pencircle scaled round;
39 z2+(round/2,round/2) = top_right + (Cthickness/2, 0);
40 z4-(round/2,round/2) = bottom_left;
43 x2 = x1 + Cthickness/2;
47 y5 = y6 = y2 - 2Cthickness;
49 pickup pencircle scaled round;
50 fill bot z1 .. rt z1 --- rt z5 .. rt z2 .. top z2 ---
51 top z3 .. lft z3 .. lft z6 --- lft z4 .. bot z4 ---
57 def mens_timesig (expr verbose_name, internal_name, mudela_name,
58 full_circle, reverse_circle, slashed, dotted) =
60 fet_beginchar(verbose_name, internal_name, mudela_name)
62 set_char_box(.5 Cdiameter# + staff_space#,
63 .5 Cdiameter# + staff_space#,
66 if (full_circle or dotted):
67 draw_nail((-Cthickness/2, -1.5d), (Cthickness/2, 1.5h));
69 draw_nail((-Cthickness, -1.5d), (0, 1.5h));
72 set_char_box(.5 Cdiameter# + staff_space#,
73 .5 Cdiameter# + staff_space#,
77 pickup pencircle xscaled Cthickness yscaled Chairpin rotated 0;
79 draw fullcircle scaled Cdiameter;
80 elseif reverse_circle:
81 draw threequartercircle rotated 225 scaled Cdiameter;
83 draw threequartercircle rotated 45 scaled Cdiameter;
86 pickup pencircle scaled 4 stafflinethickness;
92 %% tempus imperfectum cum prolatione imperfecta
93 mens_timesig ("Mensural 4/4 meter", "mensural4/4", "mensuralfourfourmeter",
94 false, false, false, false);
96 %% tempus imperfectum cum prolatione imperfecta proportio dupla
97 mens_timesig ("Mensural 2/2 meter", "mensural2/2", "mensuralallabreve",
98 false, false, true, false);
100 %% tempus perfectum cum prolatione imperfecta
101 mens_timesig ("Mensural 3/2 meter", "mensural3/2", "mensuralthreetwometer",
102 true, false, false, false);
104 %% tempus imperfectum cum prolatione perfecta
105 mens_timesig ("Mensural 6/4 meter", "mensural6/4", "mensuralsixfourmeter",
106 false, false, false, true);
108 %% tempus perfectum cum prolatione perfecta
109 mens_timesig ("Mensural 9/4 meter", "mensural9/4", "mensuralninefourmeter",
110 true, false, false, true);
112 %% tempus perfectum cum prolatione imperfecta proportio dupla
113 mens_timesig ("Mensural 3/4 meter", "mensural3/4", "mensuralthreefourmeter",
114 true, false, true, false);
116 %% tempus imperfectum cum prolatione perfecta proportio dupla
117 mens_timesig ("Mensural 6/8 meter", "mensural6/8", "mensuralsixeightmeter",
118 false, false, true, true);
120 %% tempus perfectum cum prolatione perfecta proportio dupla
121 mens_timesig ("Mensural 9/8 meter", "mensural9/8", "mensuralnineeight",
122 true, false, true, true);
124 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
125 mens_timesig ("Mensural 4/8 meter", "mensural4/8", "mensuralfoureightmeter",
126 false, true, false, false);
128 %% tempus imperfectum cum prolatione perfecta diminutio simplex
129 mens_timesig ("Mensural 6/8 meter", "mensural6/8alt", "mensuralsixeightmeteralt",
130 false, true, false, true);
132 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
133 mens_timesig ("Mensural 2/4 meter", "mensural2/4", "mensuraltwofourmeter",
134 false, true, true, false);
140 % NEO-MENSURAL NOTATION
145 save neo_Cdiameter, neo_Cthickness;
146 neo_Cdiameter# := 3/2 staff_space#;
147 neo_Cthickness# := 2 stafflinethickness#;
148 define_pixels(neo_Cdiameter, neo_Cthickness);
150 def neo_mens_timesig (expr verbose_name, internal_name, mudela_name,
151 full_circle, reverse_circle, slashed, dotted) =
153 fet_beginchar(verbose_name, internal_name, mudela_name)
155 set_char_box(.5 neo_Cdiameter# + staff_space#,
156 .5 neo_Cdiameter# + staff_space#,
159 if (full_circle or dotted):
160 draw_block((-neo_Cthickness/2, -d), (neo_Cthickness/2, h));
162 draw_block((-neo_Cthickness, -d), (0, h));
165 set_char_box(.5 neo_Cdiameter# + staff_space#,
166 .5 neo_Cdiameter# + staff_space#,
170 pickup pencircle scaled neo_Cthickness;
172 draw fullcircle scaled neo_Cdiameter;
173 elseif reverse_circle:
174 draw threequartercircle rotated 225 scaled neo_Cdiameter;
176 draw threequartercircle rotated 45 scaled neo_Cdiameter;
179 pickup pencircle scaled 4 stafflinethickness;
185 %% tempus imperfectum cum prolatione imperfecta
186 neo_mens_timesig ("Mensural 4/4 meter", "neo_mensural4/4", "neomensuralfourfourmeter",
187 false, false, false, false);
189 %% tempus imperfectum cum prolatione imperfecta proportio dupla
190 neo_mens_timesig ("Mensural 2/2 meter", "neo_mensural2/2", "neomensuralallabreve",
191 false, false, true, false);
193 %% tempus perfectum cum prolatione imperfecta
194 neo_mens_timesig ("Mensural 3/2 meter", "neo_mensural3/2", "neomensuralthreetwometer",
195 true, false, false, false);
197 %% tempus imperfectum cum prolatione perfecta
198 neo_mens_timesig ("Mensural 6/4 meter", "neo_mensural6/4", "neomensuralsixfourmeter",
199 false, false, false, true);
201 %% tempus perfectum cum prolatione perfecta
202 neo_mens_timesig ("Mensural 9/4 meter", "neo_mensural9/4", "neomensuralninefourmeter",
203 true, false, false, true);
205 %% tempus perfectum cum prolatione imperfecta proportio dupla
206 neo_mens_timesig ("Mensural 3/4 meter", "neo_mensural3/4", "neomensuralthreefourmeter",
207 true, false, true, false);
209 %% tempus imperfectum cum prolatione perfecta proportio dupla
210 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8", "neomensuralsixeightmeter",
211 false, false, true, true);
213 %% tempus perfectum cum prolatione perfecta proportio dupla
214 neo_mens_timesig ("Mensural 9/8 meter", "neo_mensural9/8", "neomensuralnineeight",
215 true, false, true, true);
217 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
218 neo_mens_timesig ("Mensural 4/8 meter", "neo_mensural4/8", "neomensuralfoureightmeter",
219 false, true, false, false);
221 %% tempus imperfectum cum prolatione perfecta diminutio simplex
222 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8alt", "neomensuralsixeightmeteralt",
223 false, true, false, true);
225 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
226 neo_mens_timesig ("Mensural 2/4 meter", "neo_mensural2/4", "neomensuraltwofourmeter",
227 false, true, true, false);
229 fet_endgroup ("timesig")