2 % LilyPond's own rest(s)
4 % todo breve/longa rests
7 fet_begingroup("rests");
12 thick#:=1/16designsize;
13 define_blacker_pixels(med,thick);
15 med_pen:= pencircle scaled med;
21 def shift_pic (expr pone, ptwo) =
22 currentpicture:=currentpicture shifted (round(pone),round(ptwo))
25 % stuff for 8th,16th etc rests
27 save stem, ball_crook_stem, ball_crook_balldiam, flare;
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#;
36 save block_rest_y, block_rest_x;
38 block_rest_y# = 5/8 interline#;
39 block_rest_x# = 3/2 interline#;
41 define_pixels(block_rest_y, block_rest_x);
44 pickup pencircle scaled blot_diameter;
47 top y2 = block_rest_y;
57 p:=z1 -- z2 -- z3 -- z4 -- cycle;
58 draw_rounded_path(p, blot_diameter);
61 fet_beginchar( "whole rest", "0", "wholerest");
62 set_char_box(0, block_rest_x#, -interline# + block_rest_y#, interline# );
64 currentpicture := currentpicture shifted (0,interline - block_rest_y);
67 fet_beginchar("half rest", "1", "halfrest");
68 set_char_box(0, block_rest_x#, 0, block_rest_y#);
74 % should use ledgerline thickness?
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#);
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);
86 fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
87 set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#,
90 pickup pencircle scaled ledgerlinethickness;
91 draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0);
94 fet_beginchar("Quarter rest","2","quartrest");
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);
110 % z11=z4l+1/2rthin*sw;
111 z11=z4l+1/2rthin*sw+1/2rthin*se;
113 % z13=z2r+1/2rthin*ne;
114 z13=z2r+1/2rthin*ne+1/2rthin*nw;
116 y1l=7/2interline; x1l=1/3interline;
119 x4=3/8interline; y4=2interline;
120 z5=z4l+1.3interline*se;
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#);
130 def rest_crook(expr a, w) =
131 balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
134 fet_beginchar("8th rest","3","eighthrest");
135 set_char_box(0, 4/3interline#,-interline#, 8/3interline#+2stafflinethickness#);
138 x1=w-stem/6; y1=ht-flare/4;
139 rest_crook (z1,w-stem/6);
140 z2-z1=whatever*dir70;
142 brush(z1,2/3stem,z2,stem);
144 currentpicture:=currentpicture shifted (0,interline);
147 def tand(expr alpha) =
148 (sind alpha/cosd alpha);
151 fet_beginchar("16th rest","4","sixteenthrest");
155 h#=5/3interline#+interline#+2stafflinethickness#;
156 w#=cw#+(h#-3/2interline#)/tand(alpha);
157 set_char_box(0,w#,0,h#);
160 x1=w-stem/6; y1=h-flare/4;
161 z2-z1=whatever*dir alpha;
163 brush(z1,2/3stem,z2,stem);
165 z3-z1=whatever*dir alpha;
171 fet_beginchar("32th rest","5","thirtysecondrest");
175 h#=5/3interline#+2interline#+2stafflinethickness#;
176 w#=cw#+(h#-3/2interline#)/tand(alpha);
177 set_char_box(0,w#,0,h#);
180 x1=w-stem/6; y1=h-flare/4;
181 z2-z1=whatever*dir alpha;
183 brush(z1,2/3stem,z2,stem);
185 z3-z1=whatever*dir alpha;
188 z4-z1=whatever*dir alpha;
193 fet_beginchar("64th rest","6","sixtyfourthrest");
197 h#=5/3interline#+3interline#+2stafflinethickness#;
198 w#=cw#+(h#-3/2interline#)/tand(alpha);
199 set_char_box(0,w#,0,h#);
202 x1=w-stem/6; y1=h-flare/4;
203 z2-z1=whatever*dir alpha;
205 brush (z1,2/3stem,z2,stem);
207 z3-z1=whatever*dir alpha;
210 z4-z1=whatever*dir alpha;
213 z5-z1=whatever*dir alpha;
218 fet_beginchar("128th rest","7","hundredtwentyeighthrest");
222 h#=5/3interline#+4interline#+2stafflinethickness#;
223 w#=cw#+(h#-3/2interline#)/tand(alpha);
224 set_char_box(0,w#,0,h#);
227 x1=w-stem/6; y1=h-flare/4;
228 z2-z1=whatever*dir alpha;
230 brush (z1,2/3stem,z2,stem);
232 z3-z1=whatever*dir alpha;
235 z4-z1=whatever*dir alpha;
238 z5-z1=whatever*dir alpha;
241 z6-z1=whatever*dir alpha;
247 fet_endgroup("rests");