3 fet_begingroup ("accordion")
5 accreg_dot_size# := .5 staff_space#;
6 accreg_linethickness# := 1.3 stafflinethickness#;
9 % This dimension is the same for all register symbols.
10 % The different symbols should calculate their other
11 % dimensions from this and accreg_dot_size.
14 accreg_lh# := 1.0 staff_space#;
16 define_pixels (accreg_dot_size, accreg_linethickness, accreg_lh);
19 fet_beginchar ("accDiscant", "accDiscant")
26 set_char_box (r#, r#, 0, 2 r#);
28 penpos1 (accreg_linethickness, 0);
29 penpos2 (0.7 accreg_linethickness, 90);
30 penpos3 (accreg_linethickness, 180);
31 penpos4 (0.7 accreg_linethickness, 270);
38 penlabels (1, 2, 3, 4);
50 z5 = p intersectionpoint ((0, 4/3 r) -- (r, 4/3 r));
52 z7 = p intersectionpoint ((0, 2/3 r) -- (r, 2/3 r));
57 pickup penrazor scaled 0.7 accreg_linethickness rotated 90;
66 fet_beginchar ("accDot", "accDot")
67 set_char_box (accreg_dot_size#, accreg_dot_size#, 0, 0);
69 pickup pencircle scaled accreg_dot_size;
75 fet_beginchar ("accFreebase", "accFreebase")
82 set_char_box (r#, r#, 0, 2 r#);
84 penpos1 (accreg_linethickness, 0);
85 penpos2 (0.7 accreg_linethickness, 90);
86 penpos3 (accreg_linethickness, 180);
87 penpos4 (0.7 accreg_linethickness, 270);
94 penlabels (1, 2, 3, 4);
102 pickup penrazor scaled 0.7 accreg_linethickness rotated 90;
109 fet_beginchar ("accStdbase", "accStdbase")
116 set_char_box (r#, r#, 0, 2 r#);
118 penpos1 (accreg_linethickness, 0);
119 penpos2 (0.7 accreg_linethickness, 90);
120 penpos3 (accreg_linethickness, 180);
121 penpos4 (0.7 accreg_linethickness, 270);
128 penlabels (1, 2, 3, 4);
140 z5 = p intersectionpoint ((0, 3/2 r) -- (r, 3/2 r));
142 z7 = p intersectionpoint ((0, 1/2 r) -- (r, 1/2 r));
147 pickup penrazor scaled 0.7 accreg_linethickness rotated 90;
158 fet_beginchar ("accBayanbase", "accBayanbase")
162 set_char_box (accreg_lh#, accreg_lh#, 0, 3 accreg_lh#);
164 draw_gridline ((-w, 0), (w, 0), accreg_linethickness);
165 draw_gridline ((-w, lh),(w, lh), accreg_linethickness);
166 draw_gridline ((-w, 2 lh), (w, 2 lh), accreg_linethickness);
167 draw_gridline ((-w, 3 lh), (w, 3 lh), accreg_linethickness);
169 draw_gridline ((-w, 0), (-w, 3 lh), accreg_linethickness);
170 draw_gridline ((w, 0), (w, 3 lh), accreg_linethickness);
174 def def_B (expr w, h) =
175 pickup pencircle scaled 0.15 linethickness;
177 penpos10 (thin, -90);
178 penpos11 (thin, -90);
183 penpos15 (thick, 180);
184 penpos16 (thin, -90);
185 penpos17 (thin, -90);
191 z12 = (w, .5 mb * h);
192 z13 = (cTwo * w, mb * h);
193 z14 = (2 thick, mb * h);
194 z15 = (.94 w, h - .5 mt * h);
195 z16 = z13 + (0, mt * h);
197 z18 = (1.5 thick, 0);
198 z19 = (1.5 thick, h);
202 def def_S (expr w, h) =
203 pickup pencircle scaled 0.03 linethickness;
208 penpos4 (.5 thick, 90);
217 z3 = (w - .5 thick, .5 mb * h);
218 z4 = (w / 2, mb * h);
219 z5 = (.5 thick, h - .5 mt * h);
230 t := xpart (bue intersectiontimes (z8l -- z7l));
232 bueoverst := z6{right}
238 save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
241 width = .8 (4 staff_space);
242 height = 2.4 staff_space;
243 % URG. smaller sizes should be wider and fatter
244 % thin = 0.05 staff_space;
245 % thick = 0.2 staff_space;
249 fatten := designsize * hx + bx * 1.2;
250 thick := 0.2 staff_space * fatten;
252 % urg: mustn't ever go thinner than blot!
253 thin# := blot_diameter#;
254 define_pixels (thin);
256 hs = 0.4 staff_space;
264 fet_beginchar ("accOldEE", "accOldEE")
267 set_char_box (staff_space#, staff_space#, 0, 2 staff_space#);
270 lr = .4 staff_space - linethickness;
276 penpos1 (blot_diameter, 0);
277 penpos2 (.05 staff_space + .5 linethickness + blot_diameter, 0);
279 pickup pencircle scaled (lr + blot_diameter);
281 for pp := 0 step 45 until 360:
282 drawdot (0, 0) shifted (ir * (dir pp));
288 penpos3 (accreg_linethickness, 0);
289 penpos4 (0.7 accreg_linethickness, 90);
290 penpos5 (accreg_linethickness, 180);
291 penpos6 (0.7 accreg_linethickness, 270);
298 % penlabels (1, 2, 3, 4, 5, 6);
306 pickup pencircle scaled lr;
310 currentpicture := currentpicture shifted (0, r);
314 fet_endgroup ("accordion")