save block_rest_y, block_rest_x;
+save breve_rest_y, breve_rest_x;
+
+breve_rest_y# = staff_space#;
+breve_rest_x# = 3/5 staff_space#;
block_rest_y# = 5/8 staff_space#;
block_rest_x# = 3/2 staff_space#;
fet_endchar;
-save breve_rest_y, breve_rest_x;
-
-breve_rest_y# = staff_space#;
-breve_rest_x# = 3/5 staff_space#;
-multi_rest_x# = 4 staff_space#;
-multi_beam_height# = 1/3 staff_space#;
define_pixels(breve_rest_y, breve_rest_x, multi_rest_x, multi_beam_height);
-fet_beginchar("breve rest", "-1", "breverest");
- set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
- draw_block ((0,0), (breve_rest_x, breve_rest_y));
-fet_endchar;
fet_beginchar("longa rest", "-2", "longarest");
set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
- draw_block ((0,-breve_rest_y), (breve_rest_x, breve_rest_y));
+ draw_block ((0,-floor (breve_rest_y)), (breve_rest_x, floor (breve_rest_y)));
fet_endchar;
-tracingvariables := 1;
-
-fet_beginchar("multi rest", "-4", "multirest");
- set_char_box(multi_rest_x#, multi_rest_x#,
- breve_rest_y#, breve_rest_y#);
- draw_block ((- b, - multi_beam_height),
- (w, multi_beam_height));
- draw_block ((- b,-breve_rest_y),
- (rthin - b, breve_rest_y));
- draw_block ((w - rthin,-breve_rest_y),
- (w, breve_rest_y));
+fet_beginchar("breve rest", "-1", "breverest");
+ set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
+ draw_block ((0,0), (breve_rest_x, floor (breve_rest_y)));
fet_endchar;
+tracingvariables := 1;
+
fet_beginchar("Quarter rest","2","quartrest");
% draw_staff (-2, 2, 0.0);
save alpha, yshift, height;
yshift# = -1.25 staff_space#;
height# = 2.8125 staff_space#;
define_pixels (yshift, height);
-
+ save xcenter;
+ xcenter = -0.1 staff_space;
- set_char_box(0, 27/25staff_space#,
+ set_char_box(0, 0.95 staff_space#,
-yshift#,
yshift# + height#);
z13=z2r+1/2rthin*ne+1/2rthin*nw;
y1r = h;
- x1l=1/3staff_space;
+ x1l=xcenter + 1/3staff_space;
z2r=z1+staff_space*se;
z3=1/2[z2,z4];
- x4=3/8staff_space;
+ x4= xcenter + 3/8staff_space;
y4= 0;
z5=z4l+1.3staff_space*se;
x6l=x4l;
y6l=y4r;
- x7=2/5staff_space;
+ x7= xcenter + 2/5staff_space;
y7= -d;
fill z1l{se}..{se}z10..z3l..z11{se}..{se}z5l..z5r{nw}..{nw}z12..z3r..z13{nw}..{nw}z1r.. cycle;
enddef;
%
+% Notes about 8th rest:
+%
+% * 8th rest should be no wider than the black note head
+%
+% * The inside corner of the horizontal portion is usually a little blotted.
+%
+% * The top of the crook chops off the vertical brush
+%
+% * The crook widens a little
+%
+% * The bottom of the brush is slightly flat, as it has to align with
+% stafflines if it is inside the staff.
%
-% todo: document rest.
+% * The top of the brush usually is a little lower than the top of bulb.
%
+% * The bulb can vary. Sometimes it is open (like in the clefs). Sometimes
+% it is closed, or even a flare.
+%
def normalize (expr p) =
(p / length (p))
width# := 1.0 staff_space#;
- bulb_diam# := 0.6 staff_space#;
+ bulb_diam# := 0.64 staff_space#;
thin# := 1.1 stafflinethickness#;
thick# := 2.2 stafflinethickness#;
crook_thick# := 1.8 stafflinethickness#;
crook_thin := 1.3 stafflinethickness;
- lower_brush = 1.0 stafflinethickness;
+ lower_brush = 1.5 stafflinethickness;
ycenter := 0.5 staff_space;
define_pixels (width, bulb_diam, thin, thick, crook_thick);
y1 = ycenter + - 1.5 staff_space ;
% y9 = y5 - lower_brush;
- y2 = y5 - 0.7 stafflinethickness;
+ y2 = y5 - lower_brush;
x2r = width;
- y3 - y2l = 0.25 staff_space;
+
x2r - x1 = 0.5 staff_space;
- x3 = x1l ;
+ x3 = x1l - 0.045 staff_space ;
x4 = 1.02 bulb_diam ;
- y4 = ycenter - 2 stafflinethickness + crook_thin;
+ y4 := ceiling (ycenter - 2 stafflinethickness + crook_thin);
- x5 = 0.5 bulb_diam;
+ x5 = 0.5 bulb_diam - 0.25 stafflinethickness;
y5 = ycenter +bulb_diam/2;
z9 = z2 + 0.46 stafflinethickness * dir (angle(z2 - z1)- 10);
- z7 = (bulb_diam/2,ycenter) + 0.26 staff_space * dir ( 35);
- z8 = (0, ycenter);
+% z7 = %(bulb_diam/2,ycenter) + 0.23 staff_space * dir ( 35);
+ z7 = 0.5 [z4, z5] + (0.45 stafflinethickness,0.4 stafflinethickness);
+ x8 = 0;
+ y8 = ycenter + 0.25 stafflinethickness;
z6 = whatever [z1l, z2l];
z6 = whatever [z2l, z4] + crook_thick * (crook_dir rotated -90);
crook_dir = normalize(z2l - z4);
- y3 := ycenter +floor (- bulb_diam/2);
+ y3 := ycenter +floor (- 0.45 bulb_diam);
penlabels (1, 2);
fill z2r -- z2l -- simple_serif (z1l, z1r, 40) -- cycle;
fill z2r{z2r-z1r} .. z9 .. z2l{dir(232)} .. tension 2
- .. z4{left} .. z7{dir(90 + 25)}
+ .. z4{left} .. tension 0.9 .. z7 %{dir(90 + 25)}
.. z5{left} .. z8 .. z3{right}
.. {curl 0.2}z6 -- cycle;
+% draw_staff (-2,2,0.0);
enddef;
draw_block ((0,0), (neomens_block_rest_x, neomens_half_block_rest_y));
enddef;
+fet_beginchar("Neo-mensural maxima rest", "-3neo_mensural", "neomensmaximarest");
+ set_char_box(0, neomens_block_rest_x#,
+ neomens_block_rest_y#, 2 neomens_block_rest_y#);
+ draw_block ((0,-neomens_block_rest_y),
+ (neomens_block_rest_x, 2 neomens_block_rest_y));
+fet_endchar;
+
fet_beginchar("Neo-mensural longa rest", "-2neo_mensural", "neomenslongarest");
set_char_box(0, neomens_block_rest_x#,
neomens_block_rest_y#, neomens_block_rest_y#);