[CM] new cm-2.4.0 tarfile available

Rick Taube taube@uiuc.edu
Thu, 22 May 2003 07:11:38 -0500

Ive updated the cm-2.4.0 tarfile at ccrma:


The new tarfile includes the ability to send event output to arbitrary  
Lisp streams (see below) and reimplments the 'import-events' function  
for midi files. My next step is to rebuild the commonmusic cvs site at  
sourceforge and to upload everthing there. Im also looking at midishare  
as a cross platform solution to direct midi io in common music. anyone  
want to help? :)

here are the details of the new tarfile:
Features and bug fixes in cm-2.4.0:

o event output can now be sent to arbitrary streams in additin to files.
   All of the io classes that handle input/output have been renamed
   '-stream' to reflect this new generalization:

     sco-file -> sco-stream
     clm-file -> clm-stream
     audio-file -> clm-audio-file
     midi-file  -> midi-stream
     cmn-file -> cmn-stream

   To output to a file just specify the filename as before.

   To output events to an arbitrary stream, create the event stream
   and use its :stream argument to pass it your Lisp stream destination.
   For example, to send CSound events to stdout:

   (define out (new sco-stream :stream *standard-output*))
   (events (blur) out :header whatever)

   Note that some Lisp implementations provide special functions
   for  specialized output to pipes and streams. For example in CLISP
   you can used the 'make-pipe-output-stream'. to pipe your output to
   some app:

   (define out (new sco-stream :stream (make-pipe-output ...)))

   All of cm's event streams classes now have a new 'mime-type' property
   that is (currently) unused.

o import-events for midi-streams has been completely reimplemented
   * tempo changes in level1 midi files are now handled correctly.
   * track zero is always  parsed for a 'tempo map'.
   * tempo maps are applied to all imported tracks in a level1 file.
   * tempo and tempo maps in the file can be overridden using the
     new :tempo arg to import-events.
   * :time-format for importing is now either :beats or :ticks.
     The default is :beats, which causes tempo scaleing. If :ticks
     are specified then time values are imported using the raw tick
     values in the file.
   * the :note-type arg has been renamed :keynum-format and allows
     :hertz in addition to :keynum or :note.

o function 'fm-spectrum' added to the sources (see chapter 23)

o new function 'scale-order' puts a list of notes/keynums in
   some canonical order:

   (scale-order list [type] [unique?])

   List is the list to order. Type is a keyword that specifies
   how the list is ordered, Possible values are  :up :down or :random
   The default value is :up. If unique? is true then the list
   returned by scale-order will contain only unique frequency values.

o CM's src/ subdirectory has TAGS file for searching using meta-. in  
     M-x visit tags file
   Then use
   To view the cm sorces for a function or symbol at point.


o 'keynum' and 'note' now correctly handle Lists of hertz values,
o  the 'with' operator in 'process' is now macroexpanded correctly.