___________________________________________________________________

Features and bug fixes from 11-Oct-94.
1) Pathnames may be delimited by "" in commands.
2) New Emacs customization file contrib/cm.el defines indentation
   for Common Music forms.
3) MCL printing-random-thing prints hex.
4) note objects can now be placed directly inside merges.
5)find-object and #! automatically append the found object to the
  current container when used as top level forms in the body of a
  thread, merge or heap definition, 
6) The syntax of PICK changed. Pick now works with any type of Lisp sequence or subrange of a sequence, and can avoid direct reselection of an element.  See dictionary for more information. The old version of PICK is now called PICKL (for pick list)
7) heaps may now be specified to layout

Bug Fixes:

1) fixed contrib/naturalize.lisp to use map-object not mapref.
2) fixed spelling of sequential-amplitude-stream.
3) exprs now allowed in note, rhythm and ampliutude streams.
4) double definition of csound-sound-file fixed.

___________________________________________________________________

Features and bug fixes from 10-Aug-94.

1) CMusic and CMix syntaxes implemented by Charlie Baker
   (baker@polka.ccmrc.ucsb.edu). The file cm/stella/examples/ks.lisp 
   contains an example cmusic object implementation.
2) New RETROGRADE macro returns the reverse of an item stream period.
3) New documetation files: doc/lispintro.rtf provides an overview
   of the most important characteristics of lisp. doc/lispstyle.rtf
   is a compendium of lisp programming tips.
4) The Run command now takes an INTO {thread} option.  If INTO is specified,
   all events produced by Run will be appended to the contents of
   {thread}, which is the name of a preexisting or a new thread.
5) SListen now allows rests to be placed between the repititions of 
   a single object.
6) Formatting-slots has two new directives.
   1) :decimals formats floating point values to some number of places.
       use :decimals 0 to coerce to integers.
   2) :print-if :always causes unbound slots to appear as "-unset-" 
      in the formatting display. this is better than explicitly 
      providing a :default-value of +slot-unset+.
7) New PICK function randomly selects from a series of choices.
8) Absolute time values can now be specified to musical notes. any object
   that inherits from Element can now have its time set absolutely in one
   of two ways:
	1) specify the time via the "start" initialization arg, ie:
	   (object midi-note start 10 rhythm 2)
        2) set the time slot, then IOR the objects flags using the
           the system constant +absolute+,  ie:
           (setf (slot-value x 'time) 23)
	   (setf (slot-value x 'flags) 
             (logior (slot-value x 'flags) +absolute+))
9) Standard scale now has 10 octaves.
10) Algorithm macroexpansion is improved. Walked code now uses symbol-macrolet
   instead of with-slots, item streams definitions can now reference slot
   values in the running algorithm, vars declarations can reference algorithm
   slot values in binding expressions, and warnings are printed for local let
   variables that shadow slot names.  

Bug Fixes:

1)  A bug in the Map command that ignored generators has been fixed.
2)  Midifile-play now sends sysex messages.
3)  Midi-message objects now send sysex messages properly.
__________________________________________________________________

Features and bug fixes from 29 April 1994.
1) Same features as last release, but system has been ported to CLISP,
sans midi real time. See README.CLISP for more info.
2) Build parameters also simplified.  There is no more default-syntax
to set: the first syntax listed in syntax automatically becomes
the default syntax when the system boots up.

___________________________________________________________________

Features and bug fixes from 24 April 1994.

1) Full port of CM to Windows/ACLPC, including real time midi
implemented by Joe Fosco (b38669@anl.gov).

2) New mapping operator Analyze performs statistical analysis on
a per slot basis.  For each slot, analyze first displays global
statistics on the number of descrete values, their min, max and
average, and then prints a breakdown for each value found its 
count, percentage and positions. The position information shows
consective values using a ":" delimiter between the positions.

3) New mapping operators Quantize, Quantize! and Round size slot
values. Round rounds values to n digits. Quantize fits values to
be a multiple of a certain step size, Quantize! is like Quantize
but uses log scaling.



Bug fixes:
1) :TL appears on *features* list.
2) midifile-parse no longer signals an error if it cannot find
a note on for a given note off. Instead, the note off is simply
ignored.

