[CM] which lisp/scheme for future use?

Bill Schottstaedt bil@ccrma.Stanford.EDU
Tue, 8 Oct 2002 05:35:30 -0700

Random gleanings from this morning's mail...

> Whats extremely powerful is that the packages are integrated as
> tight as they are - giving access to each others tools from
> everywhere, and the enormous flexibility and ease of programming
> impossible to find anywhere else.  IMO what makes CM/CLM/Snd/CM
> stand out is the direct link to their common language.

The major hang-up currently (using Common Lisp for this connection
in CLM/CMN) is that the CL program has to poll for a response --
Snd gets an interrupt when the "SND_COMMAND" property changes,
then reads it as Scheme code, but there's no (portable) way
to do that in the CL versions of CLM/CMN, so they only work in
the case where the CL program sends Snd something and then
sits in a loop waiting for a response.  If we change to Guile,
all three (or four) can be interrupt-driven.

As an example, one of the things on my todo-list is to make
an auxiliary view in the Snd time domain graph, similar to
the little graph created by display-current-window-location
(draw.scm) which I really like, but showing music notation --
i.e. an interpretation of the underlying sound as notation,
not an opaque graph.  If CMN could be interrupt-driven, it
would be a sort of notation-server for Snd.  I made a real
effort to get the same idea (X window events) to work in CL,
but could not get past the segfaults (it's a nightmare trying
to debug foreign function troubles in CL).

> one possibility might be to write some lisp
> code that derives the IRCAM  format for their finale plugin from the cmn
> score object.

Where can I find a description (programmer-level) for this format?

> However, I eventually round everything off to quarter- or
> sixth-tones when working with acoustic instruments, and while CMN,
> Sibelius, and Finale all have some microtonal capabilities, none (to my
> knowledge - I'd love to be proven wrong) knows how to take the output
> from a program like CM or OpenMusic (or even a midi file with pitch-bend
> data) and supply the necessary micorotonal accidentals.

quarters.lisp implements various microtonal accidentals (Michael Edwards
reminded me that the one I like was actually invented by Ligeti); you
then take the Hz and round to the nearest pitch in the current scale,
then choose an accidental -- I can't immediately see what the problem is.
I could make this a built-in choice, I suppose.