1 % -*- Fundamental -*- (emacs-20 mf mode mucks
2 % feta-pendaal.mf -- piano pedal markings
4 % part of LilyPond's pretty-but-neat music font
6 % source file of the Feta (not the Font-En-Tja) music font
8 % (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
14 % Pe = -0.034 pedalh == -0.07 staff-space
15 % ed = -0.27 pedalh == -0.53 staff-space
18 fet_begingroup ("pedal")
23 penh# = 0.7 linethickness#;
24 penw# = 2 penh# + 0.14 staff_space#;
25 define_pixels (penh, penw);
27 pedalh# = 2 staff_space#;
28 pedalbh# = 4/7 pedalh#;
29 define_pixels (pedalh, pedalbh);
32 fet_beginchar ("Pedal asterisk", "*")
33 save bulb, p, radius, thin, inner_r;
36 set_char_box (0, 7/9 pedalh#, 0, pedalh#);
38 z0 = (1/2 w, h - 1/2 w);
40 thin = 0.8 linethickness;
43 0.9 thin + bulb = (radius * pi * 2) / 8;
45 pickup pencircle scaled penh;
51 z1 = z0 + (0, radius);
56 z4l = z0 + inner_r * dir (90 + 360/16);
57 z4r = z0 + inner_r * dir (90 - 360/16);
62 penlabels (1, 2, 3, 4);
68 .. z4l{dir (180 + 360/16)};
75 .. z4l{dir (180 + 360/16)}) rotatedaround (z0,
83 pickup pencircle scaled (7/8 inner_r);
89 %% ugh. rounded corners!
91 fet_beginchar ("Pedal dash", "-")
92 set_char_box (0, 3 penw#, 0, pedalbh#);
94 pickup pencircle scaled penh;
99 z1l = (0, 2/3 h - 1/2 penw);
100 z2r = (w, y1l + 1.2 penw);
104 penstroke z1e{dir 40}
105 ..tension 1.2.. z2e{dir 40};
109 fet_beginchar ("Pedal dot", ".")
110 set_char_box (0, penw#, 0, penw#);
112 pickup pencircle scaled penw;
114 drawdot (1/2 penw, 1/2 penw);
118 def draw_pedal_P (expr show_labels) =
124 penpos3 (penw, pedalpha);
125 penpos4 (1.2 penh, -pedalpha);
126 penpos5 (penh, -pedalpha);
127 penpos6 (penh, 180 - pedalpha);
128 penpos7 (2 penh, 180 - pedalpha);
130 penpos9 (4/3 penw, 50);
131 penpos10 (1.4 penw, 50);
132 penpos11 (penh, 90 + pedalpha);
139 z4l = z5r + 1/4 (z3r - z5r);
143 z7 = z6r + 1/3 (z8r - z6r);
144 z8r = z5r + 3/5 (z3r - z5r);
147 x10l = w - tand (90 - pedalpha) * y11l;
156 penlabels (range 1 thru 11);
167 ..tension 1.5.. z8e{right}
168 ..tension 1.5.. z9e{dir - pedalpha}
170 ..tension 2.5.. z11e;
173 penpos13 (penw, -90 - pedbeta);
175 penpos15 (penw, -90 + pedbeta);
176 penpos16 (penh, 180 + pedbeta);
179 z13l = (1/2 x12r, y15r);
181 z15l = (1/2 [x16, w], y2l + 0.5 penw);
186 penlabels (range 12 thru 16);
189 soft_penstroke z12e{down}
190 ..tension 1.1.. z13e{dir (180 - pedbeta)}
191 ..tension 1.1.. z14e{right}
192 ..tension 1.1.. z15e{dir (180 + pedbeta)}
193 ..tension 1.1.. z16e{dir (90 + pedbeta)};
198 def draw_pedal_d (expr show_labels) =
202 penpos1 (penh, -10 - 90);
204 penpos3 (2 penh, 90);
205 penpos4 (3/4 penw, 0);
210 z2 = (w - 1/2 penw, 1/2 pedalbh + penh);
212 z4l = (1/3 w, 1/2 pedalbh);
213 z5l = (2/3 w, pedalbh);
216 penlabels (1, 2, 3, 4, 5);
219 soft_penstroke z1e{dir (-10)}
220 ..tension 1.1.. z2e{dir (-90 + 10)}
221 ..tension 1.1.. z3e{left}
222 ..tension 1.1.. z4e{up}
223 ..tension 1.1.. z5e{dir (-70 + 90)};
228 def draw_pedal_e (expr show_labels) =
232 penpos1 (penh, pedalpha - 90);
233 penpos2 (penh, pedalpha - 90);
234 penpos3 (3/5 penw, pedalpha);
235 penpos4 (1.2 penh, 90 + pedalpha);
236 penpos5 (2/3 penw, 180);
237 penpos6 (penw, 180 + pedalpha);
238 penpos7 (2/3 penw, -90 - 20);
239 penpos8 (penh, pedalpha - 90);
241 z1l = (0, 1/5 pedalh);
242 z2 = z1 + dir pedalpha * penw;
249 z7l = (x6l + penh, y6l);
254 penlabels (range 1 thru 8);
262 ..tension 1.5.. z6e{dir - pedalpha}
269 fet_beginchar ("Pedal P", "P")
270 set_char_box (0, 5/6 pedalh#, 0, pedalh#);
276 fet_beginchar ("Pedal d", "d")
277 set_char_box (0, 2/3 pedalh#, 0, 7/8 pedalh#);
283 fet_beginchar ("Pedal e", "e")
284 set_char_box (0, 2/5 pedalh#, 0, pedalbh#);
290 fet_beginchar ("Pedal Ped", "Ped")
291 P_width# = 5/6 pedalh#;
292 e_width# = 2/5 pedalh#;
293 d_width# = 2/3 pedalh#;
294 define_pixels (P_width, e_width, d_width);
296 e_height# = pedalbh#;
297 d_height# = 7/8 pedalh#;
298 define_pixels (e_height, d_height);
300 % Pe = -0.034 pedalh == -0.07 staff-space
301 % ed = -0.27 pedalh == -0.53 staff-space
302 Pe_kern# = -0.034 pedalh#;
303 ed_kern# = -0.27 pedalh#;
304 define_pixels (Pe_kern, ed_kern);
309 currentpicture := currentpicture shifted (e_width + ed_kern, 0);
314 currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
320 set_char_box (0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
325 fet_endgroup ("pedal")