___________________________________________________________________

Features and bug fixes from 30 March 1994.

1) Item streams have been completely reimplemented to support a 
number of new features:

  a) Period lengths of 0 now supported. if an embedded stream sets
its period to 0 it "disappears" in its superior's pattern until
its reselected and it sets its period greater than 0. 0 length 
periods permit all sorts of interesting patterns that were formally
either impossible or exceedingly difficult to describe. here is a
very simple example of a cycle whose inner 2 elements occur just
every third cycle:
	(setf x (items A (items B C for (items 2 0 0)) D))
	(read-items x 20)
	(A B C D A D A D A B C D A D A D)  

  b) New pattern type ROTATION rotates its elements according 
to an optional "change value" supplied via the CHANGE option.
See dictionary.rtf for more info. The file 
stella/examples/change-ringing.lisp contains definitions that
implement various types of change ringing rotations.

  c) New constructor option COUNTING controls whether a period counts
subperiods or values. If COUNTING is PERIODS (the default) then
the number of elements returned in a period is the sum of all
the subperiod lengths encountered in the period.  this€has been
the normal behavior for item streams in the past. if COUNTING is
VALUE, the number of elements returned in a period is exactly 
equal to the period length.

  d) New constructor option TRAVERSING controls whether a stream 
visits its subitems in depth first or breadth first mode. If
TRAVERSING is DEPTH (the default) then the pattern is only
incremented when the current element has returned end of period.
this€has been the normal behavior of item streams in the past. if
TRAVERSING is BREADTH, then the pattern is incremented after each
value has been read, regardless of whether or not the subelement 
is at end of period. (another, less efficient way to impleement 
traversing breadth would be to set the period lengths of all
substreams to 1.)

  e) All constructor macros now expand directly to make-instance 
instead of to intermediate constructor functions.

  f) ITEM is roughly 25% faster on the NeXT, depending on pattern and
datatype. Its only about 5% faster on a MAC IIci.

  g) Palindrome and amplitudes are now represented by true classes.

  Incompatible changes:

  a) VOICINGS removed. Instead, both INTERVALS and STEPS will
increment their offset in parallel with the pattern if the offset
is specified using a new ON option instead of FROM. In other words:
	(VOICINGS ... FROM ...) = (INTERVALS ... ON ...)

  b) SERIES are implemented as a subclass of cyclic-interval-stream,
so the offset changes once each period. (form, modulus and multiple
change each time the series repeats)

  c) FIRST, INITIALLY and REINITIALLY options removed. This affects
random, heap and graph patterns.

  d) Default period length for graphs are now the number of nodes.

  e) All constructor functions except make-item-stream removed.

  f) DECRESCENDO renamed DIMINUENDO.


2) Defscale now supports the creation of gapped and general scales
in addition to equal-tempered. See dictionary.rtf for more info.
Examples of various types of scales can be found in 
examples/defscales.lisp

3) New output syntax RT writes input files for Paul Lanske's RT
sound file mixing program (NeXT only).  Stella also provides a
a PlayNote object to output rt file statements.  See the
implementation file stella/rt.lisp for more information. The file 
stella/examples/rt.stella contains an example algorithm.

4) New global variable *compile-algorithms* controls if stella should
try to compile the code for an algorithm or generator as it is being 
defined. defaults to nil. see dictionary.rtf for more info.

5) algorithms now have initialzer and finalizer slots to hold
functions that you want funcalled just before and just after
the algorithm has been scheduled.

Bug fixes:

1) Mirror and repeat macros now work properly.

2) cmn output method for midi data now coerces midi notenums to 
frequency.

3) The Load command doesn't automatically try to compile .lisp files
when it loads them. if you want this use Load with compile t 
option.

4) defobject only adds :initargs when necessary.

5) importing music kit scorefiles now works properly.

_____________________________________________________________________

Features and bug fixes from 4-Feb-93.

1) Markov selection using graphs now possible via new item stream
option PREVIOUS and new function IDSEL. See entries in dictionary.rtf;
the file stella/examples/markov has the Stephen Foster example from 
Dodge-Jerse chapter 8.

