+ labels (5, 6);
+
+ draw_gridline (z5, z6, stemwidth);
+
+ remember_pic := currentpicture;
+
+ draw_staff (-2, 2, 0);
+fet_endchar;
+
+
+draw_shifted_too;
+
+
+fet_beginchar ("Sharp (3 beams)", "sharp.slashslashslash.stemstem");
+ save stem, stemx, stemwidth;
+ save outer_space, interbeam;
+ save sharp_beamheight;
+
+ sharp_beamheight# := 0.22 staff_space# + stafflinethickness#;
+
+ stemwidth# := stafflinethickness# + .05 staff_space#;
+ define_whole_blacker_pixels (stemwidth);
+
+ interbeam := 1.2 staff_space_rounded;
+
+ set_char_box (0, 1.1 staff_space#,
+ 1.5 staff_space#, 1.5 staff_space#);
+
+ stem := 7 / 16 * w;
+ stemx := hround stem;
+ outer_space := hround ((w - stemx - stemwidth) / 2);
+
+ w := 2 outer_space + stemx + stemwidth;
+ d := d - feta_space_shift;
+
+ draw_meta_sharp (.88 w, -.5 interbeam);
+ draw_meta_sharp (.88 w, -.5 interbeam + vround interbeam);
+ sharp_beamheight# := 1/.88 sharp_beamheight#;
+ draw_meta_sharp (w, 0);
+
+ pickup pencircle scaled stemwidth;
+
+ lft x5 = lft x6 = outer_space;
+ lft x7 = lft x8 = outer_space + stemx;
+ bot y5 = -d;
+ top y6 = vround (1.5 staff_space - stem * beamslope);
+ bot y7 = -top y6 + feta_space_shift;
+ top y8 = h;
+
+ labels (5, 6, 7, 8);
+
+ draw_gridline (z5, z6, stemwidth);
+ draw_gridline (z7, z8, stemwidth);
+
+ remember_pic := currentpicture;
+
+ draw_staff (-2, 2, 0);
+fet_endchar;
+
+
+draw_shifted_too;
+
+
+fet_beginchar ("1/2 Sharp (3 beams)", "sharp.slashslashslash.stem");
+ save stem, stemx, stemwidth;
+ save outer_space, interbeam;
+ save sharp_beamheight;
+
+ sharp_beamheight# := 0.22 staff_space# + stafflinethickness#;
+
+ stemwidth# := stafflinethickness# + .05 staff_space#;
+ define_whole_blacker_pixels (stemwidth);
+
+ interbeam := 1.2 staff_space_rounded;
+
+ set_char_box (0, 0.95 staff_space#,
+ 1.3 staff_space#, 1.3 staff_space#);
+
+ stem := 7 / 16 * w;
+ outer_space := hround ((w - stemwidth) / 2);
+
+ w := 2 outer_space + stemwidth;
+ d := d - feta_space_shift;
+
+ draw_meta_sharp (.8 w, -.5 interbeam);
+ draw_meta_sharp (.8 w, -.5 interbeam + vround interbeam);
+ sharp_beamheight# := 1/.8 sharp_beamheight#;
+ draw_meta_sharp (w, 0);
+
+ pickup pencircle scaled stemwidth;
+
+ lft x5 = lft x6 = outer_space;
+ top y6 = vround (1.5 staff_space - .5 stem);
+ bot y5 = -top y6 + feta_space_shift;
+ labels (5, 6);
+
+ draw_gridline (z5, z6, stemwidth);
+
+ remember_pic := currentpicture;
+
+ draw_staff (-2, 2, 0);
+fet_endchar;
+
+
+draw_shifted_too;
+
+
+fet_beginchar ("3/4 Sharp", "sharp.slashslash.stemstemstem");
+ save stem, stemx, stemwidth;
+ save outer_space, interbeam;
+
+ stemwidth# := stafflinethickness# + .05 staff_space#;
+ define_whole_blacker_pixels (stemwidth);
+
+ interbeam := 1.05 staff_space_rounded;
+
+ set_char_box (0, 1.6 staff_space#,
+ 1.5 staff_space#, 1.5 staff_space#);
+
+ stem := 9 / 32 * w;
+ stemx := hround stem;
+ outer_space := hround ((w - 2 stemx - stemwidth) / 2);
+
+ w := 2 outer_space + 2 stemx + stemwidth;
+ d := d - feta_space_shift;
+
+ draw_meta_sharp (w, -.5 interbeam);
+ draw_meta_sharp (w, -.5 interbeam + vround interbeam);
+
+ pickup pencircle scaled stemwidth;
+
+ lft x5 = lft x6 = outer_space;
+ lft x7 = lft x8 = outer_space + stemx;
+ lft x9 = lft x10 = outer_space + 2 stemx;
+ bot y5 = -d;
+ top y6 = vround (1.5 staff_space - 2 stem * beamslope);
+ bot y9 = -top y6 + feta_space_shift;
+ top y10 = h;
+ y7 = .5 [y5, y9];
+ y8 = .5 [y6, y10];
+
+ labels (5, 6, 7, 8, 9, 10);
+
+ draw_gridline (z5, z6, stemwidth);
+ draw_gridline (z7, z8, stemwidth);
+ draw_gridline (z9, z10, stemwidth);
+
+ remember_pic := currentpicture;
+
+ draw_staff (-2, 2, 0);
+fet_endchar;
+
+
+draw_shifted_too;
+
+
+%
+% The stems of the natural are brushed (at least, in Barenreiter SCS)
+%
+
+fet_beginchar ("Natural", "natural");
+ save stemwidth, top_stem_thick;
+ save ne, pat_top, pat_bottom;
+ pair ne;
+ path pat_top, pat_bottom;
+
+ top_stem_thick# = stafflinethickness# + .10 staff_space#;
+ stemwidth# = 0.09 staff_space# + .5 stafflinethickness#;
+ define_whole_blacker_pixels (top_stem_thick, stemwidth);
+
+ set_char_box (0, 2/3 staff_space#,
+ 1.5 staff_space#, 1.5 staff_space#);
+
+ d := d - feta_space_shift;
+
+ pickup pencircle scaled stemwidth;
+
+ penpos1 (top_stem_thick, 0);
+ penpos3 (top_stem_thick, 0);
+ penpos2 (stemwidth, 0);
+ penpos4 (stemwidth, 0);
+
+ x2r = w;
+ x4l = 0;
+ x3 = x2;
+ x1 = x4;
+
+ y1 = h;
+ y3 = -d;
+ top y2 = vround (staff_space - 3/2 stafflinethickness);
+ y4 = -y2 + feta_space_shift;
+
+ pat_bottom := z4r{z4r - z1r}
+ .. bot z4
+ .. z4l{z1l - z4l};
+ fill simple_serif (z1l, z1r, -30)
+ -- pat_bottom
+ -- cycle;
+
+ pat_top := z2r{z2r - z3r}
+ .. top z2
+ .. z2l{z3l - z2l};
+ fill simple_serif (z3l, z3r, 30)
+ -- pat_top
+ -- cycle;
+
+ ne = (x2 - x4, stafflinethickness);
+
+ z11' = z3l + whatever * (z2l - z3l);
+ y11' = vround (.5 (staff_space - stafflinethickness));
+ z11 = z11' + whatever * ne;
+ x11 = x12;
+ z12 = directionpoint -ne of pat_top;
+ z13 = z12 + whatever * ne;
+ x13 = x1;
+ z14 = z11 + whatever * ne;
+ x14 = x1;
+
+ z21' = z4r + whatever * (z1r - z4r);
+ y21' = -y11' + feta_space_shift;
+ z21 = z21' + whatever * ne;
+ x21 = x22;
+ z22 = directionpoint -ne of pat_bottom;
+ z23 = z22 + whatever * ne;
+ x23 = x3;
+ z24 = z21 + whatever * ne;
+ x24 = x3;
+
+ fill z11
+ -- z12
+ -- z13
+ -- z14
+ -- cycle;
+ fill z21
+ -- z22
+ -- z23
+ -- z24
+ -- cycle;
+
+ penlabels (1, 2, 3, 4);
+ labels (11, 11', 12, 13, 14, 21, 21', 22, 23, 24);
+
+ remember_pic := currentpicture;
+
+ draw_staff (-2, 2, 0);
+fet_endchar;
+
+
+draw_shifted_too;