2 % parmesan-timesig.mf -- implement ancient time signatures
4 % source file of LilyPond's pretty-but-neat music font
6 % (c) 1998--2004 Mats Bengtsson <matsb@s3.kth.se>,
7 % Christian Mondrup <scancm@biobase.dk>
8 % (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
11 fet_begingroup ("timesig")
13 path threequartercircle;
14 threequartercircle = halfcircle & quartercircle rotated 180;
16 save Cdiameter, Cthickness, Chairpin;
17 Cdiameter# := 3/2 staff_space#;
18 Cthickness# := 2 linethickness#;
19 Chairpin# := 0.5 linethickness#;
20 define_pixels(Cdiameter, Cthickness, Chairpin);
31 def draw_nail (expr bottom_left, top_right) =
33 round = floor min(blot_diameter,
34 xpart (top_right-bottom_left),
35 ypart (top_right-bottom_left));
37 pickup pencircle scaled round;
41 z2+(round/2,round/2) = top_right + (Cthickness/2, 0);
42 z4-(round/2,round/2) = bottom_left;
45 x2 = x1 + Cthickness/2;
49 y5 = y6 = y2 - 2Cthickness;
51 pickup pencircle scaled round;
52 fill bot z1 .. rt z1 --- rt z5 .. rt z2 .. top z2 ---
53 top z3 .. lft z3 .. lft z6 --- lft z4 .. bot z4 ---
59 def mens_timesig (expr verbose_name, internal_name, ly_name,
60 full_circle, reverse_circle, slashed, dotted) =
62 fet_beginchar(verbose_name, internal_name, ly_name)
65 Cdiameter# + Cthickness#,
66 .75 (Cdiameter# + Cthickness#),
67 .75 (Cdiameter# + Cthickness#));
68 if (full_circle or dotted):
69 draw_nail((-Cthickness/2, -d), (Cthickness/2, h));
71 draw_nail((-Cthickness, -d), (0, h));
75 Cdiameter# + Cthickness#,
76 .5 (Cdiameter# + Cthickness#),
77 .5 (Cdiameter# + Cthickness#));
79 pickup pencircle xscaled Cthickness yscaled Chairpin rotated 0;
81 draw fullcircle scaled Cdiameter;
82 elseif reverse_circle:
83 draw threequartercircle rotated 225 scaled Cdiameter;
85 draw threequartercircle rotated 45 scaled Cdiameter;
88 pickup pencircle scaled 4 linethickness;
91 currentpicture := currentpicture shifted 0.5(Cdiameter + Cthickness, 0);
95 %% tempus imperfectum cum prolatione imperfecta
96 mens_timesig ("Mensural 4/4 meter", "mensural4/4", "mensuralfourfourmeter",
97 false, false, false, false);
99 %% tempus imperfectum cum prolatione imperfecta proportio dupla
100 mens_timesig ("Mensural 2/2 meter", "mensural2/2", "mensuralallabreve",
101 false, false, true, false);
103 %% tempus perfectum cum prolatione imperfecta
104 mens_timesig ("Mensural 3/2 meter", "mensural3/2", "mensuralthreetwometer",
105 true, false, false, false);
107 %% tempus imperfectum cum prolatione perfecta
108 mens_timesig ("Mensural 6/4 meter", "mensural6/4", "mensuralsixfourmeter",
109 false, false, false, true);
111 %% tempus perfectum cum prolatione perfecta
112 mens_timesig ("Mensural 9/4 meter", "mensural9/4", "mensuralninefourmeter",
113 true, false, false, true);
115 %% tempus perfectum cum prolatione imperfecta proportio dupla
116 mens_timesig ("Mensural 3/4 meter", "mensural3/4", "mensuralthreefourmeter",
117 true, false, true, false);
119 %% tempus imperfectum cum prolatione perfecta proportio dupla
120 mens_timesig ("Mensural 6/8 meter", "mensural6/8", "mensuralsixeightmeter",
121 false, false, true, true);
123 %% tempus perfectum cum prolatione perfecta proportio dupla
124 mens_timesig ("Mensural 9/8 meter", "mensural9/8", "mensuralnineeight",
125 true, false, true, true);
127 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
128 mens_timesig ("Mensural 4/8 meter", "mensural4/8", "mensuralfoureightmeter",
129 false, true, false, false);
131 %% tempus imperfectum cum prolatione perfecta diminutio simplex
132 mens_timesig ("Mensural 6/8 meter", "mensural6/8alt", "mensuralsixeightmeteralt",
133 false, true, false, true);
135 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
136 mens_timesig ("Mensural 2/4 meter", "mensural2/4", "mensuraltwofourmeter",
137 false, true, true, false);
143 % NEO-MENSURAL NOTATION
148 save neo_Cdiameter, neo_Cthickness;
149 neo_Cdiameter# := 3/2 staff_space#;
150 neo_Cthickness# := 2 linethickness#;
151 define_pixels(neo_Cdiameter, neo_Cthickness);
153 def neo_mens_timesig (expr verbose_name, internal_name, ly_name,
154 full_circle, reverse_circle, slashed, dotted) =
156 fet_beginchar(verbose_name, internal_name, ly_name)
159 neo_Cdiameter# + neo_Cthickness#,
160 .5 (neo_Cdiameter# + neo_Cthickness#),
161 .5 (neo_Cdiameter# + neo_Cthickness#));
162 if (full_circle or dotted):
163 draw_block((-neo_Cthickness/2, -d), (neo_Cthickness/2, h));
165 draw_block((-neo_Cthickness, -d), (0, h));
169 neo_Cdiameter# + neo_Cthickness#,
170 .5 (neo_Cdiameter# + neo_Cthickness#),
171 .5 (neo_Cdiameter# + neo_Cthickness#));
173 pickup pencircle scaled neo_Cthickness;
175 draw fullcircle scaled neo_Cdiameter;
176 elseif reverse_circle:
177 draw threequartercircle rotated 225 scaled neo_Cdiameter;
179 draw threequartercircle rotated 45 scaled neo_Cdiameter;
182 pickup pencircle scaled 4 linethickness;
185 currentpicture := currentpicture shifted 0.5(neo_Cdiameter + neo_Cthickness, 0);
189 %% tempus imperfectum cum prolatione imperfecta
190 neo_mens_timesig ("Mensural 4/4 meter", "neo_mensural4/4", "neomensuralfourfourmeter",
191 false, false, false, false);
193 %% tempus imperfectum cum prolatione imperfecta proportio dupla
194 neo_mens_timesig ("Mensural 2/2 meter", "neo_mensural2/2", "neomensuralallabreve",
195 false, false, true, false);
197 %% tempus perfectum cum prolatione imperfecta
198 neo_mens_timesig ("Mensural 3/2 meter", "neo_mensural3/2", "neomensuralthreetwometer",
199 true, false, false, false);
201 %% tempus imperfectum cum prolatione perfecta
202 neo_mens_timesig ("Mensural 6/4 meter", "neo_mensural6/4", "neomensuralsixfourmeter",
203 false, false, false, true);
205 %% tempus perfectum cum prolatione perfecta
206 neo_mens_timesig ("Mensural 9/4 meter", "neo_mensural9/4", "neomensuralninefourmeter",
207 true, false, false, true);
209 %% tempus perfectum cum prolatione imperfecta proportio dupla
210 neo_mens_timesig ("Mensural 3/4 meter", "neo_mensural3/4", "neomensuralthreefourmeter",
211 true, false, true, false);
213 %% tempus imperfectum cum prolatione perfecta proportio dupla
214 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8", "neomensuralsixeightmeter",
215 false, false, true, true);
217 %% tempus perfectum cum prolatione perfecta proportio dupla
218 neo_mens_timesig ("Mensural 9/8 meter", "neo_mensural9/8", "neomensuralnineeight",
219 true, false, true, true);
221 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
222 neo_mens_timesig ("Mensural 4/8 meter", "neo_mensural4/8", "neomensuralfoureightmeter",
223 false, true, false, false);
225 %% tempus imperfectum cum prolatione perfecta diminutio simplex
226 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8alt", "neomensuralsixeightmeteralt",
227 false, true, false, true);
229 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
230 neo_mens_timesig ("Mensural 2/4 meter", "neo_mensural2/4", "neomensuraltwofourmeter",
231 false, true, true, false);
233 fet_endgroup ("timesig")