2) defmultiple-item takes new keyword argument :element-state, for
selecting which element's state to return as the state of the multiple
item when its not :end-of-period.  this allows tracking the state of 
chords,etc inside the multiple-item.

3) new #i read macro for shorter item stream definition, see 
   dictionary.rt for more info.
_____________________________________________________________________

Features and bug fixes from 2-Feb-93.

1) New command RUN executes the specified objects and updates their time
values without producing any output. Current time values may then be
referenced in editing operations, ie
	run foo,bar
	map foo while (< $time 50) when (> $time 20) transpose note -3
	set bar amp (interpl $time 0 .1 50 .3)

2) clm interface improved:
    a) all sound file attributes now specifiable via Open, ie
		open foo.snd verbose t srate 44100 play nil 
    b) envelope processing for .snd and .clm files now made easier
       by using the new (:format :careful) option in formatting-slots
       and collecting-slots. see dictionary for more info.
3) formatting-slots now handles &rest arguments.
4) defobject now takes an optional :parameters argument for declaring
   certain slots to be "parameters". the system does not yet automatically
   write output methods.

Bug fixes:
    Many clm/stella interface bugs solved.
    catch/throw problems in map fixed
    map operators while and until now print their results.
    formatting-slots no longer prints double seperators between values
_____________________________________________________________________

Features and bug fixes from 2-Nov-93.

1) Command prompting and processing has changed. 

  Main prompting improvements:

  1) All commands are now fully specifiable from the command line. A new
     global variable *command-prompting* controls whether or Stella
     prompts for missing or illegal command arguments. The default value
     of *command-prompting* is T, so by default stella behaves as it has
     in the past. If nil, missing or illegal command line arguments
     result in an error/syntax message and an immediate return to the
     main prompt.  Set to nil if you like a  terser input style.

  2) Help texts completely rewritten. New tutorial sections: 2.4.2, 2.4.3
     New dictionary entries: FHEADER, REPEAT, *command-prompting*,
     *mapping-mode*, *mapping-depth, *listing-length*

  3) Underlying lisp functions cleaned up, renamed and made "public".
     See stella/api.text for a list of these functions and variables.

  4) New type of command argument called "pairs"  is similar to Lisp's
     &keywords args except:
	1) you dont need to precede name with a colon (but you can).
	2) their values are "carefully" evaluated, ie as Map evaluates.
	3) underlying api functions all use pairs not keywords.

  Main Syntax Changes:

  1) Object reference parsing is now stricter: a reference to a series
     of objects ment as a single command argument MUST include commas
     between the individual references, or the entire reference must be
     delimited within []. So "Listen 1 2 3 4" will no longer work but
    "Listen 1,2,3,4" or "Listen [1 2 3 4]" or "Listen 1 , 2 , 3 , 4"
     will work. The main  commands affected by this change are LIST and
     LISTEN, WRITE, SWRITE and SLISTEN.  More than one offsets for LISTEN
     and WRITE can be givin on the command line delimited with comma. 
     See help text.

  2) The specification of container positions has been simplified. To
     append, just give the name or position of the container. Otherwise,
     specify the insertion point as a positional reference:
   	add bar,baz[32] foo	   ; append Bar and Baz[32] to Foo
	add bar,baz[32] foo[4]	   ; insert Bar and Baz[32] at Foo[4]

  3) Pathnames with spaces can now be specified if the entire pathaname
     is delimited within "", 

  Summary of changed commands. See help text for more info:

  ADD                now accepts optional pair arguments.
  ARCHIVE            now accepts optional pair arguments.
  CL                 now accepts line of input to process.
  DELETE             now accepts optional pair arguments.
  LIST               now more compact.
  LISTEN             now accepts optional pair arguments.
  LOAD               now accepts optional pair arguments.
  PASTE              now can paste to range and point, optional name.
  PLAY               now accepts optional pair arguments
  PARAMETERS         removed.
  REHASH             obsolete.
  REMOVE             now works for multiply linked conatiners.
  RETROGRADE         works for subranges as well as containers.
  SHUFFLE            works for subranges as well as containers.
  SLISTEN            now accepts optional pair arguments.
  SWRITE             now accepts optional pair arguments.
  TLIST              now accepts optional pair arguments.
  WRITE              now accepts optional pair arguments.

