[gsharp-devel] ties

Robert STRANDH strandh at labri.fr
Fri Mar 26 07:23:03 UTC 2004


As you may have noticed, I am working on functionality for drawing
pretty ties to be used with your latest stuff.  

Here is the plan (let me know what you think) :

  * write a function draw-tie (or something like that) or perhaps a
    pair of functions draw-tie-up draw-tie-down, which would take a
    staff step and two x positions corresponding to notehead centers.

  * the function will check the distance between the centers of the
    noteheads in terms of multiples of the staff line distance.  If
    that distance is sufficiently small (say less than 4.5 times the
    staff line distance) a SMALL tie is used.  Such a tie is
    characterized by the fact that it is entirely contained between
    two staff lines.  The smallest small tie that I added to the font
    is roughly 2/3 the staff line distance, so if the center of the
    noteheads are closer than 2.2 staff line distances, they will
    overlap with the tie (but 2.2 is pretty tight).  When the distance
    is greater than 4.5 (or perhaps even less), the small tie is no
    longer pretty, so a LARGE tie should be used.

  * the LARGE tie (not yet added) traverses one staff line.  I am
    planning to make two different shapes of large ties, one to be
    used for noteheads ON a staff line, and another for noteheads
    BETWEEN two staff lines (because they do not end in the same y
    position).  The draw-tie function(s) must then use a different
    glyph for the two possible y-positions of the noteheads. There
    will be a bunch of large ties to be used from distances of around
    3 or so, to perhaps 9 or 10.

  * when the distance is even larger than 9 or 10, we must draw two
    glyphs representing the beginning and the end of the ties, and a
    rectangle for the middle.  I have made all the glyphs so that the
    center falls on exact pixel boundaries which means that the center
    can be invisibly extended by an ordinary black rectangle.

I may make a third kind of tie that takes up more vertical space to be
used when all tied notes are OUTSIDE of a staff, but that is low
priority for now.

Currently I am working on the glyphs.  I may or may not have time to
write the draw-tie function any time soon, so if anyone else wants to
work on that, let me know.  It would be cute to get your example to
draw with the new glyphs.  

I still have no idea how to draw slurs and phrase marks that would
make them both pretty and fast to draw.

Bonne journée,
Robert Strandh

Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.

More information about the gsharp-devel mailing list