[gsharp-devel] Initial thoughts

Christophe Rhodes csr21 at cam.ac.uk
Mon Feb 16 21:31:57 UTC 2004

Hi, all.

My first initial thought, after fixing the remaining sbcl-related
buglets, was "wow, this is a lot faster!"  I presume this is because
of the change to the redisplay code -- is it not redisplaying some
pane or other in certain cases?  Anyway, that's much appreciated.

My personal interest is in being able to engrave and "perform"
Renaissance and Baroque music, usually but not exclusively including
vocal lines.  There are various obvious missing things that spring to
mind that are necessary to deal with this repertoire: lyrics, figures
(for figured bass and for time-signature changes), various ornaments
and other glyphs, and of course beamed semiquavers...  I thought a
simple first project that I might look at is some way of dealing with
triplets, which would hopefully be extensible to septemdecaplets and
the like should our contemporary brethren find the need.

I have also been spending some time recently in a computational music
department (at City University in London), where I showed the 0.2
release to a couple of people.  The response was promising; I think
they appreciate the possibilities both of the dynamic environment and
of the UI framework.  One thing that came up was that it would be very
nice to have something analogous to emacs' keyboard macros.

As a simple example of why this would be nice: consider entering a
part consisting of repeated dotted-quaver/semiquaver figures like:
    _____    _____    _____    _____
   |   _|   |   _|   |   _|   |   _|
   |    |   |    |   |    |   |    |
   |    |   |    |   |    |   |    |
  @ .  @   @ .  @   @ .  @   @ .  @ 

This is an absolute pain to enter in current state-of-the-art (and
also not state-of-the-art but more academically-inclined) notation
packages: after each note, the input state needs to change.  One
viable method for doing this with less pain would be to enter the part
in straight quavers, and then record and repeat a keyboard macro to
alter the elements in sequence.  In case this isn't clear, try (in
emacs, in a sacrificial buffer with stuff in it) the effect of 
  C-x ( C-a ( C-e ) C-f C-x ) C-x e C-x e C-x e 100 C-x e
to see the analogy.  Whether this keyboard macro facility wants to
record gestures (keystrokes) or commands, I don't know -- does anyone
know what emacs does?  Probably both in various circumstances. :-)

Speaking of keystrokes, there appears to be a McCLIM issue, or at
least a justified confusion, over treatment of the shift modifier.
Whereas in keystrokes such as Shift-Escape it makes sense to treat the
modifier key as a real modifier, it doesn't in keystrokes such as
Shift-#.  I cannot type Shift-# on my keyboard, because on a UK
keyboard it's unshifted, just to the left of Return; on the other
hand, on a US keyboard, it's shifted on the 3 key.  Should we
workaround by adding both shifted and unshifted versions to the
command tables, or is there an easy resolution in McCLIM?

Those are some of my initial ideas, anyway.  Looks fun!


http://www-jcsu.jesus.cam.ac.uk/~csr21/       +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%")    (pprint #36rJesusCollegeCambridge)

More information about the gsharp-devel mailing list