2) The following are new functions, variables and macros. See the dictionary
   for more information:

   Function FHEADER sets file headers via Lisp. 

   Macro REPEAT repeats the current period of an item stream
   zero or more times. 
   
   User variables: *post-process*, *command-prompting*,
                   *listing-length*, *mapping-mode*, *mapping-depth*


3) New system containers: 
   
   TOC (Table Of Contents), the container of all system containers
   Syntaxes, the container of all currently loaded syntaxes.

4) Functional item streams and read items now optionally pass not only
   the values of the current period, but the states as well.
   see dictionary.

Bug Fixes:

1) Tlist on algorithms now works.
2) midifile-parse now handles tracks without an initial tempo change.
3) datatype integer and voicing exported from common music.
4) functional streams now have "prop" option exported
_____________________________________________________________________

Features and bug fixes from 15-Sep-93.

1) By default, defscorefile and with-part are not built into the cm
image, and the top level package is set to Stella when Lisp boots up.
If you still want to use defscorefile, set the defscorefile parameter
in build.lisp to T.

1) Output streams now have three additional slots: Start, End and
Timescale.  Only events >= start and <= end  are output. Timescale
scales values related to time by that amount, but since time scaling
generally involves slots other than just Time (for example, duration),
it is left up each method on write-event to perform time scaling or
not.  All Midi and Music Kit classes support times scaling for start
and duration values.

2) The Open command now allows slots to be unset by specifying Unset
or None (or :none or :unset if you are a real lisper) as their
"value".  Examples:

	open test.midi start 10 end 40 timescale 2.5
        open test.midi timescale none

3) New Map operators List and Show.  Similar to Find, but they list
or show each referenced object.

4) The $slot notation no longer returns 0 if the slot is unbound or
does not exist. Instead, it throws out of the current object.
Throwing allows operators like Minimize or Lowest to avoid calculating
with bogus 0 values when the currently mapped object does not have a
value for the specified slot, or is of a completely different class.

5) Thanks to Tobias Kunze, Stella now functions similar to the normal
lisp listener in MCL:
   1) <return> brings the selected text to the active spot
   2) <backspace> no longer rubs out the prompt
   3) Command-. pops the error stack instead of throwing immediately
      to the top level.

6) New global variable *default-midi-pathname* holds the default midi
output file pathname. All midi output functions merge the supplied
pathname with the default pathname to form the fully specified output
file pathname.  The initial value of *default-midi-pathname* is
"test.midi" in the user's home directory.

Bug Fixes:

1) Aborting from the file prompt in Write and SWrite now works.

_____________________________________________________________________


Features and bug fixes from 5-Aug-93.

1) New support for CMN syntax:

a) Chapter 12 in tutorial "Manuscripting data using CMN" rewritten to include new sections 12.5.1 "The open command" and 12.7  "Advanced CMN stream customizations"
b) Staffing in CMN may now be by container, midi channel, or user specified. A new staffer slot for CMN streams holds a function reponsible for mapping objects in stella to their proper CMN staves. By default this staffer function is container-staff, which groups objects in staves according to their containers in stella. By setting staffer to the function channel-staff, midi data can be organized in CMN staves according to midi channel. See tutorial for more information.
c) New marker slot in CMN streams may hold a function for adding cmn directives just after each note has been sent to CMN. Use a marker function to progrmatically send marking information to CMN, for example, to add a wedge to each note if the amplitude is above .4, etc.  See tutorial for more information.
d) New staves macro allows staffing information to be easily supplied. See dictionary.rtf for more information.  Removed the old STAFF command from Edit when editing CMN staves. Now just use the staves macro to set the staves slot.
e) If the system is built with MIDI syntax, the CMN object now also receives a channel slot.
f) See also: entry on Open below, newly rewritten CMN chapter in the tutorial; new additions to appendix A in tutorial; dictionary entry on staves; channel.tl script in the stella/scripts directory.

