]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-accordion.mf
(direction-polyphonic-grobs): new
[lilypond.git] / mf / feta-accordion.mf
index 0a124358175b3125f99030423f66c86c9ea7c3be..9530d0c16d98d30fb9918692e6fdbcd8ebf696b7 100644 (file)
@@ -1,19 +1,20 @@
 % -*- Fundamental -*-
 
+fet_begingroup("accordion")
 
-
-accreg_dot_size# := .7interline#;
+accreg_dot_size# := .5staff_space#;
 accreg_linethickness# := 1.3stafflinethickness#;
 
 % This dimention is the same on all registersymbols.
 % The different symbols should calculate their other
 % dimensions from this and accreg_dot_size
-accreg_lh# := 1.2interline#;
+accreg_lh# := 1.0staff_space#;
 
 define_pixels(accreg_dot_size, accreg_linethickness, accreg_lh);
 pen accreg_pen;
 accreg_pen := pencircle xscaled accreg_linethickness yscaled 0.7accreg_linethickness;
-def draw_discant_reg(expr A, B, C, D, E, F) = 
+
+fet_beginchar("accDiscant", "accDiscant", "accDiscant")
        save r, sx;
        r# = 3/2accreg_lh#;
        define_pixels(r);
@@ -24,18 +25,16 @@ def draw_discant_reg(expr A, B, C, D, E, F) =
        sx = cosd(19.471221);
        draw (-sx*r, r/3)--(sx*r, r/3);
        draw (-sx*r, -r/3)--(sx*r, -r/3);
+       currentpicture := currentpicture shifted (0, r);
+fet_endchar;
 
+fet_beginchar("accDot", "accDot", "accDot")
+       set_char_box(accreg_dot_size#, accreg_dot_size#, 0, 0);
        pickup pencircle scaled accreg_dot_size;
-       if A = 1: drawdot (0, 2/3r); fi
-       if B = 1: drawdot (r/2, 0); fi
-       if C = 1: drawdot (0, 0); fi
-       if D = 1: drawdot (-r/2, 0); fi
-       if E = 1: drawdot (0, -2/3r); fi
-       if F = 1: drawdot (-.25r, -.642r); drawdot (.25r, -.642r); fi
-       currentpicture := currentpicture shifted (0, r);
-enddef;
+       draw(0, 0);
+fet_endchar;
 
-def draw_freebass_reg(expr rFour, rEight) =
+fet_beginchar("accFreebase", "accFreebase", "accFreebase")
        save r;
        r#= accreg_lh#;
        define_pixels(r);
@@ -43,13 +42,10 @@ def draw_freebass_reg(expr rFour, rEight) =
        pickup accreg_pen;
        draw fullcircle scaled 2r;
        draw (-r, 0)--(r, 0);
-       pickup pencircle scaled accreg_dot_size;
-       if rFour = 1: draw (0, r/2); fi
-       if rEight = 1: draw (0, -r/2); fi
        currentpicture := currentpicture shifted (0, r);
-enddef;
+fet_endchar;
 
-def draw_stdbass_reg(expr A, B, C, D, E) =
+fet_beginchar("accStdbase", "accStdbase", "accStdbase")
        save r, sx;
        r# = 2accreg_lh#;
        define_pixels(r);
@@ -60,195 +56,33 @@ def draw_stdbass_reg(expr A, B, C, D, E) =
        draw (-r, 0)--(r, 0);
        draw (-sx*r, r/2)--(sx*r, r/2);
        draw (-sx*r, -r/2)--(sx*r, -r/2);
-       pickup pencircle scaled accreg_dot_size;
-       if A = 1: draw (0, -3/4r); fi
-       if B = 1: draw (0, -1/4r); fi
-       if C = 1: draw (0, 1/4r); fi
-       if D = 1: draw (0, 3/4r); fi
-       if E = 1: draw (1/2r, 0); fi
        currentpicture := currentpicture shifted (0, r);
-enddef;
+fet_endchar;
 
-def draw_bayanbass_reg_sign(expr nTwo, nEight) = 
+%%% strange turning path.
+fet_beginchar("accBayanbase", "accBayanbase", "accBayanbase")
        save lh;
        lh = accreg_lh;
 %      set_char_box(accreg_lh#, accreg_lh#, 3accreg_lh#, 0);
        set_char_box(accreg_lh#, accreg_lh#, 0, 3accreg_lh#);
        pickup pencircle scaled accreg_linethickness;
-       draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--(0, 0);
+       %draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--(0, 0);
+       draw (0, 0)--(2w, 0)--(2w, 3accreg_lh)--(0, 3accreg_lh)--cycle;
        draw (0, accreg_lh)--(2w, accreg_lh);
        draw (0, 2accreg_lh)--(2w, 2accreg_lh);
-
-       pickup pencircle scaled accreg_dot_size;
-       if nTwo = 1: draw (w, 5/2lh); fi
-       if nEight = 1: draw (w, lh/2); fi
-       if nEight = 2: draw (5/8w, lh/2); draw (11/8w, lh/2); fi
        currentpicture := currentpicture shifted (-w, 0);% -3lh);
-enddef;
-
-fet_beginchar("accDiscant", "accDiscant", "accDiscant")
-       draw_discant_reg(0, 0, 0, 0, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantF", "accDiscantF", "accDiscantF")
-       draw_discant_reg(1, 0, 0, 0, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantEh", "accDiscantEh", "accDiscantEh")
-       draw_discant_reg(0, 1, 0, 0, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantE", "accDiscantE", "accDiscantE")
-       draw_discant_reg(0, 0, 1, 0, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFE", "accDiscantFE", "accDiscantFE")
-       draw_discant_reg(1, 0, 1, 0, 0, 0);
-fet_endchar;   
-
-fet_beginchar("accDiscantFEh", "accDiscantFEh", "accDiscantFEh")
-       draw_discant_reg(1, 1, 0, 0, 0, 0);
-fet_endchar;   
-
-fet_beginchar("accDiscantEE", "accDiscantEE", "accDiscantEE")
-       draw_discant_reg(0, 1, 0, 1, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFEE", "accDiscantFEE", "accDiscantFEE")
-       draw_discant_reg(1, 1, 0, 1, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantEEE", "accDiscantEEE", "accDiscantEEE")
-       draw_discant_reg(0, 1, 1, 1, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFEEE", "accDiscantFEEE", "accDiscantFEEE")
-       draw_discant_reg(1, 1, 1, 1, 0, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantS", "accDiscantS", "accDiscantS")
-       draw_discant_reg(0, 0, 0, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFS", "accDiscantFS", "accDiscantFS")
-       draw_discant_reg(1, 0, 0, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantES", "accDiscantES", "accDiscantES")
-       draw_discant_reg(0, 0, 1, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantEhS", "accDiscantEhS", "accDiscantEhS")
-       draw_discant_reg(0, 1, 0, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFES", "accDiscantFES", "accDiscantFES")
-       draw_discant_reg(1, 0, 1, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFEhS", "accDiscantFEhS", "accDiscantFEhS")
-       draw_discant_reg(1, 1, 0, 0, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantEES", "accDiscantEES", "accDiscantEES")
-       draw_discant_reg(0, 1, 0, 1, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFEES", "accDiscantFEES", "accDiscantFEES")
-       draw_discant_reg(1, 1, 0, 1, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantEEES", "accDiscantEEES", "accDiscantEEES")
-       draw_discant_reg(0, 1, 1, 1, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantFEEES", "accDiscantFEEES", "accDiscantFEEES")
-       draw_discant_reg(1, 1, 1, 1, 1, 0);
-fet_endchar;
-
-fet_beginchar("accDiscantSS", "accDiscantSS", "accDiscantSS")
-       draw_discant_reg(0, 0, 0, 0, 0, 1);
-fet_endchar;
-
-fet_beginchar("accDiscantESS", "accDiscantESS", "accDiscantESS")
-       draw_discant_reg(0, 0, 1, 0, 0, 1);
-fet_endchar;
-
-fet_beginchar("accDiscantEESS", "accDiscantEESS", "accDiscantEESS")
-       draw_discant_reg(0, 1, 0, 1, 0, 1);
-fet_endchar;
-
-fet_beginchar("accDiscantEEESS", "accDiscantEEESS", "accDiscantEEESS")
-       draw_discant_reg(0, 1, 1, 1, 0, 1);
-fet_endchar;
-
-fet_beginchar("accFreebass", "accFreebass", "accFreebass")
-       draw_freebass_reg(0, 0);
-fet_endchar;
-
-fet_beginchar("accFreebassF", "accFreebassF", "accFreebassF")
-       draw_freebass_reg(1, 0);
-fet_endchar;
-
-fet_beginchar("accFreebassE", "accFreebassE", "accFreebassE")
-       draw_freebass_reg(0, 1);
-fet_endchar;
-
-fet_beginchar("accFreebassFE", "accFreebassFE", "accFreebassFE")
-       draw_freebass_reg(1, 1);
-fet_endchar;
-
-fet_beginchar("accStdbass", "accStdbass", "accStdbass")
-       draw_stdbass_reg(0, 0, 0, 0, 0);
-fet_endchar;
-
-fet_beginchar("accStdbassM", "accStdbassM", "accStdbassM")
-       draw_stdbass_reg(1, 1, 1, 1, 1);
-fet_endchar;
-
-fet_beginchar("accStdbassBp", "accStdbassBp", "accStdbassBp")
-       draw_stdbass_reg(1, 1, 0, 0, 1);
-fet_endchar;
-
-fet_beginchar("accStdbassT", "accStdbassT", "accStdbassT")
-       draw_stdbass_reg(0, 1, 1, 1, 0);
-fet_endchar;
-
-fet_beginchar("accStdbassTp", "accStdbassTp", "accStdbassTp")
-       draw_stdbass_reg(0, 1, 1, 0, 0);
-fet_endchar;
-
-fet_beginchar("accBayanbass", "accBayanbass", "accBayanbass")
-       draw_bayanbass_reg_sign(1, 0);
-fet_endchar;
-
-fet_beginchar("accBayanbassT", "accBayanbassT", "accBayanbassT")
-       draw_bayanbass_reg_sign(1, 0);
-fet_endchar;
-
-fet_beginchar("accBayanbassE", "accBayanbassE", "accBayanbassE")
-       draw_bayanbass_reg_sign(0, 1);
-fet_endchar;
-
-fet_beginchar("accBayanbassTE", "accBayanbassTE", "accBayanbassTE")
-       draw_bayanbass_reg_sign(1, 1);
-fet_endchar;
-
-fet_beginchar("accBayanbassEE", "accBayanbassEE", "accBayanbassEE")
-       draw_bayanbass_reg_sign(0, 2);
-fet_endchar;
-
-fet_beginchar("accBayanbassTEE", "accBayanbassTEE", "accBayanbassTEE")
-       draw_bayanbass_reg_sign(1, 2);
 fet_endchar;
 
 def def_B(expr w, h) = 
-       pickup pencircle scaled 0.1pt;
+       % huh?
+       % pickup pencircle scaled 0.1pt;
+       pickup pencircle scaled 0.15stafflinethickness;
        penpos10(thin, -90);
        penpos11(thin, -90);
        penpos12(thick, 0);
        penpos13(thin, 90);
        penpos14(thin, 90);
+
        penpos15(thick, 180);
        penpos16(thin, -90);
        penpos17(thin, -90);
@@ -267,7 +101,9 @@ def def_B(expr w, h) =
 enddef;
 
 def def_S(expr w, h) =
-       pickup pencircle scaled 0.02pt;
+       % huh?
+       %pickup pencircle scaled 0.02pt;
+       pickup pencircle scaled 0.03stafflinethickness;
        penpos1(thin, 180);
        penpos2(thin, -90);
        penpos3(thick, 0);
@@ -296,118 +132,64 @@ enddef;
 
 def def_some_vars =
        save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
-       width = .8staffsize;
-       height = 2.4interline;
-       thin = 0.05interline;
-       thick = 0.2interline;
-       hs = 0.4interline;
+       width = .8(4 staff_space);
+       height = 2.4staff_space;
+       % URG.  smaller sizes should be wider and fatter
+       %thin = 0.05staff_space;
+       %thick = 0.2staff_space;
+       save bx,hx; 4hx+bx=1.15; 10hx+bx=1;
+       fatten:=designsize*hx+bx*1.2;
+       thick:= 0.2staff_space*fatten;
+       % urg: mustn't ever go thinner than blot!
+       thin#:= blot_diameter#;
+       define_pixels (thin);
+
+       hs = 0.4staff_space;
        mb = .53;
        mt = .47;       
        cOne = 0.65;
        cTwo = 0.60;
 enddef;
 
-fet_beginchar("accSB", "accSB", "accSB")
-       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
-       def_some_vars;
-       def_B(.35width, .7height);
-       penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
-       penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
-       penstroke z18e--z19e;
-       pickup pencircle scaled .5thick;
-       drawdot (.37width, .10thick);
-       currentpicture := currentpicture shifted(.40width, 0);
-
-       def_S(.35width, .7height);
-%      penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
-       filldraw z1r--z8r--z8l--subpath(t, 1) of bue--cycle;
-       filldraw subpath(t, 1) of bueoverst--z7l--z9r--z9l--cycle;
-       penstroke z1e{down}..z2e{right}..z3e
-               ..z4e
-               ..z5e..z6e{right}...z7e{down};
-       pickup pencircle scaled .5thick;
-       drawdot (.37width, .10thick);
-       currentpicture := currentpicture shifted (-.40width, -.85height);
-       draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
-               --(-.5width, -height)--(-.5width, 0);
-       currentpicture := currentpicture shifted (0, 2.4interline);
-fet_endchar;
-
-fet_beginchar("accBB", "accBB", "accBB")
-       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
-       def_some_vars;
-       def_B(.35width, .7height);
-       penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
-       penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
-       penstroke z18e--z19e;
-       pickup pencircle scaled .5thick;
-       drawdot(.37width, .10thick);
-       currentpicture := currentpicture shifted (.40width, 0);
-       penstroke z10e--z11e{right}..z12e{up}..z13e{left}--z14e;
-       penstroke z13e{right}..z15e{up}..z16e{left}--z17e;
-       penstroke z18e--z19e;
-       drawdot(.37width, .10thick);
-       currentpicture := currentpicture shifted(-.40width, -.85height);
-       draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
-               --(-.5width, -height)--(-.5width, 0);
-       currentpicture := currentpicture shifted (0, 2.4interline);
-fet_endchar;
+def print_penpos (suffix $)=
+       message "z"&str $ &"l = ("&decimal x.$.l&", "&decimal y.$.l&"); z"&str $ &"r = ("&decimal x.$.r&", "&decimal y.$.r&");";
+enddef;
 
 
+%%% strange turning path.
 fet_beginchar("accOldEE", "accOldEE", "accOldEE")
-       set_char_box(interline#, interline#, 0, 2interline#);
+       set_char_box(staff_space#, staff_space#, 0, 2staff_space#);
        show w;
        show h;
-       r = interline;
-       lr = .3interline;
-       ir = .6interline;
-       pickup accreg_pen;
-       draw fullcircle scaled 2r;
-       pickup penrazor;
-       filldraw fullcircle scaled lr;
-       z1 = (ir, 0);
-       z2 = (0, 0) + ir*(dir 45);
-       z3 = (0, ir);
+       r = staff_space;
+       lr = .4 staff_space - stafflinethickness;
+       ir = .6 staff_space;
+
+       z1 = (0,0);
+       z2 = (0, ir);
+       penpos1 (0,0);
+       penpos2 ( .05 staff_space + .5 stafflinethickness,0);
+
+       penlabels(1,2,3);
+
        numeric pp;
+       pickup pencircle scaled blot_diameter;
        for pp := 0 step 45 until 360:
                filldraw fullcircle scaled lr shifted (ir*(dir pp));
-       endfor;
-       for pp := 0 step 45 until 360:
-               filldraw ((0, 0)--(.2lr, ir)--(-.2lr, ir)--cycle) rotated pp;
+               filldraw  (z1r--z1l--z2l--z2r--cycle) rotated pp;
        endfor
-       currentpicture := currentpicture shifted (0, r);
-fet_endchar;
 
-fet_beginchar("accOldEES", "accOldEES", "accOldEES")
-       set_char_box(interline#, interline#, 0, 2interline#);
-       save r, shy;
-       r = interline;
-       shy = .3;
        pickup accreg_pen;
        draw fullcircle scaled 2r;
-       currentpicture := currentpicture shifted (w/2, shy*h);
-       save thin, thick, sw, ch, cw, mb, mt;
-       ch = .6h;
-       cw = .8w;
-       thin = .05cw;
-       thick = .17w;
-       mb = .53; mt = .47;
-       sw = .8thick;
-       z1 = (0, ch-.5thin); penpos1 (thin, -90);
-       z2 = (.7cw, y1); penpos2 (thin, -90);
-       z3 = (cw, (mb+.5mt)*ch); penpos3(thick, -180);
-       z4 = (.65cw, mb*ch); penpos4(thin, 90);
-       z5 = (sw+thick, mb*ch); penpos5(thin, 90);
-       z6 = (.9cw, .5mb*ch); penpos6(thick, 0);
-       z7 = (1.2cw, 0); penpos7(thin, 90);
-       z8 = (1.3cw, .2mb*ch); penpos8(thin, 180);
-       penlabels(1, 2, 3, 4, 5, 6, 7, 8);
-       pickup pencircle scaled 0.001pt;
-       filldraw (0, 0)--(0, thin)--(sw, thin)--(sw, ch-thin)
-               --(sw+thick, ch-thin)--(sw+thick, thin)
-               --(2sw+thick, thin)--(2sw+thick, 0)--cycle;
-       penstroke z1e--z2e{right}..z3e..z4e{left}--z5e;
-       penstroke z4e{right}..z6e{down}..z7e{right}..z8e{up};
-       currentpicture := currentpicture shifted (-w/2, -shy*h);
+       pickup penrazor;
+
+       filldraw fullcircle scaled lr;
+
        currentpicture := currentpicture shifted (0, r);
+
+
 fet_endchar;
+
+
+
+fet_endgroup("accordion")