2 % parmesan-timesig.mf -- implement ancient time signatures
4 % source file of LilyPond's pretty-but-neat music font
6 % (c) 1998--2006 Mats Bengtsson <matsb@s3.kth.se>,
7 % Christian Mondrup <scancm@biobase.dk>
8 % (c) 2002--2006 Juergen Reuter <reuter@ipd.uka.de>
11 fet_begingroup ("timesig")
13 path threequartercircle;
14 threequartercircle = halfcircle & quartercircle rotated 180;
16 save mensural_Cdiameter, mensural_Cthickness, mensural_Chairpin;
17 mensural_Cdiameter# := 3/2 staff_space#;
18 mensural_Cthickness# := 2 linethickness#;
19 mensural_Chairpin# := 0.5 linethickness#;
20 define_pixels(mensural_Cdiameter, mensural_Cthickness);
21 define_pixels(mensural_Chairpin);
32 def draw_nail (expr bottom_left, top_right) =
34 round = floor min(blot_diameter,
35 xpart (top_right-bottom_left),
36 ypart (top_right-bottom_left));
38 pickup pencircle scaled round;
42 z2+(round/2,round/2) = top_right + (mensural_Cthickness/2, 0);
43 z4-(round/2,round/2) = bottom_left;
46 x2 = x1 + mensural_Cthickness/2;
50 y5 = y6 = y2 - 2mensural_Cthickness;
52 pickup pencircle scaled round;
53 fill bot z1 .. rt z1 --- rt z5 .. rt z2 .. top z2 ---
54 top z3 .. lft z3 .. lft z6 --- lft z4 .. bot z4 ---
60 def mensural_timesig (expr verbose_name, internal_name,
61 full_circle, reverse_circle, slashed, dotted) =
63 fet_beginchar(verbose_name, internal_name)
66 mensural_Cdiameter# + mensural_Cthickness#,
67 .75 (mensural_Cdiameter# + mensural_Cthickness#),
68 .75 (mensural_Cdiameter# + mensural_Cthickness#));
69 if (full_circle or dotted):
70 draw_nail((-mensural_Cthickness/2, -d), (mensural_Cthickness/2, h));
72 draw_nail((-mensural_Cthickness, -d), (0, h));
76 mensural_Cdiameter# + mensural_Cthickness#,
77 .5 (mensural_Cdiameter# + mensural_Cthickness#),
78 .5 (mensural_Cdiameter# + mensural_Cthickness#));
80 pickup pencircle xscaled mensural_Cthickness yscaled mensural_Chairpin rotated 0;
82 draw fullcircle scaled mensural_Cdiameter;
83 elseif reverse_circle:
84 draw threequartercircle rotated 225 scaled mensural_Cdiameter;
86 draw threequartercircle rotated 45 scaled mensural_Cdiameter;
89 pickup pencircle scaled 4 linethickness;
92 currentpicture := currentpicture shifted 0.5(mensural_Cdiameter + mensural_Cthickness, 0);
96 %% tempus imperfectum cum prolatione imperfecta
97 mensural_timesig ("Mensural 4/4 meter", "mensural44",
98 false, false, false, false);
100 %% tempus imperfectum cum prolatione imperfecta proportio dupla
101 mensural_timesig ("Mensural 2/2 meter", "mensural22",
102 false, false, true, false);
104 %% tempus perfectum cum prolatione imperfecta
105 mensural_timesig ("Mensural 3/2 meter", "mensural32",
106 true, false, false, false);
108 %% tempus imperfectum cum prolatione perfecta
109 mensural_timesig ("Mensural 6/4 meter", "mensural64",
110 false, false, false, true);
112 %% tempus perfectum cum prolatione perfecta
113 mensural_timesig ("Mensural 9/4 meter", "mensural94",
114 true, false, false, true);
116 %% tempus perfectum cum prolatione imperfecta proportio dupla
117 mensural_timesig ("Mensural 3/4 meter", "mensural34",
118 true, false, true, false);
120 %% tempus imperfectum cum prolatione perfecta proportio dupla
121 mensural_timesig ("Mensural 6/8 meter", "mensural68",
122 false, false, true, true);
124 %% tempus perfectum cum prolatione perfecta proportio dupla
125 mensural_timesig ("Mensural 9/8 meter", "mensural98",
126 true, false, true, true);
128 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
129 mensural_timesig ("Mensural 4/8 meter", "mensural48",
130 false, true, false, false);
132 %% tempus imperfectum cum prolatione perfecta diminutio simplex
133 mensural_timesig ("Mensural 6/8 meter", "mensural68alt",
134 false, true, false, true);
136 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
137 mensural_timesig ("Mensural 2/4 meter", "mensural24",
138 false, true, true, false);
144 % NEO-MENSURAL NOTATION
149 save neomensural_Cdiameter, neomensural_Cthickness;
150 neomensural_Cdiameter# := 3/2 staff_space#;
151 neomensural_Cthickness# := 2 linethickness#;
152 define_pixels(neomensural_Cdiameter, neomensural_Cthickness);
154 def neomensural_timesig (expr verbose_name, internal_name,
155 full_circle, reverse_circle, slashed, dotted) =
157 fet_beginchar(verbose_name, internal_name)
160 neomensural_Cdiameter# + neomensural_Cthickness#,
161 .5 (neomensural_Cdiameter# + neomensural_Cthickness#),
162 .5 (neomensural_Cdiameter# + neomensural_Cthickness#));
163 if (full_circle or dotted):
164 draw_block((-neomensural_Cthickness/2, -d), (neomensural_Cthickness/2, h));
166 draw_block((-neomensural_Cthickness, -d), (0, h));
170 neomensural_Cdiameter# + neomensural_Cthickness#,
171 .5 (neomensural_Cdiameter# + neomensural_Cthickness#),
172 .5 (neomensural_Cdiameter# + neomensural_Cthickness#));
174 pickup pencircle scaled neomensural_Cthickness;
176 draw fullcircle scaled neomensural_Cdiameter;
177 elseif reverse_circle:
178 draw threequartercircle rotated 225 scaled neomensural_Cdiameter;
180 draw threequartercircle rotated 45 scaled neomensural_Cdiameter;
183 pickup pencircle scaled 4 linethickness;
186 currentpicture := currentpicture shifted 0.5(neomensural_Cdiameter + neomensural_Cthickness, 0);
190 %% tempus imperfectum cum prolatione imperfecta
191 neomensural_timesig ("Mensural 4/4 meter", "neomensural44",
192 false, false, false, false);
194 %% tempus imperfectum cum prolatione imperfecta proportio dupla
195 neomensural_timesig ("Mensural 2/2 meter", "neomensural22",
196 false, false, true, false);
198 %% tempus perfectum cum prolatione imperfecta
199 neomensural_timesig ("Mensural 3/2 meter", "neomensural32",
200 true, false, false, false);
202 %% tempus imperfectum cum prolatione perfecta
203 neomensural_timesig ("Mensural 6/4 meter", "neomensural64",
204 false, false, false, true);
206 %% tempus perfectum cum prolatione perfecta
207 neomensural_timesig ("Mensural 9/4 meter", "neomensural94",
208 true, false, false, true);
210 %% tempus perfectum cum prolatione imperfecta proportio dupla
211 neomensural_timesig ("Mensural 3/4 meter", "neomensural34",
212 true, false, true, false);
214 %% tempus imperfectum cum prolatione perfecta proportio dupla
215 neomensural_timesig ("Mensural 6/8 meter", "neomensural68",
216 false, false, true, true);
218 %% tempus perfectum cum prolatione perfecta proportio dupla
219 neomensural_timesig ("Mensural 9/8 meter", "neomensural98",
220 true, false, true, true);
222 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
223 neomensural_timesig ("Mensural 4/8 meter", "neomensural48",
224 false, true, false, false);
226 %% tempus imperfectum cum prolatione perfecta diminutio simplex
227 neomensural_timesig ("Mensural 6/8 meter", "neomensural68alt",
228 false, true, false, true);
230 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
231 neomensural_timesig ("Mensural 2/4 meter", "neomensural24",
232 false, true, true, false);
234 fet_endgroup ("timesig")