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>,
8 % 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 stafflinethickness#;
19 Chairpin# := 0.5 stafflinethickness#;
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, mudela_name,
60 full_circle, reverse_circle, slashed, dotted) =
62 fet_beginchar(verbose_name, internal_name, mudela_name)
64 set_char_box(.5 Cdiameter# + staff_space#,
65 .5 Cdiameter# + staff_space#,
68 if (full_circle or dotted):
69 draw_nail((-Cthickness/2, -1.5d), (Cthickness/2, 1.5h));
71 draw_nail((-Cthickness, -1.5d), (0, 1.5h));
74 set_char_box(.5 Cdiameter# + staff_space#,
75 .5 Cdiameter# + staff_space#,
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 stafflinethickness;
94 %% tempus imperfectum cum prolatione imperfecta
95 mens_timesig ("Mensural 4/4 meter", "mensural4/4", "mensuralfourfourmeter",
96 false, false, false, false);
98 %% tempus imperfectum cum prolatione imperfecta proportio dupla
99 mens_timesig ("Mensural 2/2 meter", "mensural2/2", "mensuralallabreve",
100 false, false, true, false);
102 %% tempus perfectum cum prolatione imperfecta
103 mens_timesig ("Mensural 3/2 meter", "mensural3/2", "mensuralthreetwometer",
104 true, false, false, false);
106 %% tempus imperfectum cum prolatione perfecta
107 mens_timesig ("Mensural 6/4 meter", "mensural6/4", "mensuralsixfourmeter",
108 false, false, false, true);
110 %% tempus perfectum cum prolatione perfecta
111 mens_timesig ("Mensural 9/4 meter", "mensural9/4", "mensuralninefourmeter",
112 true, false, false, true);
114 %% tempus perfectum cum prolatione imperfecta proportio dupla
115 mens_timesig ("Mensural 3/4 meter", "mensural3/4", "mensuralthreefourmeter",
116 true, false, true, false);
118 %% tempus imperfectum cum prolatione perfecta proportio dupla
119 mens_timesig ("Mensural 6/8 meter", "mensural6/8", "mensuralsixeightmeter",
120 false, false, true, true);
122 %% tempus perfectum cum prolatione perfecta proportio dupla
123 mens_timesig ("Mensural 9/8 meter", "mensural9/8", "mensuralnineeight",
124 true, false, true, true);
126 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
127 mens_timesig ("Mensural 4/8 meter", "mensural4/8", "mensuralfoureightmeter",
128 false, true, false, false);
130 %% tempus imperfectum cum prolatione perfecta diminutio simplex
131 mens_timesig ("Mensural 6/8 meter", "mensural6/8alt", "mensuralsixeightmeteralt",
132 false, true, false, true);
134 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
135 mens_timesig ("Mensural 2/4 meter", "mensural2/4", "mensuraltwofourmeter",
136 false, true, true, false);
142 % NEO-MENSURAL NOTATION
147 save neo_Cdiameter, neo_Cthickness;
148 neo_Cdiameter# := 3/2 staff_space#;
149 neo_Cthickness# := 2 stafflinethickness#;
150 define_pixels(neo_Cdiameter, neo_Cthickness);
152 def neo_mens_timesig (expr verbose_name, internal_name, mudela_name,
153 full_circle, reverse_circle, slashed, dotted) =
155 fet_beginchar(verbose_name, internal_name, mudela_name)
157 set_char_box(.5 neo_Cdiameter# + staff_space#,
158 .5 neo_Cdiameter# + staff_space#,
161 if (full_circle or dotted):
162 draw_block((-neo_Cthickness/2, -d), (neo_Cthickness/2, h));
164 draw_block((-neo_Cthickness, -d), (0, h));
167 set_char_box(.5 neo_Cdiameter# + staff_space#,
168 .5 neo_Cdiameter# + staff_space#,
172 pickup pencircle scaled neo_Cthickness;
174 draw fullcircle scaled neo_Cdiameter;
175 elseif reverse_circle:
176 draw threequartercircle rotated 225 scaled neo_Cdiameter;
178 draw threequartercircle rotated 45 scaled neo_Cdiameter;
181 pickup pencircle scaled 4 stafflinethickness;
187 %% tempus imperfectum cum prolatione imperfecta
188 neo_mens_timesig ("Mensural 4/4 meter", "neo_mensural4/4", "neomensuralfourfourmeter",
189 false, false, false, false);
191 %% tempus imperfectum cum prolatione imperfecta proportio dupla
192 neo_mens_timesig ("Mensural 2/2 meter", "neo_mensural2/2", "neomensuralallabreve",
193 false, false, true, false);
195 %% tempus perfectum cum prolatione imperfecta
196 neo_mens_timesig ("Mensural 3/2 meter", "neo_mensural3/2", "neomensuralthreetwometer",
197 true, false, false, false);
199 %% tempus imperfectum cum prolatione perfecta
200 neo_mens_timesig ("Mensural 6/4 meter", "neo_mensural6/4", "neomensuralsixfourmeter",
201 false, false, false, true);
203 %% tempus perfectum cum prolatione perfecta
204 neo_mens_timesig ("Mensural 9/4 meter", "neo_mensural9/4", "neomensuralninefourmeter",
205 true, false, false, true);
207 %% tempus perfectum cum prolatione imperfecta proportio dupla
208 neo_mens_timesig ("Mensural 3/4 meter", "neo_mensural3/4", "neomensuralthreefourmeter",
209 true, false, true, false);
211 %% tempus imperfectum cum prolatione perfecta proportio dupla
212 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8", "neomensuralsixeightmeter",
213 false, false, true, true);
215 %% tempus perfectum cum prolatione perfecta proportio dupla
216 neo_mens_timesig ("Mensural 9/8 meter", "neo_mensural9/8", "neomensuralnineeight",
217 true, false, true, true);
219 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
220 neo_mens_timesig ("Mensural 4/8 meter", "neo_mensural4/8", "neomensuralfoureightmeter",
221 false, true, false, false);
223 %% tempus imperfectum cum prolatione perfecta diminutio simplex
224 neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8alt", "neomensuralsixeightmeteralt",
225 false, true, false, true);
227 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
228 neo_mens_timesig ("Mensural 2/4 meter", "neo_mensural2/4", "neomensuraltwofourmeter",
229 false, true, true, false);
231 fet_endgroup ("timesig")