2) new variable *respect-note-spelling* decides if the notes macro should keep
note names the same as specified by the user.  If common music is built with CMN, the defult value of *respect-note-spelling*  is true, which makes manuscript output from algorithms, etc much more friendly.  If CMN is not built into the system, the default value is nil, which preserves the original behavior of the notes macro

3) the pitches macro no longer quantizes floating point data to fit in a scale.

3) new variable *syntaxes* holds the list of syntaxes currently loaded into Common Music.

4) The directory stella/examples/blee contains new composition examples by Brent Lee.

5) Tutorial may now be used in conjunction with the Music Kit simply by switching syntax. The midi objects will then output to music kit, with midi channel info selecting various preset synthpatches in the MusicKit.  Music Kit data may also output to CMN for manuscripting.

6) CSound syntax fully implemented in Stella. See stella/examples/i1.lisp for an example of declaring csound objects and output methods. 

7) New Heap container class and constructor. A heap is a subclass of thread, but shuffles its material each time it is initialized for outputting, which allows score structure to involve random permutation.

8) New macros defobject and formatting-slots simplify defining new classes of objects and new output methods. Chapter 9 in tutorial rewritten and simplified. See tutorial and dictonary.rtf for more information.

9) Show command now prints definition code for algorithms and generators.

10) Reloading material from an archive now warns about redefining objects.

11) New examples files from CCRMA workshop in stella/examples.

12) New Unset command for unbinding slots. Also available as an operator in MAP.

13) New Change command for changing the class of objects. Allows optional
slot initialization in redefined objects according to a {newslot oldslot}*
list. Also available as an operator in MAP. 

14) Open now allows files and listeners to be initialized, ie
        open test.score header *header*
would create or update a music stream for test.score and set its header attribute to the value of *header*.  See appendix ??? in the tutorial for detailed information about streams attributes.

15) new build.lisp parameter "defscorefile" will allow the optional inclusion of the the old runtime system  of common music (defscorefile, with-part, defpart, etc.  For this release only, the default value will be T (in fact, don't set it to nil); thereafter it will default to NIL, which means that the old system will not be loaded into common music and the default package will become stella.

16) cm.tar.Z is now much smaller becuase I remove a ton of old/stale documentation. Ive also removed dictonary entries to defscorefile, with-part, defpart etc. If you want them keep an old dictionary around.

17) To accomodate an upcoming port to DOS, a few file names have been changed to insure unique names within 8 characters.

   stella/tutorial/:
        stella-tutorial.rtf			stella.rtf
   midi/examples/:
        real-time.lisp				rt.lisp
        real-time-examples.lisp		rtexamp.lisp
   doc/:
        item-stream-examples.rtf combined with item-streams.rtf		
   mk/examples/:
        DBWave1vi-1.lisp DBWave1A.lisp
        DBWave1vi-2.lisp DBWave1B.lisp
        DBWave1vi-3.lisp DBWave1C.lisp
        DBWave2vi-1.lisp DBWave2A.lisp
        DBWave2vi-2.lisp DBWave2B.lisp
        DBWave2vi-3.lisp DBWave2C.lisp

Note that untarring the new cm.tar into your old source directory will not remove the old files.

18) :MIDI pushed on feature list

Bug fixes:

1) Fixed bug that caused algorithms to not increment themselves after
   the last note. This change may cause existing code to run slightly
   differently!
2) Fixed superfluous warnings in MCL when defining algorithms and generators.
3) Fixed status updating bug that cause an algorithm's status to get improperly updated if the algorithm reads from multiple item streams.
4) Fixed Go bug that caused an error upon moving focus to an algorithm.
_____________________________________________________________________

Features and bug fixes from 14-Jun-93:

1) New SCRIPT command in Stella reads editor input from a specified file, which may contain both lisp and command expressions.  Script files have a default extention of ".tl" to distinguish them from normal lisp files, which cannot contain command expressions.  Scripts are handy for storing complicated editing sequences, or commands that you issue repeatedly.  In addition, I am building up a library of scripts that place Stella in "automatic pilot mode" to demonstrate various simple command sequences. These demos can be found in the directory stella/scripts. Be sure to read README in that directory before loading any of these files.  I will continue to update and add to this directory.

