Changes to Snack

----------------- Released 1.3, 10/1/98 -----------------------

10/1/98 (new feature) AIFF file support, although there seems to be lots of
files out there that don't adhere to the specification.

10/1/98 (new feature) Sound objects now can be linked to disk files and
streams (Tcl channels) as well as having their audio data in memory.

10/5/98 (new feature) Added -byteOrder option to the sound data command and to all commands taking the -byteswap option, which is deprecated.

10/7/98 (bug fix) Fixed problem playing zero-length sounds on HP-UX.

10/7/98 (bug fix) Fixed problem playing multi-channel disk files.

10/12/98 (bug fix) The configure command now stops any active play/record operation before setting an option. Also, corrected -format and -channels options.

10/12/98 (new feature) Added cget command to complement configure command.

10/14/98 (bug fix) Fixed problem with insert command.

10/21/98 (bug fix) Fixed problem with APause() on IRIX.

----------------- Released 1.4b, 10/26/98 -----------------------

10/26/98 (new feature) Makefile now also builds a Tcl only libsound.so

10/28/98 (new feature) Split OSound.c into jkSound*.c and added Snack_AddSoundCmd() for Snack extensions. Added pause command.

10/30/98 (bug fix) StopSound() now only called if the format of the sound samples change while a sound is playing, as a result of read or copy, e.g.

11/3/98 (bug fix) Fixed bug in destroyCmd() and flushCmd() causing unwanted closing of audio device.

11/6/98 (bug fix) Fixed bug in Snack_SoundCmd() for -load'ing raw files.

11/11/98 (new feature) Better validation of options -fftlen/-winlen/-channel.

11/18/98 (bug fix) Snack now more robust to audio device peculiarities, misc audio fixes for HP-UX, Solaris, Linux, and Windows.

11/18/98 (new feature) Play commands now queue up and play in sequence.

11/22/98 (bug fix) Fixed bugs in SmpMov() and lengthCmd() for byte sized sample data.

12/19/98 (new feature) Added -colormap option to spectrograms.

12/20/98 (new feature) Added on the fly sample conversion for play back, lin8 on HP-UX and u-/A-law on Linux (if not supported by the hardware).  

12/22/98 (new feature) PS generation for color spectrograms.

----------------- Released 1.4p2, 1/1/99 -----------------------

1/1/99 (new feature) Added -subsample option to waveforms. Now large sounds can be sub-sampled when drawing the waveform envelope. This can be much faster. For some synthetic sounds this can be problematic, in this case setting -subsample to 1 gives the old behaviour, i.e. don't sub-sample. Fixed drawing of zoomed sounds which look nicer now.

1/1/99 (new feature) Made some optimizations to spectrogram drawing. Added -gridcolor option. 256-color displays now supported under Windows.

1/4/99 (new feature) Raw file input now tries to guess byte order and sample format if they weren't specified in the read/data commands.

1/7/99 (new feature) Added -fileformat option to the sound write command which overrides the guess of format from the file name extension.

1/15/99 (new feature) Added sound convert command. Rather simple resampling algorithm (to start with).

1/26/99 (new feature) Modified spectrogram canvas item code with the goal of making it replace the spectrogram widget, which is now deprecated.

1/27/99 (bug fix) Swapped Lin8 and Lin8offset everywhere, long overdue.

1/29/99 (new feature) Split the file AudIO.c into one jkAudIO_*.c per platform. Renamed some other source and header files too.

2/1/99 (bug fix) Waveforms redraw properly now.

----------------- Released 1.5a1, 2/8/99 -----------------------

2/8/99 (new feature) It is now possible to add new sound file formats using the Snack_AddFileFormat() function. Only reading supported to start with.

2/8/99 (new feature) Added support for the NIST/Sphere file formats (NistFile.c). This must be specified at configure time, see the README file.

2/8/99 (new feature) Automatic detection of byte order and sample encoding format now also for -file/-channel sounds.

2/8/99 (new feature) Snack now uses immediate loading. This eliminates the problems with, for example, finding the Snack item types in some cases.

2/8/99 (feature change) Waveform -subsample option now has a default value of 1.

2/9/99 (bug fix) Copy command now allocates sufficient memory when copying multi-channel sounds.

2/10/99 (bug fix) Fixed canvas item bug when UpdateXXX() is called before an item has been drawn on screen.

