]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-eindelijk.mf
patch::: 0.1.22.jcn1: rust
[lilypond.git] / mf / feta-eindelijk.mf
1 % eindelijk.mf
2 % LilyPond's own rest(s)
3
4 % todo breve/longa rests
5
6
7 fet_begingroup("rests");
8
9 begingroup
10
11 med#:=1/33designsize;
12 thick#:=1/16designsize;
13 define_blacker_pixels(med,thick);
14 pen med_pen;
15 med_pen:= pencircle scaled med;
16
17 rthin:=1/8*interline;
18 % rthick:=2rthin;
19 rthick:=2thick+rthin;
20
21 def shift_pic (expr pone, ptwo) =
22   currentpicture:=currentpicture shifted (round(pone),round(ptwo))
23 enddef;
24
25 % stuff for     8th,16th etc rests
26 %
27 save stem, ball_crook_stem, ball_crook_balldiam, flare;
28
29 define_pixels(stem,flare);
30 % stem#:=1/8*interline#;
31 stem# = 1/5interline#;
32 ball_crook_stem = stem;
33 ball_crook_balldiam =flare;
34 flare# = 2/3interline#;
35
36 save block_rest_y, block_rest_x;
37
38 block_rest_y# = 5/8 interline#;
39 block_rest_x# = 3/2 interline#;
40
41 define_pixels(block_rest_y, block_rest_x);
42
43 def block_rest=
44         pickup pencircle scaled blot_diameter;
45
46         bot y1 = 0;
47         top y2 = block_rest_y;
48         y3 = y2;
49         y4 = y1;
50
51         rt x1 = block_rest_x;
52         x2 = x1;
53         lft x3 = 0;
54         x4 = x3;
55         save p;
56         path p;
57         p:=z1 -- z2 -- z3 -- z4 -- cycle;
58         draw_rounded_path(p, blot_diameter);
59 enddef;
60
61 fet_beginchar( "whole rest", "0", "wholerest");
62 set_char_box(0, block_rest_x#, -interline# + block_rest_y#,  interline# );
63         block_rest;
64         currentpicture := currentpicture shifted (0,interline - block_rest_y);
65 fet_endchar;
66
67 fet_beginchar("half rest", "1", "halfrest");
68         set_char_box(0, block_rest_x#, 0, block_rest_y#);
69         block_rest;
70 fet_endchar;
71
72
73 %
74 % should use ledgerline thickness?
75 %
76 fet_beginchar( "whole rest (outside staff)", "0o", "outsidewholerest");
77         set_char_box(block_rest_y#, block_rest_x# + block_rest_y#, 
78                 -interline# + block_rest_y#, interline#);
79         block_rest;
80         currentpicture := currentpicture shifted (0,interline - block_rest_y);
81         pickup pencircle scaled ledgerlinethickness;
82         draw (-block_rest_y, interline) 
83              .. (block_rest_x + block_rest_y, interline);
84 fet_endchar;
85
86 fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
87         set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#, 
88                 0, block_rest_y#);
89         block_rest;
90         pickup pencircle scaled ledgerlinethickness;
91         draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0);
92 fet_endchar;
93
94 fet_beginchar("Quarter rest","2","quartrest");
95         save alpha;
96         alpha:=-50;
97         save ne,nw,se,sw; pair ne,nw,se,sw;
98         se=dir alpha; nw=dir (alpha+180);
99         ne=dir (alpha+90); sw=dir (alpha-90);
100         penpos1(rthin,alpha+90);
101         penpos2(5/4rthick,alpha);
102         penpos4(5/4rthick,alpha);
103         penpos5(rthin,alpha+90);
104         penpos3(3/4rthick,alpha);
105 %       penpos6(5/8rthick,alpha);
106         penpos6(2/3rthick,alpha);
107         penpos7(1/2rthin,alpha+90);
108
109         z10=z2l+1/2rthin*sw;
110 %       z11=z4l+1/2rthin*sw;
111         z11=z4l+1/2rthin*sw+1/2rthin*se;
112         z12=z4r+1/2rthin*ne;
113 %       z13=z2r+1/2rthin*ne;
114         z13=z2r+1/2rthin*ne+1/2rthin*nw;
115
116         y1l=7/2interline; x1l=1/3interline;
117         z2r=z1+interline*se;
118         z3=1/2[z2,z4];
119         x4=3/8interline; y4=2interline;
120         z5=z4l+1.3interline*se;
121         x6l=x4l; y6l=y4r;
122         x7=2/5interline; y7=3/4interline;
123         fill z1l{se}..{se}z10..z3l..z11{se}..{se}z5l..z5r{nw}..{nw}z12..z3r..z13{nw}..{nw}z1r.. cycle;
124         fill z5r{nw}..tension1.4..z6l..tension1.4..{se}z7l..z7r{nw}..tension1.4..z6r..tension1.4..{se}z5l..cycle;
125         penlabels(1,2,3,4,5,6,7);
126         penlabels(10,11,12,13);
127         set_char_box(0, 27/25interline#, -3/4 interline#, 18/5interline#);
128         fet_endchar;
129
130 def rest_crook(expr a, w) =
131         balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
132 enddef;
133
134 fet_beginchar("8th rest","3","eighthrest");
135         set_char_box(0, 4/3interline#,-interline#, 8/3interline#+2stafflinethickness#);
136         save x,y, ht;
137         ht = h + d;
138         x1=w-stem/6; y1=ht-flare/4;
139         rest_crook (z1,w-stem/6);
140         z2-z1=whatever*dir70;
141         y2=stem/2;
142         brush(z1,2/3stem,z2,stem);
143         % ugh
144         currentpicture:=currentpicture shifted (0,interline);
145         fet_endchar;
146
147 def tand(expr alpha) = 
148         (sind alpha/cosd alpha);
149         enddef;
150
151 fet_beginchar("16th rest","4","sixteenthrest");
152         save alpha,cw,h,w;
153         alpha=74;
154         cw#=7/6interline#;
155         h#=5/3interline#+interline#+2stafflinethickness#;
156         w#=cw#+(h#-3/2interline#)/tand(alpha);
157         set_char_box(0,w#,0,h#);
158         define_pixels(cw);
159         save x,y;
160         x1=w-stem/6; y1=h-flare/4;
161         z2-z1=whatever*dir alpha;
162         y2=stem/2;
163         brush(z1,2/3stem,z2,stem);
164         rest_crook (z1,cw);
165         z3-z1=whatever*dir alpha;
166         y3=y1-interline;
167         rest_crook (z3,cw);
168         penlabels(1,2);
169         fet_endchar;
170
171 fet_beginchar("32th rest","5","thirtysecondrest");
172         save alpha,cw,h,w;
173         alpha=76;
174         cw#=7/6interline#;
175         h#=5/3interline#+2interline#+2stafflinethickness#;
176         w#=cw#+(h#-3/2interline#)/tand(alpha);
177         set_char_box(0,w#,0,h#);
178         define_pixels(cw);
179         save x,y;
180         x1=w-stem/6; y1=h-flare/4;
181         z2-z1=whatever*dir alpha;
182         y2=stem/2;
183         brush(z1,2/3stem,z2,stem);
184         rest_crook (z1,cw);
185         z3-z1=whatever*dir alpha;
186         y3=y1-interline;
187         rest_crook (z3,cw);
188         z4-z1=whatever*dir alpha;
189         y4=y1-2interline;
190         rest_crook (z4,cw);
191         fet_endchar;
192
193 fet_beginchar("64th rest","6","sixtyfourthrest");
194         save alpha,cw,h,w;
195         alpha=78;
196         cw#=7/6interline#;
197         h#=5/3interline#+3interline#+2stafflinethickness#;
198         w#=cw#+(h#-3/2interline#)/tand(alpha);
199         set_char_box(0,w#,0,h#);
200         define_pixels(cw);
201         save x,y;
202         x1=w-stem/6; y1=h-flare/4;
203         z2-z1=whatever*dir alpha;
204         y2=stem/2;
205         brush (z1,2/3stem,z2,stem);
206         rest_crook (z1,cw);
207         z3-z1=whatever*dir alpha;
208         y3=y1-interline;
209         rest_crook (z3,cw);
210         z4-z1=whatever*dir alpha;
211         y4=y1-2interline;
212         rest_crook (z4,cw);
213         z5-z1=whatever*dir alpha;
214         y5=y1-3interline;
215         rest_crook (z5,cw);
216         fet_endchar;
217
218 fet_beginchar("128th rest","7","hundredtwentyeighthrest"); 
219         save alpha,cw,h,w;
220         alpha=78;
221         cw#=7/6interline#;
222         h#=5/3interline#+4interline#+2stafflinethickness#;
223         w#=cw#+(h#-3/2interline#)/tand(alpha);
224         set_char_box(0,w#,0,h#);
225         define_pixels(cw);
226         save x,y;
227         x1=w-stem/6; y1=h-flare/4;
228         z2-z1=whatever*dir alpha;
229         y2=stem/2;
230         brush (z1,2/3stem,z2,stem);
231         rest_crook (z1,cw);
232         z3-z1=whatever*dir alpha;
233         y3=y1-interline;
234         rest_crook (z3,cw);
235         z4-z1=whatever*dir alpha;
236         y4=y1-2interline;
237         rest_crook (z4,cw);
238         z5-z1=whatever*dir alpha;
239         y5=y1-3interline;
240         rest_crook (z5,cw);
241         z6-z1=whatever*dir alpha;
242         y6=y1-4interline;
243         rest_crook (z6,cw);
244         fet_endchar;
245
246 endgroup;
247 fet_endgroup("rests");
248