2) Tobias Kunze has implemented some really nice editor extensions in MCL to support Stella input and command evaluation from other windows and buffers. See contrib/mcl-stella.lisp for more info.

3) The MAP command operators sum, collect, maximize, minimize, lowest, highest, and count now support an optional "global result variable", which will receive values that the operator produces.  Result variables are updated each time an operator's clause is processed so other clauses may reference the current value in their expressions.  To specify a results variable use the INTO option. For example:
	map * sum $rhythm into timesum and collect timesum into timelist
would define a global variable timesum to hold the total of all rhythm slots and a variable timelist to hold the list of all summed start times.

4) New MAP operators UNTIL and WHILE allow processing to terminate before all  objects have been mapped. Until terminates mapping as soon as its expr returns true.  While terminates as soon as its expr returns false. For example,
	map * while (< $duration 1.2) increment rhythm .3
would process the objects in * until a duration >= 1.2 was encountered.

5) Commands may now span more than one line of input if the entire command is delimited by a pair of curly brackets {}, ie:

	{map t2 collect $note into mynotes
	     when (member $note '(c4 c5 c6))
	          transpose note (between 1 11)}

6) New item constructors EXPR and FN. Expr creates an item out of lisp code (variables, expressions, etc). The ITEM function is then used to evaluate and return the value of an EXPR. The FN constructor is like EXPR, but creates an item from a function object.

        <cl> (setf s (let ((x 0)) (items 1 (expr (incf x)) for 20 )))
        #<CYCLIC-ITEM-STREAM 133341111> 

        <cl> (read-items s) ; works even though x no longer exists
        (1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10) 

see dictonary.rtf for more information.

7) New OPEN command in stella opens a listener for the specified syntax, if possible.

Bug fixes:

1) the :KILL value to item inside with-part or algorithm may now be 
   specified as a variable
2) Numbers macro fixed to supply correct limit value.
3) Numbers documented in dictionary.rtf   
4) mcl-midi.lisp fixed to work with opcode midi tools.
5) doitems item variable now properly bound.

_____________________________________________________________________


Features and bug fixes from 11-May-93:

1) Macintosh mididriver routines and interface reimplemented by Tobias Kunze (tkunze@mvax.kgw.tu-berlin.de).
  a) you no longer need anything from MPW, just debinhex the
     supplied midi/mcl-midi.c.o.hqx file and away you go. 
     Although it has only be tested on a IIci, SE/30, a PowerBook 170, and
     a  Quadra 700, it should run on all Macintoshes with a hard disk and
     at least 6 megabytes of RAM and 8 megabytes of disk storage, 
     running Macintosh System Software 6.0.4 or later (including System
     7) or A/UX 3.0.
  b) "unlimited" midi message writing is supported by managing the mididriver's
     buffers dynamically.  CM now allows about @40000 future unblocked 
     messages; once all buffers are full the system drops into blocking mode so
     you can still send more data.
  c) A handy Midi utility menu is provided.

2) New item stream constructor macro NUMBERS creates number streams for cyclic or random number generation. numbers is similar in spirit to Lisp's loop iteration macro, with the essential difference that numbers is used in conjunction with item to return the next number, and numbers permits any numeric option value to be replaced by an item stream of values, ie:
	(numbers to 10)
	(numbers from 1 below (items 5 10) in random)
	(numbers by (items .1 .2) below 1)
	(numbers from (items 0 1) to (numbers 10 to 20 in random))
Only the cyclic and random patterns are currently implemented.  See doc/dictonary.rtf for more information.

3) midifile-play reimplemented by Tobias Kunze to use the open midi port rather than an external program. This allows you to play midifiles directly from Lisp without any ancillary program, which avoids blocking on NeXT 3.0 because playmidifile isnt used, and allows midi files to be played on the Mac without leaving lisp.  Play-midifile now supports the optional specification of :start :end times in the file, and a :timescale factor for "zooming" in and out of the sound.  See doc/midi.rtf for more information.

