]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-accordion.mf
release: 1.1.28
[lilypond.git] / mf / feta-accordion.mf
1 % -*- Fundamental -*-
2
3
4
5 accreg_dot_size# := .7interline#;
6 accreg_linethickness# := 1.3stafflinethickness#;
7
8 % This dimention is the same on all registersymbols.
9 % The different symbols should calculate their other
10 % dimensions from this and accreg_dot_size
11 accreg_lh# := 1.2interline#;
12
13 define_pixels(accreg_dot_size, accreg_linethickness, accreg_lh);
14 pen accreg_pen;
15 accreg_pen := pencircle xscaled accreg_linethickness yscaled 0.7accreg_linethickness;
16 def draw_discant_reg(expr A, B, C, D, E, F) = 
17         save r, sx;
18         r# = 3/2accreg_lh#;
19         define_pixels(r);
20 %       set_char_box(r#, r#, 2r#, 0);
21         set_char_box(r#, r#, 0r#, 2r#); %% arg3 = under linjen, arg4 = over
22         pickup accreg_pen;
23         draw fullcircle scaled 2r;
24         sx = cosd(19.471221);
25         draw (-sx*r, r/3)--(sx*r, r/3);
26         draw (-sx*r, -r/3)--(sx*r, -r/3);
27
28         pickup pencircle scaled accreg_dot_size;
29         if A = 1: drawdot (0, 2/3r); fi
30         if B = 1: drawdot (r/2, 0); fi
31         if C = 1: drawdot (0, 0); fi
32         if D = 1: drawdot (-r/2, 0); fi
33         if E = 1: drawdot (0, -2/3r); fi
34         if F = 1: drawdot (-.25r, -.642r); drawdot (.25r, -.642r); fi
35         currentpicture := currentpicture shifted (0, r);
36 enddef;
37
38 def draw_freebass_reg(expr rFour, rEight) =
39         save r;
40         r#= accreg_lh#;
41         define_pixels(r);
42         set_char_box(r#, r#, 0, 2r#);
43         pickup accreg_pen;
44         draw fullcircle scaled 2r;
45         draw (-r, 0)--(r, 0);
46         pickup pencircle scaled accreg_dot_size;
47         if rFour = 1: draw (0, r/2); fi
48         if rEight = 1: draw (0, -r/2); fi
49         currentpicture := currentpicture shifted (0, r);
50 enddef;
51
52 def draw_stdbass_reg(expr A, B, C, D, E) =
53         save r, sx;
54         r# = 2accreg_lh#;
55         define_pixels(r);
56         sx = cosd 30 ;
57         set_char_box(r#, r#, 0, 2r#);
58         pickup accreg_pen;
59         draw fullcircle scaled 2r;
60         draw (-r, 0)--(r, 0);
61         draw (-sx*r, r/2)--(sx*r, r/2);
62         draw (-sx*r, -r/2)--(sx*r, -r/2);
63         pickup pencircle scaled accreg_dot_size;
64         if A = 1: draw (0, -3/4r); fi
65         if B = 1: draw (0, -1/4r); fi
66         if C = 1: draw (0, 1/4r); fi
67         if D = 1: draw (0, 3/4r); fi
68         if E = 1: draw (1/2r, 0); fi
69         currentpicture := currentpicture shifted (0, r);
70 enddef;
71
72 def draw_bayanbass_reg_sign(expr nTwo, nEight) = 
73         save lh;
74         lh = accreg_lh;
75 %       set_char_box(accreg_lh#, accreg_lh#, 3accreg_lh#, 0);
76         set_char_box(accreg_lh#, accreg_lh#, 0, 3accreg_lh#);
77         pickup pencircle scaled accreg_linethickness;
78         draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--(0, 0);
79         draw (0, accreg_lh)--(2w, accreg_lh);
80         draw (0, 2accreg_lh)--(2w, 2accreg_lh);
81
82         pickup pencircle scaled accreg_dot_size;
83         if nTwo = 1: draw (w, 5/2lh); fi
84         if nEight = 1: draw (w, lh/2); fi
85         if nEight = 2: draw (5/8w, lh/2); draw (11/8w, lh/2); fi
86         currentpicture := currentpicture shifted (-w, 0);% -3lh);
87 enddef;
88
89 fet_beginchar("accDiscant", "accDiscant", "accDiscant")
90         draw_discant_reg(0, 0, 0, 0, 0, 0);
91 fet_endchar;
92
93 fet_beginchar("accDiscantF", "accDiscantF", "accDiscantF")
94         draw_discant_reg(1, 0, 0, 0, 0, 0);
95 fet_endchar;
96
97 fet_beginchar("accDiscantEh", "accDiscantEh", "accDiscantEh")
98         draw_discant_reg(0, 1, 0, 0, 0, 0);
99 fet_endchar;
100
101 fet_beginchar("accDiscantE", "accDiscantE", "accDiscantE")
102         draw_discant_reg(0, 0, 1, 0, 0, 0);
103 fet_endchar;
104
105 fet_beginchar("accDiscantFE", "accDiscantFE", "accDiscantFE")
106         draw_discant_reg(1, 0, 1, 0, 0, 0);
107 fet_endchar;    
108
109 fet_beginchar("accDiscantFEh", "accDiscantFEh", "accDiscantFEh")
110         draw_discant_reg(1, 1, 0, 0, 0, 0);
111 fet_endchar;    
112
113 fet_beginchar("accDiscantEE", "accDiscantEE", "accDiscantEE")
114         draw_discant_reg(0, 1, 0, 1, 0, 0);
115 fet_endchar;
116
117 fet_beginchar("accDiscantFEE", "accDiscantFEE", "accDiscantFEE")
118         draw_discant_reg(1, 1, 0, 1, 0, 0);
119 fet_endchar;
120
121 fet_beginchar("accDiscantEEE", "accDiscantEEE", "accDiscantEEE")
122         draw_discant_reg(0, 1, 1, 1, 0, 0);
123 fet_endchar;
124
125 fet_beginchar("accDiscantFEEE", "accDiscantFEEE", "accDiscantFEEE")
126         draw_discant_reg(1, 1, 1, 1, 0, 0);
127 fet_endchar;
128
129 fet_beginchar("accDiscantS", "accDiscantS", "accDiscantS")
130         draw_discant_reg(0, 0, 0, 0, 1, 0);
131 fet_endchar;
132
133 fet_beginchar("accDiscantFS", "accDiscantFS", "accDiscantFS")
134         draw_discant_reg(1, 0, 0, 0, 1, 0);
135 fet_endchar;
136
137 fet_beginchar("accDiscantES", "accDiscantES", "accDiscantES")
138         draw_discant_reg(0, 0, 1, 0, 1, 0);
139 fet_endchar;
140
141 fet_beginchar("accDiscantEhS", "accDiscantEhS", "accDiscantEhS")
142         draw_discant_reg(0, 1, 0, 0, 1, 0);
143 fet_endchar;
144
145 fet_beginchar("accDiscantFES", "accDiscantFES", "accDiscantFES")
146         draw_discant_reg(1, 0, 1, 0, 1, 0);
147 fet_endchar;
148
149 fet_beginchar("accDiscantFEhS", "accDiscantFEhS", "accDiscantFEhS")
150         draw_discant_reg(1, 1, 0, 0, 1, 0);
151 fet_endchar;
152
153 fet_beginchar("accDiscantEES", "accDiscantEES", "accDiscantEES")
154         draw_discant_reg(0, 1, 0, 1, 1, 0);
155 fet_endchar;
156
157 fet_beginchar("accDiscantFEES", "accDiscantFEES", "accDiscantFEES")
158         draw_discant_reg(1, 1, 0, 1, 1, 0);
159 fet_endchar;
160
161 fet_beginchar("accDiscantEEES", "accDiscantEEES", "accDiscantEEES")
162         draw_discant_reg(0, 1, 1, 1, 1, 0);
163 fet_endchar;
164
165 fet_beginchar("accDiscantFEEES", "accDiscantFEEES", "accDiscantFEEES")
166         draw_discant_reg(1, 1, 1, 1, 1, 0);
167 fet_endchar;
168
169 fet_beginchar("accDiscantSS", "accDiscantSS", "accDiscantSS")
170         draw_discant_reg(0, 0, 0, 0, 0, 1);
171 fet_endchar;
172
173 fet_beginchar("accDiscantESS", "accDiscantESS", "accDiscantESS")
174         draw_discant_reg(0, 0, 1, 0, 0, 1);
175 fet_endchar;
176
177 fet_beginchar("accDiscantEESS", "accDiscantEESS", "accDiscantEESS")
178         draw_discant_reg(0, 1, 0, 1, 0, 1);
179 fet_endchar;
180
181 fet_beginchar("accDiscantEEESS", "accDiscantEEESS", "accDiscantEEESS")
182         draw_discant_reg(0, 1, 1, 1, 0, 1);
183 fet_endchar;
184
185 fet_beginchar("accFreebass", "accFreebass", "accFreebass")
186         draw_freebass_reg(0, 0);
187 fet_endchar;
188
189 fet_beginchar("accFreebassF", "accFreebassF", "accFreebassF")
190         draw_freebass_reg(1, 0);
191 fet_endchar;
192
193 fet_beginchar("accFreebassE", "accFreebassE", "accFreebassE")
194         draw_freebass_reg(0, 1);
195 fet_endchar;
196
197 fet_beginchar("accFreebassFE", "accFreebassFE", "accFreebassFE")
198         draw_freebass_reg(1, 1);
199 fet_endchar;
200
201 fet_beginchar("accStdbass", "accStdbass", "accStdbass")
202         draw_stdbass_reg(0, 0, 0, 0, 0);
203 fet_endchar;
204
205 fet_beginchar("accStdbassM", "accStdbassM", "accStdbassM")
206         draw_stdbass_reg(1, 1, 1, 1, 1);
207 fet_endchar;
208
209 fet_beginchar("accStdbassBp", "accStdbassBp", "accStdbassBp")
210         draw_stdbass_reg(1, 1, 0, 0, 1);
211 fet_endchar;
212
213 fet_beginchar("accStdbassT", "accStdbassT", "accStdbassT")
214         draw_stdbass_reg(0, 1, 1, 1, 0);
215 fet_endchar;
216
217 fet_beginchar("accStdbassTp", "accStdbassTp", "accStdbassTp")
218         draw_stdbass_reg(0, 1, 1, 0, 0);
219 fet_endchar;
220
221 fet_beginchar("accBayanbass", "accBayanbass", "accBayanbass")
222         draw_bayanbass_reg_sign(1, 0);
223 fet_endchar;
224
225 fet_beginchar("accBayanbassT", "accBayanbassT", "accBayanbassT")
226         draw_bayanbass_reg_sign(1, 0);
227 fet_endchar;
228
229 fet_beginchar("accBayanbassE", "accBayanbassE", "accBayanbassE")
230         draw_bayanbass_reg_sign(0, 1);
231 fet_endchar;
232
233 fet_beginchar("accBayanbassTE", "accBayanbassTE", "accBayanbassTE")
234         draw_bayanbass_reg_sign(1, 1);
235 fet_endchar;
236
237 fet_beginchar("accBayanbassEE", "accBayanbassEE", "accBayanbassEE")
238         draw_bayanbass_reg_sign(0, 2);
239 fet_endchar;
240
241 fet_beginchar("accBayanbassTEE", "accBayanbassTEE", "accBayanbassTEE")
242         draw_bayanbass_reg_sign(1, 2);
243 fet_endchar;
244
245 def def_B(expr w, h) = 
246         pickup pencircle scaled 0.1pt;
247         penpos10(thin, -90);
248         penpos11(thin, -90);
249         penpos12(thick, 0);
250         penpos13(thin, 90);
251         penpos14(thin, 90);
252         penpos15(thick, 180);
253         penpos16(thin, -90);
254         penpos17(thin, -90);
255         penpos18(thick, 0);
256         penpos19(thick, 0);
257         z10 = (0, 0);
258         z11 = (cOne*w, 0);
259         z12 = (w, .5mb*h);
260         z13 = (cTwo*w, mb*h);
261         z14 = (2thick, mb*h);
262         z15 = (.94w, h-.5mt*h);
263         z16 = z13 + (0, mt*h);
264         z17 = (0, h);
265         z18 = (1.5thick, 0);
266         z19 = (1.5thick, h);
267 enddef;
268
269 def def_S(expr w, h) =
270         pickup pencircle scaled 0.02pt;
271         penpos1(thin, 180);
272         penpos2(thin, -90);
273         penpos3(thick, 0);
274         penpos4(.5thick, 90);
275         penpos5(thick, 0);
276         penpos6(thin, -90);
277         penpos7(thin, 180);
278         penpos8(thin, 180);
279         penpos9(thin, 0);
280         z1 = (0, hs);
281         z2 = (w/2, 0);
282         z3 = (w-.5thick, .5mb*h);
283         z4 = (w/2, mb*h);
284         z5 = (.5thick, h-.5mt*h);
285         z6 = (w/2, h);
286         z7 = (w, h-hs);
287         z8 = (0, y2r);
288         z9 = (w, y6l);
289         path bue, bueoverst;
290         bue=z2{left}..z1{up};
291         numeric t;
292         t:=xpart(bue intersectiontimes(z8l--z7l));
293         show t;
294         bueoverst=z6{right}..z7{down};
295 enddef;
296
297 def def_some_vars =
298         save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
299         width = .8staffsize;
300         height = 2.4interline;
301         thin = 0.05interline;
302         thick = 0.2interline;
303         hs = 0.4interline;
304         mb = .53;
305         mt = .47;       
306         cOne = 0.65;
307         cTwo = 0.60;
308 enddef;
309
310 fet_beginchar("accSB", "accSB", "accSB")
311         set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
312         def_some_vars;
313         def_B(.35width, .7height);
314         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
315         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
316         penstroke z18e--z19e;
317         pickup pencircle scaled .5thick;
318         drawdot (.37width, .10thick);
319         currentpicture := currentpicture shifted(.40width, 0);
320
321         def_S(.35width, .7height);
322 %       penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
323         filldraw z1r--z8r--z8l--subpath(t, 1) of bue--cycle;
324         filldraw subpath(t, 1) of bueoverst--z7l--z9r--z9l--cycle;
325         penstroke z1e{down}..z2e{right}..z3e
326                 ..z4e
327                 ..z5e..z6e{right}...z7e{down};
328         pickup pencircle scaled .5thick;
329         drawdot (.37width, .10thick);
330         currentpicture := currentpicture shifted (-.40width, -.85height);
331         draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
332                 --(-.5width, -height)--(-.5width, 0);
333         currentpicture := currentpicture shifted (0, 2.4interline);
334 fet_endchar;
335
336 fet_beginchar("accBB", "accBB", "accBB")
337         set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
338         def_some_vars;
339         def_B(.35width, .7height);
340         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
341         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
342         penstroke z18e--z19e;
343         pickup pencircle scaled .5thick;
344         drawdot(.37width, .10thick);
345         currentpicture := currentpicture shifted (.40width, 0);
346         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
347         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
348         penstroke z18e--z19e;
349         drawdot(.37width, .10thick);
350         currentpicture := currentpicture shifted(-.40width, -.85height);
351         draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
352                 --(-.5width, -height)--(-.5width, 0);
353         currentpicture := currentpicture shifted (0, 2.4interline);
354 fet_endchar;
355
356
357 fet_beginchar("accOldEE", "accOldEE", "accOldEE")
358         set_char_box(interline#, interline#, 0, 2interline#);
359         show w;
360         show h;
361         r = interline;
362         lr = .3interline;
363         ir = .6interline;
364         pickup accreg_pen;
365         draw fullcircle scaled 2r;
366         pickup penrazor;
367         filldraw fullcircle scaled lr;
368         z1 = (ir, 0);
369         z2 = (0, 0) + ir*(dir 45);
370         z3 = (0, ir);
371         numeric pp;
372         for pp := 0 step 45 until 360:
373                 filldraw fullcircle scaled lr shifted (ir*(dir pp));
374         endfor;
375         for pp := 0 step 45 until 360:
376                 filldraw ((0, 0)--(.2lr, ir)--(-.2lr, ir)--cycle) rotated pp;
377         endfor
378         currentpicture := currentpicture shifted (0, r);
379 fet_endchar;
380
381 fet_beginchar("accOldEES", "accOldEES", "accOldEES")
382         set_char_box(interline#, interline#, 0, 2interline#);
383         save r, shy;
384         r = interline;
385         shy = .3;
386         pickup accreg_pen;
387         draw fullcircle scaled 2r;
388         currentpicture := currentpicture shifted (w/2, shy*h);
389         save thin, thick, sw, ch, cw, mb, mt;
390         ch = .6h;
391         cw = .8w;
392         thin = .05cw;
393         thick = .17w;
394         mb = .53; mt = .47;
395         sw = .8thick;
396         z1 = (0, ch-.5thin); penpos1 (thin, -90);
397         z2 = (.7cw, y1); penpos2 (thin, -90);
398         z3 = (cw, (mb+.5mt)*ch); penpos3(thick, -180);
399         z4 = (.65cw, mb*ch); penpos4(thin, 90);
400         z5 = (sw+thick, mb*ch); penpos5(thin, 90);
401         z6 = (.9cw, .5mb*ch); penpos6(thick, 0);
402         z7 = (1.2cw, 0); penpos7(thin, 90);
403         z8 = (1.3cw, .2mb*ch); penpos8(thin, 180);
404         penlabels(1, 2, 3, 4, 5, 6, 7, 8);
405         pickup pencircle scaled 0.001pt;
406         filldraw (0, 0)--(0, thin)--(sw, thin)--(sw, ch-thin)
407                 --(sw+thick, ch-thin)--(sw+thick, thin)
408                 --(2sw+thick, thin)--(2sw+thick, 0)--cycle;
409         penstroke z1e--z2e{right}..z3e..z4e{left}--z5e;
410         penstroke z4e{right}..z6e{down}..z7e{right}..z8e{up};
411         currentpicture := currentpicture shifted (-w/2, -shy*h);
412         currentpicture := currentpicture shifted (0, r);
413 fet_endchar;