]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-accordion.mf
patch::: 1.1.41.tca1
[lilypond.git] / mf / feta-accordion.mf
1 % -*- Fundamental -*-
2
3 accreg_dot_size# := .6interline#;
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.0interline#;
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
15 fet_beginchar("accDiscant", "accDiscant", "accDiscant")
16         save r, sx;
17         r# = 3/2accreg_lh#;
18         define_pixels(r);
19 %       set_char_box(r#, r#, 2r#, 0);
20         set_char_box(r#, r#, 0r#, 2r#); %% arg3 = under linjen, arg4 = over
21         pickup accreg_pen;
22         draw fullcircle scaled 2r;
23         sx = cosd(19.471221);
24         draw (-sx*r, r/3)--(sx*r, r/3);
25         draw (-sx*r, -r/3)--(sx*r, -r/3);
26         currentpicture := currentpicture shifted (0, r);
27 fet_endchar;
28
29 fet_beginchar("accDot", "accDot", "accDot")
30         set_char_box(accreg_dot_size#, accreg_dot_size#, 0, 0);
31         pickup pencircle scaled accreg_dot_size;
32         draw(0, 0);
33 fet_endchar;
34
35 fet_beginchar("accFreebase", "accFreebase", "accFreebase")
36         save r;
37         r#= accreg_lh#;
38         define_pixels(r);
39         set_char_box(r#, r#, 0, 2r#);
40         pickup accreg_pen;
41         draw fullcircle scaled 2r;
42         draw (-r, 0)--(r, 0);
43         currentpicture := currentpicture shifted (0, r);
44 fet_endchar;
45
46 fet_beginchar("accStdbase", "accStdbase", "accStdbase")
47         save r, sx;
48         r# = 2accreg_lh#;
49         define_pixels(r);
50         sx = cosd 30 ;
51         set_char_box(r#, r#, 0, 2r#);
52         pickup accreg_pen;
53         draw fullcircle scaled 2r;
54         draw (-r, 0)--(r, 0);
55         draw (-sx*r, r/2)--(sx*r, r/2);
56         draw (-sx*r, -r/2)--(sx*r, -r/2);
57         currentpicture := currentpicture shifted (0, r);
58 fet_endchar;
59
60 fet_beginchar("accBayanbase", "accBayanbase", "accBayanbase")
61         save lh;
62         lh = accreg_lh;
63 %       set_char_box(accreg_lh#, accreg_lh#, 3accreg_lh#, 0);
64         set_char_box(accreg_lh#, accreg_lh#, 0, 3accreg_lh#);
65         pickup pencircle scaled accreg_linethickness;
66         draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--(0, 0);
67         draw (0, accreg_lh)--(2w, accreg_lh);
68         draw (0, 2accreg_lh)--(2w, 2accreg_lh);
69         currentpicture := currentpicture shifted (-w, 0);% -3lh);
70 fet_endchar;
71
72 def def_B(expr w, h) = 
73         pickup pencircle scaled 0.1pt;
74         penpos10(thin, -90);
75         penpos11(thin, -90);
76         penpos12(thick, 0);
77         penpos13(thin, 90);
78         penpos14(thin, 90);
79         penpos15(thick, 180);
80         penpos16(thin, -90);
81         penpos17(thin, -90);
82         penpos18(thick, 0);
83         penpos19(thick, 0);
84         z10 = (0, 0);
85         z11 = (cOne*w, 0);
86         z12 = (w, .5mb*h);
87         z13 = (cTwo*w, mb*h);
88         z14 = (2thick, mb*h);
89         z15 = (.94w, h-.5mt*h);
90         z16 = z13 + (0, mt*h);
91         z17 = (0, h);
92         z18 = (1.5thick, 0);
93         z19 = (1.5thick, h);
94 enddef;
95
96 def def_S(expr w, h) =
97         pickup pencircle scaled 0.02pt;
98         penpos1(thin, 180);
99         penpos2(thin, -90);
100         penpos3(thick, 0);
101         penpos4(.5thick, 90);
102         penpos5(thick, 0);
103         penpos6(thin, -90);
104         penpos7(thin, 180);
105         penpos8(thin, 180);
106         penpos9(thin, 0);
107         z1 = (0, hs);
108         z2 = (w/2, 0);
109         z3 = (w-.5thick, .5mb*h);
110         z4 = (w/2, mb*h);
111         z5 = (.5thick, h-.5mt*h);
112         z6 = (w/2, h);
113         z7 = (w, h-hs);
114         z8 = (0, y2r);
115         z9 = (w, y6l);
116         path bue, bueoverst;
117         bue=z2{left}..z1{up};
118         numeric t;
119         t:=xpart(bue intersectiontimes(z8l--z7l));
120         show t;
121         bueoverst=z6{right}..z7{down};
122 enddef;
123
124 def def_some_vars =
125         save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
126         width = .8staffsize;
127         height = 2.4interline;
128         thin = 0.05interline;
129         thick = 0.2interline;
130         hs = 0.4interline;
131         mb = .53;
132         mt = .47;       
133         cOne = 0.65;
134         cTwo = 0.60;
135 enddef;
136
137 fet_beginchar("accSB", "accSB", "accSB")
138         set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
139         def_some_vars;
140         def_B(.35width, .7height);
141         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
142         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
143         penstroke z18e--z19e;
144         pickup pencircle scaled .5thick;
145         drawdot (.37width, .10thick);
146         currentpicture := currentpicture shifted(.40width, 0);
147
148         def_S(.35width, .7height);
149 %       penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
150         filldraw z1r--z8r--z8l--subpath(t, 1) of bue--cycle;
151         filldraw subpath(t, 1) of bueoverst--z7l--z9r--z9l--cycle;
152         penstroke z1e{down}..z2e{right}..z3e
153                 ..z4e
154                 ..z5e..z6e{right}...z7e{down};
155         pickup pencircle scaled .5thick;
156         drawdot (.37width, .10thick);
157         currentpicture := currentpicture shifted (-.40width, -.85height);
158         draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
159                 --(-.5width, -height)--(-.5width, 0);
160         currentpicture := currentpicture shifted (0, 2.4interline);
161 fet_endchar;
162
163 fet_beginchar("accBB", "accBB", "accBB")
164         set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
165         def_some_vars;
166         def_B(.35width, .7height);
167         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
168         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
169         penstroke z18e--z19e;
170         pickup pencircle scaled .5thick;
171         drawdot(.37width, .10thick);
172         currentpicture := currentpicture shifted (.40width, 0);
173         penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
174         penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
175         penstroke z18e--z19e;
176         drawdot(.37width, .10thick);
177         currentpicture := currentpicture shifted(-.40width, -.85height);
178         draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
179                 --(-.5width, -height)--(-.5width, 0);
180         currentpicture := currentpicture shifted (0, 2.4interline);
181 fet_endchar;
182
183
184 fet_beginchar("accOldEE", "accOldEE", "accOldEE")
185         set_char_box(interline#, interline#, 0, 2interline#);
186         show w;
187         show h;
188         r = interline;
189         lr = .3interline;
190         ir = .6interline;
191         pickup accreg_pen;
192         draw fullcircle scaled 2r;
193         pickup penrazor;
194         filldraw fullcircle scaled lr;
195         z1 = (ir, 0);
196         z2 = (0, 0) + ir*(dir 45);
197         z3 = (0, ir);
198         numeric pp;
199         for pp := 0 step 45 until 360:
200                 filldraw fullcircle scaled lr shifted (ir*(dir pp));
201         endfor;
202         for pp := 0 step 45 until 360:
203                 filldraw ((0, 0)--(.2lr, ir)--(-.2lr, ir)--cycle) rotated pp;
204         endfor
205         currentpicture := currentpicture shifted (0, r);
206 fet_endchar;
207
208 fet_beginchar("accOldEES", "accOldEES", "accOldEES")
209         set_char_box(interline#, interline#, 0, 2interline#);
210         save r, shy;
211         r = interline;
212         shy = .3;
213         pickup accreg_pen;
214         draw fullcircle scaled 2r;
215         currentpicture := currentpicture shifted (w/2, shy*h);
216         save thin, thick, sw, ch, cw, mb, mt;
217         ch = .6h;
218         cw = .8w;
219         thin = .05cw;
220         thick = .17w;
221         mb = .53; mt = .47;
222         sw = .8thick;
223         z1 = (0, ch-.5thin); penpos1 (thin, -90);
224         z2 = (.7cw, y1); penpos2 (thin, -90);
225         z3 = (cw, (mb+.5mt)*ch); penpos3(thick, -180);
226         z4 = (.65cw, mb*ch); penpos4(thin, 90);
227         z5 = (sw+thick, mb*ch); penpos5(thin, 90);
228         z6 = (.9cw, .5mb*ch); penpos6(thick, 0);
229         z7 = (1.2cw, 0); penpos7(thin, 90);
230         z8 = (1.3cw, .2mb*ch); penpos8(thin, 180);
231         penlabels(1, 2, 3, 4, 5, 6, 7, 8);
232         pickup pencircle scaled 0.001pt;
233         filldraw (0, 0)--(0, thin)--(sw, thin)--(sw, ch-thin)
234                 --(sw+thick, ch-thin)--(sw+thick, thin)
235                 --(2sw+thick, thin)--(2sw+thick, 0)--cycle;
236         penstroke z1e--z2e{right}..z3e..z4e{left}--z5e;
237         penstroke z4e{right}..z6e{down}..z7e{right}..z8e{up};
238         currentpicture := currentpicture shifted (-w/2, -shy*h);
239         currentpicture := currentpicture shifted (0, r);
240 fet_endchar;