]> git.donarmstrong.com Git - lilypond.git/blob - mf/parmesan-flags.mf
release: 1.5.29
[lilypond.git] / mf / parmesan-flags.mf
1 % flags 
2 %
3
4
5 fet_begingroup("flags")
6 save outer_path;
7 path outer_path;
8 % Flags pointing down overlap with  the notehead (in x-direction), so 
9 % the down-flag can be bigger
10 upflag_width# = .750 black_notehead_width# + stemthickness#/2;
11 downflag_width# = .833 black_notehead_width# + stemthickness#/2;
12
13 right_upflag_space# = .2 upflag_width#;
14 right_downflag_space# = .2 downflag_width#;
15
16 %
17 % Flags pointing down cannot overlap with the notehead in y-direction,
18 % so they have less slant.
19
20 % Because of optical illusion, the utmost flag (bottom for
21 % down-pointing, top for up-pointing) should be smaller than the other
22 % flags.  Adobe Sonata doesn't do this correctly.  (Instead they have
23 % an extension flag, which looks less elegant)
24 %
25
26 save hip_thickness, foot_thickness;
27 hip_thickness# = 1.3 stemthickness#;
28 foot_thickness# =  hip_thickness#;
29
30 %%%%%%%%
31 %
32 %
33 %
34 % Mensural Notation
35 %
36 %
37 %
38
39 def draw_mensural_outermost_flag_i =
40         define_pixels(stafflinethickness, staff_space)
41
42         pickup pencircle
43                 xscaled 1.00 stafflinethickness
44                 yscaled 0.22 staff_space
45                 rotated -35;
46
47         save za, zb, zc, zd, ze;
48         pair za, zb, zc, zd, ze;
49
50         za = (+0.00 staff_space, -0.00 staff_space);
51         zb = (+0.15 staff_space, -0.00 staff_space);
52         zc = (+0.45 staff_space, -0.35 staff_space);
53         zd = (+0.45 staff_space, -0.85 staff_space);
54         ze = (+0.00 staff_space, -2.00 staff_space);
55
56         draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
57 enddef;
58
59 def draw_mensural_outermost_flag_ii =
60         define_pixels(stafflinethickness, staff_space)
61
62         pickup pencircle
63                 xscaled 1.00 stafflinethickness
64                 yscaled 0.22 staff_space
65                 rotated -35;
66
67         save za, zb, zc, zd, ze;
68         pair za, zb, zc, zd, ze;
69
70         za = (+0.00 staff_space, -0.00 staff_space);
71         zb = (+0.15 staff_space, -0.00 staff_space);
72         zc = (+0.20 staff_space, -0.05 staff_space);
73         zd = (+0.20 staff_space, -1.15 staff_space);
74         ze = (+0.00 staff_space, -1.40 staff_space);
75
76         draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
77 enddef;
78
79 def draw_mensural_inner_flag(expr il_shift) =
80         define_pixels(stafflinethickness, staff_space)
81
82         pickup pencircle
83                 xscaled 1.00 stafflinethickness
84                 yscaled 0.22 staff_space
85                 rotated -35;
86
87         save zs, za, zb, zc, zd;
88         pair zs, za, zb, zc, zd;
89
90         zs = (0, -il_shift * staff_space);
91         za = zs + (+0.00 staff_space, -0.10 staff_space);
92         zb = zs + (+0.33 staff_space, -0.30 staff_space);
93         zc = zs + (+0.33 staff_space, -0.70 staff_space);
94         zd = zs + (+0.00 staff_space, -0.90 staff_space);
95
96         draw za{2,1} .. zb .. zc .. {-2,-1}zd;
97 enddef;
98
99 fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
100         set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
101         draw_mensural_outermost_flag_i
102 fet_endchar;
103
104 fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
105         set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
106         draw_mensural_outermost_flag_ii
107 fet_endchar;
108
109 fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
110         set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
111         draw_mensural_outermost_flag_i
112         currentpicture := currentpicture xscaled -1 yscaled -1;
113 fet_endchar;
114
115 fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
116         set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
117         draw_mensural_outermost_flag_ii
118         currentpicture := currentpicture xscaled -1 yscaled -1;
119 fet_endchar;
120
121 fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
122         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
123         draw_mensural_outermost_flag_i
124         draw_mensural_inner_flag(2.0)
125 fet_endchar;
126
127 fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
128         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
129         draw_mensural_outermost_flag_ii
130         draw_mensural_inner_flag(1.5)
131 fet_endchar;
132
133 fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
134         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
135         draw_mensural_outermost_flag_i
136         draw_mensural_inner_flag(2.0)
137         currentpicture := currentpicture xscaled -1 yscaled -1;
138 fet_endchar;
139
140 fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
141         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
142         draw_mensural_outermost_flag_ii
143         draw_mensural_inner_flag(1.5)
144         currentpicture := currentpicture xscaled -1 yscaled -1;
145 fet_endchar;
146
147 fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
148         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
149         draw_mensural_outermost_flag_i
150         draw_mensural_inner_flag(2.0)
151         draw_mensural_inner_flag(3.0)
152 fet_endchar;
153
154 fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
155         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
156         draw_mensural_outermost_flag_ii
157         draw_mensural_inner_flag(1.5)
158         draw_mensural_inner_flag(2.5)
159 fet_endchar;
160
161 fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
162         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
163         draw_mensural_outermost_flag_i
164         draw_mensural_inner_flag(2.0)
165         draw_mensural_inner_flag(3.0)
166         currentpicture := currentpicture xscaled -1 yscaled -1;
167 fet_endchar;
168
169 fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
170         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
171         draw_mensural_outermost_flag_ii
172         draw_mensural_inner_flag(1.5)
173         draw_mensural_inner_flag(2.5)
174         currentpicture := currentpicture xscaled -1 yscaled -1;
175 fet_endchar;
176
177 fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
178         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
179         draw_mensural_outermost_flag_i
180         draw_mensural_inner_flag(1.5)
181         draw_mensural_inner_flag(2.5)
182         draw_mensural_inner_flag(3.5)
183 fet_endchar;
184
185 fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
186         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
187         draw_mensural_outermost_flag_ii
188         draw_mensural_inner_flag(1.17)
189         draw_mensural_inner_flag(2.08)
190         draw_mensural_inner_flag(3.00)
191 fet_endchar;
192
193 fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
194         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
195         draw_mensural_outermost_flag_i
196         draw_mensural_inner_flag(1.5)
197         draw_mensural_inner_flag(2.5)
198         draw_mensural_inner_flag(3.5)
199         currentpicture := currentpicture xscaled -1 yscaled -1;
200 fet_endchar;
201
202 fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
203         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
204         draw_mensural_outermost_flag_ii
205         draw_mensural_inner_flag(1.17)
206         draw_mensural_inner_flag(2.08)
207         draw_mensural_inner_flag(3.00)
208         currentpicture := currentpicture xscaled -1 yscaled -1;
209 fet_endchar;
210
211 %%%%%%%%
212 %
213 %
214 %
215 % Mensural Notation
216 %
217 %
218 %
219
220 def draw_mensural_outermost_flag_i =
221         define_pixels(stafflinethickness, staff_space)
222
223         pickup pencircle
224                 xscaled 1.00 stafflinethickness
225                 yscaled 0.22 staff_space
226                 rotated -35;
227
228         save za, zb, zc, zd, ze;
229         pair za, zb, zc, zd, ze;
230
231         za = (+0.00 staff_space, -0.00 staff_space);
232         zb = (+0.15 staff_space, -0.00 staff_space);
233         zc = (+0.45 staff_space, -0.35 staff_space);
234         zd = (+0.45 staff_space, -0.85 staff_space);
235         ze = (+0.00 staff_space, -2.00 staff_space);
236
237         draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
238 enddef;
239
240 def draw_mensural_outermost_flag_ii =
241         define_pixels(stafflinethickness, staff_space)
242
243         pickup pencircle
244                 xscaled 1.00 stafflinethickness
245                 yscaled 0.22 staff_space
246                 rotated -35;
247
248         save za, zb, zc, zd, ze;
249         pair za, zb, zc, zd, ze;
250
251         za = (+0.00 staff_space, -0.00 staff_space);
252         zb = (+0.15 staff_space, -0.00 staff_space);
253         zc = (+0.20 staff_space, -0.05 staff_space);
254         zd = (+0.20 staff_space, -1.15 staff_space);
255         ze = (+0.00 staff_space, -1.40 staff_space);
256
257         draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze;
258 enddef;
259
260 def draw_mensural_inner_flag(expr il_shift) =
261         define_pixels(stafflinethickness, staff_space)
262
263         pickup pencircle
264                 xscaled 1.00 stafflinethickness
265                 yscaled 0.22 staff_space
266                 rotated -35;
267
268         save zs, za, zb, zc, zd;
269         pair zs, za, zb, zc, zd;
270
271         zs = (0, -il_shift * staff_space);
272         za = zs + (+0.00 staff_space, -0.10 staff_space);
273         zb = zs + (+0.33 staff_space, -0.30 staff_space);
274         zc = zs + (+0.33 staff_space, -0.70 staff_space);
275         zd = zs + (+0.00 staff_space, -0.90 staff_space);
276
277         draw za{2,1} .. zb .. zc .. {-2,-1}zd;
278 enddef;
279
280 fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag")
281         set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0)
282         draw_mensural_outermost_flag_i
283 fet_endchar;
284
285 fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag")
286         set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0)
287         draw_mensural_outermost_flag_ii
288 fet_endchar;
289
290 fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag")
291         set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#)
292         draw_mensural_outermost_flag_i
293         currentpicture := currentpicture xscaled -1 yscaled -1;
294 fet_endchar;
295
296 fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag")
297         set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#)
298         draw_mensural_outermost_flag_ii
299         currentpicture := currentpicture xscaled -1 yscaled -1;
300 fet_endchar;
301
302 fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag")
303         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
304         draw_mensural_outermost_flag_i
305         draw_mensural_inner_flag(2.0)
306 fet_endchar;
307
308 fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag")
309         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
310         draw_mensural_outermost_flag_ii
311         draw_mensural_inner_flag(1.5)
312 fet_endchar;
313
314 fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag")
315         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
316         draw_mensural_outermost_flag_i
317         draw_mensural_inner_flag(2.0)
318         currentpicture := currentpicture xscaled -1 yscaled -1;
319 fet_endchar;
320
321 fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag")
322         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
323         draw_mensural_outermost_flag_ii
324         draw_mensural_inner_flag(1.5)
325         currentpicture := currentpicture xscaled -1 yscaled -1;
326 fet_endchar;
327
328 fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag")
329         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
330         draw_mensural_outermost_flag_i
331         draw_mensural_inner_flag(2.0)
332         draw_mensural_inner_flag(3.0)
333 fet_endchar;
334
335 fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag")
336         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
337         draw_mensural_outermost_flag_ii
338         draw_mensural_inner_flag(1.5)
339         draw_mensural_inner_flag(2.5)
340 fet_endchar;
341
342 fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag")
343         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
344         draw_mensural_outermost_flag_i
345         draw_mensural_inner_flag(2.0)
346         draw_mensural_inner_flag(3.0)
347         currentpicture := currentpicture xscaled -1 yscaled -1;
348 fet_endchar;
349
350 fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag")
351         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
352         draw_mensural_outermost_flag_ii
353         draw_mensural_inner_flag(1.5)
354         draw_mensural_inner_flag(2.5)
355         currentpicture := currentpicture xscaled -1 yscaled -1;
356 fet_endchar;
357
358 fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag")
359         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
360         draw_mensural_outermost_flag_i
361         draw_mensural_inner_flag(1.5)
362         draw_mensural_inner_flag(2.5)
363         draw_mensural_inner_flag(3.5)
364 fet_endchar;
365
366 fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag")
367         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
368         draw_mensural_outermost_flag_ii
369         draw_mensural_inner_flag(1.17)
370         draw_mensural_inner_flag(2.08)
371         draw_mensural_inner_flag(3.00)
372 fet_endchar;
373
374 fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag")
375         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
376         draw_mensural_outermost_flag_i
377         draw_mensural_inner_flag(1.5)
378         draw_mensural_inner_flag(2.5)
379         draw_mensural_inner_flag(3.5)
380         currentpicture := currentpicture xscaled -1 yscaled -1;
381 fet_endchar;
382
383 fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag")
384         set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0)
385         draw_mensural_outermost_flag_ii
386         draw_mensural_inner_flag(1.17)
387         draw_mensural_inner_flag(2.08)
388         draw_mensural_inner_flag(3.00)
389         currentpicture := currentpicture xscaled -1 yscaled -1;
390 fet_endchar;
391
392 %%%%%%%%
393 %
394 %
395 %
396 % Single Stroke for Short Appogiatura
397 %
398 %
399 %
400
401 fet_beginchar("grace dash (up)", "ugrace", "gracedash")
402         save flare, 
403                 hip_depth_ratio, hip_width,
404                 foot_depth;
405
406         flare# = 1.0 staff_space#;
407         hip_depth_ratio = .72; 
408         hip_width# = upflag_width# - hip_thickness#/2;
409
410         foot_depth# =  3 staff_space#;
411
412         define_pixels(flare, hip_width, hip_thickness,
413                 foot_depth, foot_thickness);
414
415         set_char_box(hip_width# * hip_depth_ratio,
416           hip_width# + stemthickness#/2 + right_upflag_space#, 
417           foot_depth# * hip_depth_ratio, -flare#)
418
419         pickup pencircle scaled 1.5 stemthickness;
420         draw (-b ,-d) ..
421           (w, h);
422 fet_endchar;
423
424 fet_beginchar("grace dash (down)", "dgrace", "dgracedash")
425         save flare, hip_depth_ratio, hip_width, foot_depth;
426         save flagspace, total_depth, flag_count;
427         
428         flag_count = 1;
429         flare# = .99 staff_space#;
430         flagspace# = .9 staff_space#;   
431         hip_depth_ratio = .72 ;
432         hip_width# = downflag_width# - hip_thickness#/2;
433         total_depth# = 2.85 staff_space#;
434         (flag_count-1) * flagspace# + foot_depth# = total_depth#;
435
436         foot_width_ratio = .8;
437
438         define_pixels(flare, hip_width, hip_thickness,
439                 flagspace, foot_depth);
440
441         set_char_box(hip_width# * hip_depth_ratio,
442           hip_width# + stemthickness#/2 + right_downflag_space#,
443           foot_depth# * hip_depth_ratio, -flare#)
444
445         pickup pencircle scaled 1.5 stemthickness;
446         draw (-b, -d) .. (w,h);
447         y_mirror_char;
448 fet_endchar;
449
450 % ustem?
451 %
452 %
453 % Stem characters so we can compose metronome markings with Feta
454 % entirely.
455 %
456
457 fet_beginchar("stem (up)", "stem", "stem")
458         set_char_box(stemthickness#/2, stemthickness#/2, 0, 3.5staff_space#);
459         pickup pencircle scaled stemthickness;
460         draw (0, 0.2staff_space) .. (0, 3.5staff_space);
461 fet_endchar;
462
463 % do we want this?
464 fet_beginchar("stem (down)", "dstem", "dstem")
465         set_char_box(stemthickness#/2, stemthickness#/2, 3.5staff_space#, 0);
466         pickup pencircle scaled stemthickness;
467         draw (0, -0.2staff_space) .. (0, -3.5staff_space);
468 fet_endchar;
469
470
471 fet_endgroup("flags");