4) Site initialization file. If a file called cminit.lisp or cminit.fasl exists in either *common-music-directory* or the directory containing the booted common music image, then it is loaded when common music boots up.  This can be used to automatically load patch files and system extensions, or to reset system variables like *common-music-directory* in the event that the image is run on a filesystem other than the one it was created on. Site initialization does not work in AKCL.


5) The FOR option to item stream constructors now permits the period length to be specified as a function which will be funcalled to return the length of the next period.  This feature can be used, for example, to keep two item streams "in parallel", ie:

   (items (items A for (items 5 6 7 in random) named Foo)
          (items Z for #'(lambda () (period-length #@Foo))))

would cause the item Z to be generated as many times as the item A, no matter what the current period length of Foo actually is.

Bug Fixes:

1) Staff command for CMN output streams now allows renaming.

2) Midi files written in MCL now have their macintosh file types set to Midi.

3) tl.lisp no longer clobbers ccl:show-documentation in MCL.

_____________________________________________________________________


Features and bug fixes from April 5, 93:

1) New CMN output syntax in Stella for postscript output via CMN. Chapter 12 "Manuscripting data using CMN" in stella-tutorial.rtf has documentation and examples.

2) New LAYOUT macro for organizing musical material. See chapter 13 "Describing musical layout" for documentation and examples.

3) Mutes and algorithm sprouting implemented. See section 7.10 "About Algorithms"  and new section 7.11 "Creating structure dynamically" for documentation and examples.

4) Much work finishing/debugging Macintosh port, which now functions as well as the NeXT port.

5) New VARS declaration for algorithms and generators declares variables that are local to the object and reinitialized every time the object begins output processing. See section 7.10.2 for more details.

6) The DOITEMS iteration varible may now be either a single variable, or a list of two varibles, (var1 var2), where the var1 is the iteration varible and var2 is the state variable. Supplying a state variable allows forms in the body of doitems to access the current state of the stream.  For example:

(doitems ((i s) (notes [c3 e g]  [c3 e g]  [c3 e g] 
                       [c3 e g]  [c3 e g]  [c3 e g]))
  (element midi-note note i amplitude .5 duration .15 
           rhythm (if (eq s ':chording) 0.0 .5)))

7) SListen now prompts for the number of times to sequence if just one selection is specified to the command. Note that a single selection can itself be a subrange, ie:

    Stella [Top-level]: Slisten foo
    Stella [Top-level]: Slisten foo[1:5]

8) The initially option to random, heap and graph streams now accept the value ANY, which causes the stream to randomly select its initial datum.

9) Variable *pprint-archive* controls whether or not objects are pretty printed when archived. Pretty printing takes slightly longer than normal printing, put produces a more legible result.  Pretty printing is only important if you want  to list or edit a .stella file.

Bug Fixes:

1) Fixed pathname problem in MCL that caused file extensions to appear twice.

1) Read macro #@ in MCL now handles both ccl's and cm's meaning.

1) Fixed referencing bug that didn't parse names starting with a number.

2) Fixed bug that still added containers with id NIL to table.

3) All known problems with symbol export/import between the common-music and stella packages are fixed.

5) Fixed even more timing bugs fixed with respect to merges. 

6) New bug: In NeXTStep 3.0, midi output sometimes dies during output processing when using Listen. Try again after issuing the Close command, or simply use the Write command to generate a midi file. The system will automatically prompt for a midi file to be played after it is written.

_____________________________________________________________________


Features and bug fixes from Feb 15, 93:

1) Port of Common Music to SGI Iris under Franz Allegro 4.1. (Midi real time
not yet completed)
2)  Fixed Stella run in MCL. Editor now supports copy/paste and buffer evaluation via Command-E. Command-. now aborts back to the Editor, rather than the Lisp Listener.

_____________________________________________________________________


Features and bug fixes from Jan 1, 93:

1) New referencing scheme in Stella makes it possible to reference groups of objects in parallel. This allows comparative querying to be supported. For example the command:
	map :::2 find (eq $note[1] $note[2])
