2 % part of LilyPond's pretty-but-neat music font
3 % third try at bolletjes
4 % most beautiful bolletjes are not circular, and not even symmetric.
6 interline#:=staffsize#/(stafflines-1)+stafflinethickness#;
10 proofrulethickness 1pt#;
11 makegrid(0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor)
12 (0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor);
13 proofrulethickness .1pt#;
14 makegrid(0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor)
15 (0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor);
21 % err_x: drift of y axis at top
22 % err_y: drift of x axis at right
23 def distorted_ellipse(expr a,b,err_y,err_x,super) =
24 superellipse((a,err_x),(-err_y,b),(-a,-err_x),(err_y,-b),super);
29 save a_b,err_y_a,alpha,super;
30 save ai_a,ai_bi,err_y_ai,err_x_bi,alphai,superi;
34 def end_notehead(expr code,interline,name,id,texstr) =
45 fet_beginchar(code,w#,h#,0,name,id,texstr);
47 black=distorted_ellipse(a,b,a*err_y_a,0,super);
48 white=distorted_ellipse(ai,bi,ai*err_y_ai,bi*err_x_bi,superi);
51 x1=-x3=a; x2=x4=0; y1=y3=0; y2=-y4=b;
55 black:=black rotated alpha;
56 % black:=black shifted (w/2,h/2);
57 black:=black shifted (w/2,0);
58 white:=white rotated alphai;
59 % white:=white shifted (w/2,h/2);
60 white:=white shifted (w/2,0);
68 % fet_begingroup("noteheads");
69 fet_begingroup("balls");
72 % begin_notehead(incr code,interline#,"Whole notehead");
75 err_y_a:=0; % no slant
86 b_h:=1; %no rotate-> no height correction
87 a_w:=1; % no rotate-> no width correction
88 end_notehead(incr code,interline#,"Whole notehead","0","wholeball");
93 a_b:=1.49; % after text
94 % a_b:=1.50; % after drawing
106 end_notehead(incr code,interline#,"Half notehead","1","halfball");
111 a_b:=1.57; % after text
112 % a_b:=1.54; % after drawing
124 end_notehead(incr code,interline#,"Quarter notehead","2","quartball");
126 % silly tableXX.ly fillers, for now
127 fet_beginchar(incr code,2interline#,interline#,0,"Longa notehead","-2","longaball");
129 fet_beginchar(incr code,2interline#,interline#,0,"Brevis notehead","-1","breveball");
132 fet_endgroup("noteheads");