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