----------------- Released 1.5a2, 2/10/99 -----------------------

2/12/99 (bug fix) Corrected error progagation when failing to read sounds and parsing headers.

----------------- Released 1.5b1, 2/16/99 -----------------------

2/21/99 (new feature) Convert command now does low-pass filtering when resampling sounds.

2/21/99 (bug fix) Corrected the code for immediate loading, which would have caused problems in future versions.

2/21/99 (new feature) Improved documentation and configuration of the snackSphere package.

2/22/99 (bug fix) Corrected right edge padding of spectrograms.

2/28/99 (new feature) Created commands getOGIwave and createOGIwave for interaction between Snack sounds and the wave objects of the OGI toolkit.

3/1/99 (new feature) Added support for reading the MPEG layer 3 sound format.

----------------- Released 1.5b2, 3/3/99 -----------------------

3/17/99 (new feature) Added Snack_GetSound() function which returns a sound struct given a sound command name.

3/18/99 (bug fix) Corrected bug for file based playback of MP3 sounds.

----------------- Released 1.5b3, 3/18/99 -----------------------

3/20/99 (feature change) A number of options to the play and record commands are now deprecated. The configure command provides this functionality. Also, sound command options should now be written in lower case only.

3/23/99 (removed feature) The spectrogram widget was removed as all functionality is provided by the corresponding canvas item.

----------------- Released 1.5b4, 3/27/99 -----------------------

4/6/99 (bug fix) Changed the parsing of sound file headers to allow for example MP3 sounds to be played over a socket connection.

4/6/99 (bug fix) Fixed stereo audio on SGI.

----------------- Released 1.5, 4/6/99 -----------------------

4/8/99 (bug fix) Updated g711.c with fix for Snack_Lin2*() functions.

4/9/99 (feature change) The Snack Tcl library now uses a namespace.

4/12/99 (feature change) The auto detection of encoding format (for raw files) now assumes that Mulaw/Alaw files are 8kHz and that lin8 files are 11.025 kHz.

4/15/99 (enhancement) Added simple sound viewer cool.tcl. Fixed aserver.tcl doesn't hang during exit on Windows anymore.

----------------- Released 1.5p1, 4/15/99 -----------------------

5/3/99 (new feature) Added -fileformat option to the sound read/data/append commands that overrides the file format auto-detection function.

5/3/99 (feature improvements) Improved sample file header detection/parsing.

5/3/99 (API change) The amount of sound data to transfer using Snack_Get{Put}SoundData() should now be specified in bytes.

5/9/99 (bug fix) Fixed bug in sound data command for stereo sounds. Caused too much data to be written to binary Tcl variables.

----------------- Released 1.5p2, 5/10/99 -----------------------

5/20 (bug fix) Proper clean-up if an error occurs during creation of a sound.

5/26 (bug fix) Bug fix for the AIFF header parsing routine. (Barras)

5/26 (new feature) User fields in the sound structure to be used with, e. g.,
new file formats. (Zhou)

5/26 (improved feature) Changed and improved the mixer code. Snack's mixer interface is now orthogonal to audio device functions such as play/record. It also reflects the underlying hardware capabilities better. Some minor changes to the API.
*** POTENTIAL INCOMPATIBILITY ***

----------------- Released 1.6a1, 5/27/99 -----------------------

5/30 (bug fix) More robust seeking in MP3 files.

5/30 (bug fix) The play command callback (-command) now gets executed when -start is at the very end of a sound.

----------------- Released 1.6a2, 5/31/99 -----------------------

5/31 (improved feature) Added format Lin8 (AFMT_S8) for Linux (if supported by hardware). (Barras)

5/31 (improved feature) If the audio device supports a sampling frequency close to the requested one, it will be used without reporting an error. (Barras)

6/7 (improved feature) The "audio frequencies" command on Linux now reports the actual audio device capabilities.

6/7 (enhancement) More informative error messages for audio I/O.

6/8 (new feature) Snack can now use the Tcl/Tk stub libraries (default behaviour). Also, eliminated use of private Tcl library functions.

6/14 (feature change) The sound read/write commands now do nothing if filename is specified as "".

6/15 (new feature) Extensions to Snack can now link with Snack's stub library (libsnackstub1.6.a) This is the preferred method.

----------------- Released 1.6b1, 6/15/99 -----------------------