would map pairwise over all the objects in the current focus container and return the starting positions of each pair of object that had identical values in their note slots.  For more information, see the tutorial section 2.5, or the 'help referencing' topic in the editor.

2) New output syntax CMN allows postscript output using Bill Schottstaedts Common Music Notation package to be produced. Stella must be built with CMN loaded for this to work. Once syntax is set to cmn, either postscript or a cmn input file can be generated bu specifying the appropriate file extension to the write command.

3) Many new mapping operators added: find, count, delete, undelete, insert, append, append-at insert-at.  For more information, see the tutorial section 9.1 or the 'help map' topic in the editor

4) New system container called Io-Streams holds all currently defined output streams. To change the characteristics of stream that already exsts, list the contents of io-streams to find the stream in question, then used the edit command. For example:
	edit io-streams[2]
would edit the 2nd stream object in io-streams.

5) New :element-period options for defmultiple-item have been implemented by Fernando Lopez Lezcano:
:ANY --> any element that reaches end of period returns end of period
:ALL --> only returns end of period when all elements agree on end of 
	 period at the same time. 
:ANY C1 ... CN --> any followed by some component streams, same as any but only 
	           taking into account  the C1...CN components
:ALL C1 ... CN --> :all followed by some component streams, same as :all but 
	           only taking into account the C1...CN components. 
C1 ... CN --> component streams: same as :ALL C1...CN

6) Fixed bug in common music's restp function that caused it to fail with floating point argument.

_____________________________________________________________________


Features and bug fixes from Sept 30, 92.

Much work in implementing and debugging Stella. There is a brand new tutorial about composing in Stella in stella/tutorial/stella-tutorial.rtf

new option "initially-from" for interval streams. The initially-from option is similar to the from option, except that it supplies the offset for the initial period of the interval stream only. Subsequent periods use the last computed value from the stream as the offset value for the current period, causing the new period to start wherever the last period left off. from, initially-from and linked-to are mutually exclusive options.

new option "linked-to" for interval streams.  The linked-to option may be used in conjuntion with a named item steam to link the offset of the current period to the last value that the named stream returned.  The name of the stream to  link to should not be quoted.   from, initially-from and linked-to are mutually exclusive options.

new scale reference predicates: scale=, scale<, scale>.  the new functions provide predicate testing for scale degree references. references may be note, pitch or degree.

new :play command for Franz Lisp.  the :play command plays .snd, .score, .midi or .clm files using the appropriate methods.  default file to play is the last generated score file.

new iteration macro: doitems.  The doitems macro is like Lisp's dotimes and dolist interation macros, but provides iteration over items read from a suppied item stream.

____________________________________________________________________

Features and bug fixes from July 19, 92.

Change to defscorefile

by default, the item function used inside with-part  will notice rests and chords in any type of item stream, not just in note streams.

Change to the in-tempo function:

in-tempo (and the tempo macro) now support an optional second argument, beat, that specifies a pulse value for the tempo.  If no beat is specified the default value of quarter note is used:
Example: 	(in-tempo 60 'q.)

Fix to the decrescedo macro

Fixed the bug that caused only crescendos to be made...

Change to the intervals and steps macro
rests inserted in either the interval specification or the offset stream will have their intended effect, but remember that the offset is reread just once every period. 

Change to the graph pattern type
The to id descriptions for each graph node may now be item streams of id's.  This is a simple way of implementing some pattern type other than the default random selection.
Example: 	(items (a to (items b c))
				   (b to (a))
				   (c to (items a b c in palindrome))
				 in graph)		

Change to the palindrome pattern type
The elided option to the palindrome pattern type now supports a variety
of elision values:
	nil, no		no elision at end points of palidrome
	t, yes		elision at both start and end of palinrome
	start		elision at just the start of the palidrome
	end			elision at just the end of the palindrome
Example:		(items a b c in palindrome elided start)

Tempo scaling in nested rhythm streams now works. The system returns an inner stream's rhythm without rescaling it by the outer streams own tempo factor.  another way to look at this is that, for a given stream, its tempo factor is only applied to elements in the stream that are actually rhythmic data. elements that came from embedded streams remain in the embedded stream's own tempo, whatever that might happen to be:
