[gsharp-devel] Gsharp progress report

Robert Strandh strandh at labri.fr
Tue Jun 13 08:08:04 UTC 2006


Dear mailing list member,

There has not been a progress report for four months, for which I
apologize. 

A lot of things have happened since the last report, some minor, some
major.  At the end of this message, you will find a list of these
items. 

Now starts a period of a very large number of mostly minor, but not
very interesting, improvements.  Some of them will be directly visible
to the user, such as more music symbols, more commands and improved
ways of changing various parameters of the score.  Others will be
cleanups of the code, such as better modularity, and replacement of
magic constants by real parameters that will either be computed or
set and modified by the user. 

There are also a few medium-sized improvements that are necessary.
For instance, the computation of measures should be moved to a
view-specific object, so that we can have different simultaneous views
of the score (such as for different parts).

Major improvements since last progress report:

  * I implemented a new system for displaying music symbols.  The
    previous system used Metafont to generate .gf files (one for each
    font size) and loaded those files as necessary.  The main
    disadvantage of that system was that it was not easy to produce a
    printed version of the score.  The new system takes slightly
    modified Metafont path descriptions for the music symbol and turn
    them into areas bounded by Bezier curves.  These curves can be
    turned into PostScript path descriptions for printing or into
    pixmaps for on-line viewing.  In fact, the new system is very
    general and could be used by other CLIM applications as well, as
    it integrates with CLIM areas.  A minor advantage of the new
    system is that score symbols can be drawn using any color. 

  * Christophe Rhodes implemented the necessary medium-draw methods on
    a PostScript medium so that generating a PostScript file for
    printing is now possible.  The PostScript output looks very
    similar to the screen version, except that the resolution is
    usually better.

  * I implemented a new font viewer for the new font rendering
    system.  It is a 170-line CLIM application that allows you to view
    symbols in various sizes, as pixels (with or without a grid) or
    as the resulting anti-aliased glyph (with or without a staff).
    This application is part of Gsharp, so anyone can start it to
    debug old or new glyphs. 

  * Gsharp can now do multi-page scores.  In order to accomplish that,
    I implemented one new algorithm and modified an existing one.  The
    modified algorithm used to divide the score into `lines', and uses
    a modified cost measure to divide it into pages instead.  The new
    algorithm takes a sequence of measures to be rendered on the same
    page and computes an optimal way of dividing those measures into
    lines. 

  * Gsharp can now draw ties.  A variety of ties are now included in
    the Gsharp fonts and the right one is selected automatically.
    Ties are saved to disk and rendered to MIDI as expected. 

  * Gsharp now uses the ESA modules from Climacs, which makes it
    possible to take advantage of independent improvements to ESA.
    This has already resulted in better on-line help, better file
    completion, better handling of I/O, modified buffers, etc. 

  * Gsharp now uses Flexichain as an independent module, available as
    a project on common-lisp.net.  Again, this allows us to take
    advantage of independent improvements to the Flexichain module. 

  * Christophe Rhodes made scrolling work correctly.  This means that
    even on smaller screens, it is now possible to work on the full
    page. 

  * Christophe Rhodes fixed the problem we had with partial beams by
    making sure the clipping region got saved and restored correctly
    in the corresponding output record.

Minor improvements:

  * Introduced a new command table for commands that operate on
    rhythmic elements. 

  * Christophe Rhodes implemented octaviated treble clefs. 

  * Movement by measure, bound to M-C-f and M-C-b, implemented by
    Christophe Rhodes. 

  * The file menu now works, thanks to Christophe Rhodes. 

New scores:

  * Les Cris De Paris, entered by Christophe Rhodes.

  * The beginning of the 4th English suite by Bach. 

  * Dvorak's Humoresque, entered by Christophe Rhodes.

-- 
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