[CM] CM 2.3.3 available

Rick Taube taube@uiuc.edu
Fri, 26 Apr 2002 12:12:08 -0500

CM 2.3.3 is available from ccrma-ftp:

Sources (linux, mac, windows):

Binaries (mac/windows):

This release ports CM to the new ACL and CLISP versions, improves
the CLM interface (thank you Anders Vinjar) and finishes tunings
and modes. The final version of tunings and modes has caused some
significant changes to the system. These changes are all documented
in a new chapter "Frequency, Tunings and Modes" in the reference
manual (see: doc/ref/scales.html).  Almost all the changes are
"backward compatible".

Features and bug fixes in CM 2.3.3

o CM ported and tested in:
  * ACL 6.1 Windows/Linux/OSX. (You can get a free, renewable
    license for ACL 6.1 from http://www.franz.com.)
  * CLISP 2.28 Windows/Linux.

o Improved CLM support:
  * New IMPORT-EVENTS method for .clm files parses instrument
    calls into CM objects and returns them in a list or seq.
  * CM now passes _all_ with-sound options to CLM.
  * All file and dac io now handled direclty by CLM. the CLM 
    entries in cm:etc;handlers.lisp have been removed.
  * New :TRACE-OUTPUT option for AUDIO-FILE (.aiff, .wav .snd)
    causes CLM events to print their instruments and start times
    as they are output to the open audio file.
  * INS subclasses now inherit default values for &optional
    instrument args.
  * Parameter decimal formatting in CLM score files removed. 
  * CM filenames with "wav", "snd" or "aiff" extensions now
    pass default :TYPE and :FORMAT args to CLM:INIT-WITH-SOUND
    so the sound file's type and data format agree with 
    the file's extension. this behavior can be
    overridden woth explicit :TYPE and :FORMAT values.

o Tunings and modes are fully implemented. 
  * Tunings can now be defined with note tables.
  * Mode steps can now be defined in terms of "typed intervals" 
    (see discussion below) so notes returned in the mode agree
    with the mode's current tonic + step spellings.
  * Modes can now be defined on any tuning, not just the
    standard chromatic scale.
  * Tuning keynums are "unbounded" so hertz <-> keynum conversion
    can be calculated in any octave. (Tuning note tables are only
    defined over a specified number of octaves, default is 10.)
  * New file cm:examples;scales.cm contains some example tunings
    and mode definitions.

o Arguments to NOTE, KEYNUM, HERTZ  have changed to allow new
  functionality. The most important changes are:

  * Specific tunings and modes can bw specied to the functions
    using the new :IN and :FROM argument.
    :IN specifies the scale to use, and defaults to *SCALE*.
    The :FROM argument allows keynums and notes in one scale to
    be converted from one scale to their equivalents in another

  * New :ACCIDENTAL argument to NOTE causes the note returned
    to agree with the specified accidental.  The value of
    :ACCIDENTAL can also be a list, in which case the list 
    specifies a preference ordering of possible note spellings.
      ? (note 60 :accidental 's)
  * Hertz values input to NOTE and KEYNUM must be explicitly
    "tagged" by adding :HERTZ or :HZ (symbol or keyword) after
    the value. This behavior is not "backward compatible".
      ? (note 60)         ; return note name of keynum 60.
      ? (note 60 :hz)     ; return note name of frequency 60.

  * The variable *NUMERICAL-FREQUENCY-FORMAT* has been removed.

o New "typed interval" preserves note spelling in transposition.
  Typed invervals are created using the new INTERVAL function
  and can be decoded using DECODE-INTERVAL. See the new section
  about type intervals in the standard scale documentation in

o TRASPOSE now allow the transpostion amount to be either the
  integer half steps or a "typed interval".

o New global variable *SCALE* holds the default scale (tuning or
  mode) used by functions like NOTE, HERTZ, KEYNUM and TRANSPOSE.
  *SCALE* is initialy set to the standard chromatic scale.

o New global variable *STANDARD-CHROMATIC-SCALE* holds an instance
  of the standard chromatic scale.

o The functions CENT->SCALER and SCALER->CENT have been
  renamed to CENTS->SCALER and SCALER->CENTS.

o The function OCTAVE has been renamed OCTAVE-NUMBER.   

o The functions MODEIFY and UNMODEIFY have been removed.
  The same functionality can be achieved by using the
  :FROM and :IN scale arguements to KEYNUM and NOTE.

o THe macro INTERVALS is no longer documeted and will dissapear
  in an upcoming releawse.  I will replace this messy hack by
  a new object class that implements complex pattern transposition.