[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PATCH: new types of arpeggio
From: |
Chris Jackson |
Subject: |
Re: PATCH: new types of arpeggio |
Date: |
Sat, 8 Sep 2001 18:38:01 +0100 |
User-agent: |
Mutt/1.2.5i |
On Sat, Sep 08, 2001 at 01:22:35PM +0200, Jan Nieuwenhuizen wrote:
> Chris Jackson <address@hidden> writes:
>
> > I've had a stab at a (vaguely) calligraphed version of the directed
> > arpeggio:
> >
> > http://chris.fluffhouse.org.uk/arp.png
> >
> > It's bold and blends better with the style of the arpeggio squiggle. Any
> > comments on size/curviness/goodness of fit?
>
> This looks much more like it; but I cannot really judge well it from
> this picture; can you post a better resolution, or just the mf code?
OK, here goes with the code.. Most of it's just copied from the upper
half of the arpeggio squiggle, it's only the last five lines which are
the actual arrow.
def draw_arpeggio_arrow =
save thinness, height, width, overshoot, se, sw, ne, nw, alpha;
pair ne, nw, se, sw;
height# = staff_space#;
width# = 0.8height#;
overshoot# = 0.25 staff_space#;
define_pixels (height,overshoot,width);
set_char_box(0, width#, 0, height#);
alpha := -40;
nw = dir (alpha+180);
sw = dir (alpha-90); se = dir alpha;
penpos1(rthin, alpha+90);
penpos2(5/4 rthick, alpha);
penpos3(5/4 rthick, 0);
z1 = (width/2, height) - overshoot*se; % numbering is consistent with
the arpeggio symbol
z2 = 2[z4,(width/2,height/2)];
z3 = (0.5 width, 0.5 height);
z4 = (0.25 staff_space, rthin);
z6 = z2l + 1/2rthin*sw;
z9 = (width/2, height) + overshoot*se;
fill z1l {se}..{se} z6 .. z3l .. z3r.. z9{nw} ..{nw} z1r.. cycle;
bot z10 = ( 0.5w, 0 );
lft z11 = (-0.3w, 0.8h);
rt z12 = ( 1.3w, 0.8h);
pickup pencircle scaled 0.5 rthin;
filldraw z3 -- z12 {dir -130} .. {dir -110} z10 {dir 110} .. {dir
130} z11 -- cycle;
enddef;
fet_beginchar("Arpeggio arrow down", "arrowdown", "arrowdown");
draw_arpeggio_arrow;
fet_endchar;
fet_beginchar("Arpeggio arrow up", "arrowup", "arrowup");
draw_arpeggio_arrow;
currentpicture := currentpicture scaled -1 shifted (0.8staff_space,
staff_space);
fet_endchar;
--
chris