Snd 21.1:

s7: s7_hash_code and hash-code (like CL's sxhash)
    s7_define_semisafe_typed_function

checked: notcurses 2.1.6, sbcl 2.1.1

Thanks!: Massimiliano Gubinelli, IOhannes m zmoelnig



===============================================================================

Snd 20.9:

Snd: clm.rb and snd-test.rb updated for Ruby 3.0, thanks to Mike.

s7: add s7_load_c_string and s7_load_c_string_with_environment
    tools/tmock.scm, tnum.scm, concordance.scm
    notcurses_s7.c assumes version 2 of notcurses; for version 1, pass -DNOTCURSES_1=1.

checked: Fedora 33, Ubuntu 20.10, sbcl 2.0.10

Thanks!:  Woody Douglass, Christos Vagias, Mike Scholz, IOhannes m zmoelnig,
          David Runge

===============================================================================

Snd 20.8:

Snd: removed gtk support
     Mike Scholz updated the Forth and Ruby scripts.

s7: s7_free
    a git repository: git@cm-gitlab.stanford.edu:bil/s7.git
                      https://cm-gitlab.stanford.edu/bil/s7.git

checked: sbcl 2.0.9

Thanks!: Tito Latini, James Hearon, Christos Vagias, Mike Scholz, Fernando

===============================================================================

Snd 20.7:

Snd: new configuration switch: --with-notcurses; uses nrepl.
s7: added emscripten support for webassembly, thanks to Christos Vagias
    mingw fix thanks to Kjetil

checked: gtk 3.99.0|1, OSX 10.15.6, sbcl 2.0.8

Thanks!: Christos Vagias, Kjetil Matheussen

===============================================================================

Snd 20.6:

added case.scm: case* a pattern-matching extension of case
      regex.h entries to libc.scm
      s7_c_pointer_with_type
      notcurses_s7.c, an FFI to the notcurses library
      nrepl.scm, an improvement of repl.scm that uses notcurses (work-in-progress)
      nrepl.c: call nrepl.scm without the need to load libc.scm or notcurses_s7.so
      *autoload-hook*
      open-input|output-function (scheme versions of the existing C functions)

changed subvector parameters to (subvector vect start end new-dimensions)
  Here's a translator from the old to the new versions:

    (define (old-subvector vect len (offset 0))
      (if (pair? len)
          (subvector vect offset (+ offset (apply * len)) len)
          (if (not len)
              (subvector vect offset (vector-length vect))
              (subvector vect offset (+ offset len)))))

checked: OSX 10.15.5, FreeBSD 12.1, sbcl 2.0.7

Thanks!: Daniel Hensel, Kjetil Matheussen, Christos Vagias

===============================================================================

Snd 20.5:

s7: continued work on gmp stuff

checked: sbcl 2.0.5|6

Thanks!: Kjetil, Fernando, James Hearon

===============================================================================

Snd 20.4:

s7: added s7_scheme* argument to s7_is_eqv, and all the s7_set_*_function calls that
      set optimizer functions (the preceding calls were, sadly, not thread-safe).
    libarb_s7.c: a multiprecision library paralleling GSL.  Requires libflint.
      Only in the gmp version of s7.

checked: ubuntu 20.04, sbcl-2.0.4, FC 32, gsl 2.6, Ruby 2.7, gcc/clang 10

Thanks!: Elijah, Woody Douglass, Ian Duncan, Kjetil Matheussen

===============================================================================

Snd 20.3

this version mostly involves internal s7 (and gtk4) changes

checked: sbcl 2.0.3

Thanks!: Kjetil Matheussen

===============================================================================

Snd 20.2:

s7: complete profile.scm revision, (*s7* 'profile)
    s7_let_field_ref|set (for *s7* access from C)
      deprecated current s7_print_length|float_format_precision|gc_stats
    *function* (a function), replaces deprecated __func__
    openlets moved to (*s7* 'openlets), s7-version to (*s7* 'version)

checked: sbcl 2.0.2

Thanks!: Rick Taube, Kjetil Matheussen

===============================================================================

Snd 20.1:

s7: s7_c_type_set_is_equal|is_equivalent|gc_free|gc_mark
    debug.scm and (*s7* 'debug)
    removed coverlets (openlets is now a dilambda)

checked: sbcl 2.0.1

Thanks!: Woody Douglass, Kjetil Matheussen, Rick Taube, Mike Scholz

===============================================================================

Snd 20.0:

Snd: Mike improved several Forth scripts.

s7: added baffle? and goto?

checked: sbcl 1.5.9, 2.0.0, Ubuntu 19.10

Thanks!: Kjetil Matheussen, Tito Latini, Matti Koskinen, David O'Toole,
         Michael Edwards, Mike Scholz.

===============================================================================

Snd 19.8

In Snd, Tito fixed many Snd bugs, involving left-sample and right-sample,
  off-by-1 cases for mark-sample and selection-samples, a bug in s7_load, etc.

checked: sbcl 1.5.7

Thanks!: Kjetil Matheussen, David O'Toole, Tito Latini

===============================================================================

Snd 19.7:

in clm, Anders fixed a bug in mus.lisp.

checked: sbcl 1.5.6

Thanks!: Anders Vinjar, Kenneth Flak, David O'Toole

===============================================================================

Snd 19.6:

s7: added tools directory (timing tests etc)
    moved most-positive|negative-fixnum to *s7*
    s7_load now parallels scheme load; it returns NULL if file not found (or a directory).
    added s7_call_with_catch and define-expansion*.

checked: sbcl 1.5.4|5

Thanks!: Kjetil Matheussen, Woody Douglas

===============================================================================

Snd 19.5.

setter function for vector element type or hash-table key/value can be a closure.

checked: sbcl 1.5.3

Thanks!: Kjetil Matheussen

===============================================================================

Snd 19.4:

no big news this time: things are faster, less buggy...

checked: FC 30 (gcc 9), sbcl 1.5.2, gtk 3.96.0 (Snd compiles)


===============================================================================

Snd 19.3:

clm: Anders added support for 64-bit lispworks.

s7: port-position and port-file (for libc.scm).
    deleted Display and sequence->string (stuff.scm)

checked: sbcl 1.5.1

Thanks!: Daniel Hensel, Anders Vinjar.

===============================================================================

Snd 19.2:

in s7, added (*s7* 'undefined-constant-warnings) to flag typos like #ff or #_input_port?
       added coverlets and openlets (an experiment)

checked: sbcl 1.5.0

Thanks!: Kjetil

===============================================================================

Snd 19.1

in s7, replaced morally-equal? with equivalent?
       format with the control-string as the first argument is now an error
         (I can't remember why I made the port optional)

clm2xen.c: fixed an error message in partials->polynomial (it thought
  an integer was not a number), and a mus-length optimization bug.

checked: sbcl-1.14.16

Thanks!: Nando, Kjetil.

===============================================================================

Snd 19.0

s7: added (*s7* 'history-enabled) at Kjetil's suggestion.
    deprecated s7_gc_unprotect (use s7_gc_unprotect_at).
    added weak-hash-table

The main visible s7 change:

hash-table* is now hash-table, and the old hash-table is gone.
This code can provide backwards compatibility except for some
corner cases involving map and for-each:

(when (string>=? (s7-version) "8.0")
  (define hash-table* hash-table)
  (define (hash-table . args)
    (apply hash-table* (map (lambda (x)
			      (values (car x) (cdr x)))
			    args))))


checked: sbcl 1.4.14|15

Thanks!: Kjetil Matheussen

===============================================================================

Snd 18.9:

Kjetil updated the s7webserver directory

s7: variables can be statically typed via the built-in type checkers like integer?
      for example, (set! (setter 'x) integer?)

audio.c: added JACK_AUTO_SRC (defaults to 1).

checked: FC 29 (gcc 8.2.1), macOS Mojave, sbcl 1.4.13

Thanks!: Kjetil Matheussen

===============================================================================

Snd 18.8:

in clm, Kjetil improved the granulate generator.

in s7, byte? (for byte-* signatures)
       typed (homogenous) vectors of any built-in type, and typed hash-tables
       multidimensional byte-vectors (byte-vectors are vectors now)
       c-object-type (split from c-object?)
       s7_list_nl in s7.h: NULL terminated version of s7_list.

checked: sbcl 1.4.12

Thanks!: Kjetil Matheussen


===============================================================================

Snd 18.7

s7: basic cell size reduced from 56 to 48 bits
    removed (*s7* 'exits)
    gtk-script.c and coretemp.scm (gtk example)

checked: sbcl 1.4.11



===============================================================================

Snd 18.6.

clm: Kjetil added a method to the granulate generator to set the jitter amount.

s7: changed make-shared-vector to make-subvector (Matlab terminology)
    added subvector?, subvector-position, subvector-vector
    added make-weak-hash-table, weak-hash-table?
    s7 is now thread-safe, I think.
    symbol-setter has been folded into setter.
    c-pointer-info|type|weak1|weak2 (the latter are "weak" values)
    reactive.scm (the old stuff.scm code rewritten).

checked: sbcl 1.4.10

Thanks!: Kjetil Matheussen


===============================================================================

Snd 18.5:

s7 to version 7 (many internal changes).

checked: sbcl 1.4.8|9, gtk 3.94.0

Thanks!: Kjetil Matheussen

===============================================================================

Snd 18.4:

s7: s7_c_object_type_set* various changes

clm: added (clm-initialize-links) at end of all.lisp
     Koen De Turck updated the openBSD audio support

checked: sbcl 1.4.7, FC 28 (gcc 8.0), Ubuntu 18.04, openbsd 6.3

Thanks!: Kjetil Matheussen, Michael Edwards, Koen De Turck.


===============================================================================

Snd 18.3

removed: new-backgrounds.scm, snd14.scm, old-number-tests.scm
removed: make-cairo and free-cairo
s7 added: c-pointer->list
snd now compiles and runs (well, sort of) in gtk4.

checked: sbcl 1.4.6

Thanks!: Jennifer Doering, Mike Scholz

===============================================================================

Snd 18.2:

s7: added +nan.0 and +inf.0 to be compatible with other schemes
    +iterator+ now instead of iterator? for closure-as-iterator
    deprecated the s7_ulong and s7_ulong_long functions.

Marty Hayman got libgtk_s7.c to work in gtkex.c.

checked: sbcl 1.4.5 (in linux)

Thanks!: Marty Hayman


===============================================================================

Snd 18.1

s7: added (*s7* 'max-heap-size)

checked: sbcl 1.4.4

Thanks!: Mike Scholz, Kjetil Matheussen, Marty Hayman, Yuri

===============================================================================

Snd 18.0:

many Forth/Ruby improvements thanks to Mike.

in Snd, xg.c is no longer included automatically.  The changes for
  gtk 4 are very extensive.

added snd.desktop and tools/auto-tester.scm.

checked: sbcl 1.4.2|3, gtk 3.93.0

Thanks!: Mike Scholz, Kjetil Matheussen, Yuri, Daniel Hensel

===============================================================================

Snd 17.9:

various bugs fixed.

checked: FC 27, gsl 2.4, gtk 3.92.1, sbcl 1.4.1, OSX 10.13.1, Ubuntu 17.10

Thanks!: Tito Latini, Michael Edwards

===============================================================================

Snd 17.8:

Snd: moved from cvs to svn at sourceforge:
     svn checkout svn://svn.code.sf.net/p/snd/svn1/trunk snd

s7: added immutable!, immutable?
    define-constant follows normal lexical scoping rules now
    symbol-access renamed symbol-setter
    added third optional argument to the symbol-setter: the relevant environment
    deprecated s7_procedure_with_setter, s7_symbol_access
    renamed let-set!-fallback to let-set-fallback since I never remember the "!"
    renamed procedure-signature -> signature,
            procedure-documentation -> documentation,
            procedure-setter -> setter.
      these are all generic, so the "procedure" part is misleading, but
      unfortunately these new names collide with the previous function-local
      variables (for example, documentation accessed by procedure-documentation).
      Since those variables are normally constants, and since I can't think of
      anything better, they are now of the form +documentation+.

clm: removed *clm-default-frequency*; Mike fixed the Ruby and Forth cases.

checked: sbcl 1.4.0

Thanks!: Mike Scholz.


===============================================================================

Snd 17.7:

Mike Scholz provided changes for Ruby 2.5.

s7: changed various "object" names to "c_object" in s7.h ("object" was ambiguous)
    c-pointers can participate in the generic function stuff
    gtkex.scm
    json.scm (aimed at the Language Server Protocol, eventually in emacs perhaps)

checked: gtk 3.91.2, sbcl 1.3.21

Thanks!: Kjetil Mattheussen, Mike Scholz

===============================================================================

Snd 17.6.

s7: (*s7* 'heap-size) is settable
    added s7_define_typed_function_star to s7.h
    changed to the new (c99?) int64_t style int types.
    added two optional args to c-pointer: type, info
      and added s7_is_c_pointer_of_type.
    libgtk_s7.c (in-progress)

clm: removed clm-default-frequency
     object->let support for generators

checked: sbcl 1.3.19|20, gtk 3.91.1

Thanks!: Mike Scholz, James Hearon

===============================================================================

Snd 17.5:

s7: s7_history and s7_add_to_history (Kjetil's suggestion).
    (*s7* 'history) for non-error scheme-side access to the history info
    lambda* keyword argument handling changed slightly.
    multithread sanity-checks thanks to Kjetil.
    Kjetil also ported s7 to mingw.

checked: gtk 3.91.0, sbcl 1.3.18, FC 26 (gcc 7.1.1)

Thanks!: Kjetil Matheussen, Rick Taube

===============================================================================

Snd 17.4:

the clm optimizer has been totally rewritten.
s7 new built-in function: type-of

checked: gtk 3.90.0, sbcl 1.3.17

Thanks!: Tito Latini, Kjetil Matheussen, Renato Fabbri.

===============================================================================

Snd 17.1:

*rootlet-redefinition-hook*
{apply_values} -> apply-values, {list} -> list-values, {append} -> append
a case clause without a result returns the selector
(*s7* 'autoloading) to turn the autoloader on and off
sandbox in stuff.scm for protected evaluation

in clm: clm.asd updated by Tito Latini.

checked:  gsl 2.2.1, gtk 3.89.2, sbcl 1.13.3, FreeBSD 11.0

Thanks!: Tito Latini, Kjetil Matheussen, Juan Cerillo, Mike Scholz.


===============================================================================

Snd 17.0.

Tito Latini fixed many bugs, especially in save-state and snd-mix,
  and made it possible to move dialogs between desktops in Motif.

Mike Scholz updated snd-test.fs|rb and made clm.rb compatible
  with the latest Ruby.

checked: gtk 3.22.2|3|4, gtk 3.89.1, sbcl 1.3.11|12.

Thanks!: Mike Scholz, Anders Vinjar, Tito Latini, Kjetil Matheussen,
         IOhannes m zmölnig.


===============================================================================

Snd 16.9:

Anders Vinjar provided tankrev.scm
Tito Latini fixed a bug in clm's tap generator (discovered by AV).

Snd: removed snd13.scm

s7: make-keyword -> string->keyword

checked: FC 25, gtk 3.21.6 3.22.0|1, sbcl 1.3.10
  in gtk 3.22.0, the basic display mechanism changed again(!) so
  (at least today) the window-manager close decoration is messed up,
  and I probably missed other troubles -- please let me know
  as you encounter them.

Thanks!:  Anders Vinjar, IOhannes m zmölnig, Tito Latini.


===============================================================================

Snd 16.8.

cmn: Michael Edwards got cmn to work in ECL.

s7: object->let
    changed ->byte-vector to string->byte-vector
    let-temporarily is now built-in

checked: sbcl 1.3.8|9, gtk 3.21.5

Thanks!: Michael Edwards.

===============================================================================

Snd 16.7.

changed compute-string and compute-uniform-circular-string to vibrating-string, etc.

checked: gtk 3.21.3|4, sbcl 1.3.7.

Thanks!: Carlos Carrasco

===============================================================================

Snd 16.6.

added snd-lint.scm (Snd extensions for lint)

s7's symbol function now takes any number of string args
  these are all concatenated to form the new symbol name
s7's make-vector no longer takes an optional fourth argument.

checked: gtk 3.21.2, sbcl 1.3.6, Fedora 24

Thanks!: Joe Python, Tito Latini.

===============================================================================

Snd 16.5

Kjetil Matheussen added the --with-webserver configuration flag to Snd, and
  made all the supporting changes.

Daniel Hensel sent instructions to build Snd in OSX -- see README.Snd.

ttaenc removed: it appears to be dead (no movement in 10 years), or infected.

changed spectr.scm to export only *spectr*, rgb.scm *rgb*.

checked: sbcl 1.3.4|5, gtk 3.20.2|3 3.21.1, gsl 2.1

Thanks!: Greg Santucci, Daniel Lopez, Kjetil Matheussen, Daniel Hensel

===============================================================================

Snd 16.4:

added stdin-prompt
added s7/s7webserver directory to Snd

checked: gtk 3.19.10|11, gtk 3.20.0|1, sbcl 1.3.3

Thanks!: Kjetil Matheussen, Mike Scholz, James Hearon, Arthur Green,
         pbatch, Daniel Lopez, Greg Santucci.


===============================================================================

Snd 16.3

added s7 profiler if WITH_PROFILE is set, profile.scm.
moved multiple-value-set! macro to stuff.scm
port-line-number is settable (for fancy #readers)
*cload-directory* (a string) for cload output files (default is "")
removed quasiquoted vector support (it was disabled by default)

checked: gtk 3.19.7|8|9, sbcl 1.3.2

Thanks!: Kjetil Matheussen, Nando, IOhannes m zmölnig, Mike Scholz.

===============================================================================

Snd 16.2:

owlet error-history field if WITH_HISTORY=1, (*s7* 'history-size) sets its size
added *read-error-hook*
removed s7_eval_form, changed s7_eval to take its place
s7_eval_c_string takes only one statement now (use begin to handle multiple statements)
added s7_load_with_environment

checked: gtk 3.19.4|5, ruby 2.4

Thanks!: Kjetil Matheussen, Anders Vinjar, Tito Latini, Mike Scholz.


===============================================================================

Snd 16.1:

most of my time went into lint.scm, but the harder I work
on it, the longer my TODO list.

s7: :key and :optional removed.

checked: gtk 3.19.1|2|3, sbcl 1.3.0, GSL 2.0

Thanks!: Norman Gray


===============================================================================

Snd 16.0:

in s7, the d,f,s,l exponents are now disabled by default (use e,E,@)
       hash-table-size -> length
       append is generic
       make-random-state -> random-state

checked: gtk 3.18.0|1|2, FC 23, OSX 10.11, sbcl 1.2.16

Thanks!: Greg Santucci, Tito Latini


===============================================================================

Snd 15.9:

procedure-signature, c-object?, proper-list?, float?
list? is now "pair or null" -- use proper-list? for R5RS list?
(*s7* 'float-format-precision)
libutf8proc.scm (bindings for the utf8proc library)
The clm optimizer revision is about 2/3 done

checked: sbcl 1.2.14|15, gtk 3.17.6|7|8

Thanks!: Greg Santucci, Caio Giovaneti de Barros, Carlos Carrasco

===============================================================================

Snd 15.8:

changed make-iterator with a closure argument -- the closure
  is now called without any arguments, and the it should
  contain a variable named 'iterator? with a non-false value.

s7 now calls setlocale(LC_NUMERIC, "C") at startup.

What used to be called the run macro (clm optimizer) has been
  completely rewritten for about the sixth time; many changes
  in s7.h, etc.

  1990: CL version (from Mus10 from MusicN)
  1993: CL + FFI
  1994: CL->C
  2002: Guile+Snd run macro
  2008: s7+sndlib
  2015: This time for sure!

  This change is about 1/3 complete, so view this version of
  Snd with grave suspicion.

checked: gtk 3.17.4|5, sbcl 1.2.13

Thanks!: Anders Vinjar, Tito Latini, Greg Santucci, Mike Scholz

===============================================================================

Snd 15.8:

changed make-iterator with a closure argument -- the closure
  is now called without any arguments, and the it should
  contain a variable named 'iterator? with a non-false value.

s7 now calls setlocale(LC_NUMERIC, "C") at startup.

What used to be called the run macro (clm optimizer) has been
  completely rewritten for about the sixth time; many changes
  in s7.h, etc.

  1990: CL version (from Mus10 from MusicN)
  1993: CL + FFI
  1994: CL->C
  2002: Guile+Snd run macro
  2008: s7+sndlib
  2015: This time for sure!

  This change is about 1/3 complete, so view this version of
  Snd with grave suspicion.

The Snd CVS site at Sourceforge has been offline for about two
  weeks ("storage fault"), and Sourceforge itself is up for sale.
  I'll update the files there as soon as it comes online (Aug-3 is
  the current prediction).

checked: gtk 3.17.4|5, sbcl 1.2.13

Thanks!: Anders Vinjar, Tito Latini, Greg Santucci, Mike Scholz

===============================================================================

Snd 15.7:

added CM_patterns.scm thanks to Rick and Anders

removed s7 ~<~> format directive
changed bytevector* to byte-vector* (r7rs.scm has definitions of the old forms)
added hash-table-function

checked: gtk 3.17.2|3, sbcl 1.2.12

Thanks!:  Tito Latini, Kjetil Matheussen, Anders Vinjar



===============================================================================

Snd 15.6:

add int-vector? int-vector make-int-vector

changed s7_copy arg interpretation (it's now a normal s7_function).

checked: gtk 3.16.1|2 3.17.1, FC 22 (gcc 5), Ruby 2.2, sbcl 1.2.11

Thanks!: Tito Latini (found and fixed many bugs),
         Donny Ward (MS Visual Studio 2013)

===============================================================================

Snd 15.5:

repl.scm to replace use of readline in various cases.  The main one is
  Snd without a GUI.  In this case, you need to tell Snd where to find
  repl.scm.  In my ~/.snd_s7 file, I have:

  (set! *load-path* (cons "/home/bil/cl" *load-path*))

  I think you can build this into Snd by using the SCRIPTS_DIR flag
  in the makefile.


checked: sbcl 1.2.9|10, gtk 3.15.10|11|12, 3.16.0

Thanks!: Mike Scholz, Tito Latini

===============================================================================

Snd 15.4

before-save-as-hook arg order changed, also new-sound, save-region, save-selection, save-sound-as

deprecated output-name-hook, info-popup-hook, peak-env-hook, start-hook

changed s7_new_type_x args

mus-audio* deprecated (these haven't worked at all for a long time)
mus_set_name (and mus-set-name) deprecated

in CLM, Juan Reyes added sbcl support for gnuplot in dlocsig.lisp

checked: sbcl 1.2.8, gtk 3.15.5|7|8|9

Thanks!: Mike Scholz, Juan Reyes, Anders Vinjar, Michel Dutat

===============================================================================

Snd 15.3

procedure-documentation no longer refers to an optional string that happens
  to be the first thing in a procedure body, but to the value of a variable
  named 'documentation' in the procedure's environment.

procedure-arity is deprecated, s7_procedure_arity replaced by s7_arity.
  procedure-name is deprecated. data-format removed (see snd15.scm).

format has another control directive: ~N or ~n which gets a numeric argument
  from the argument list: (format #f "~nD" 20 123)

with-sound argument order changed slightly. It is now: output channels srate.
  Ideally, other Snd functions like new-sound would follow the same argument
  order -- let me know if this change would cause you problems.

float-vector-equal? -- relative difference of two float-vectors.

make-iterator, iterate, iterator? -- replace make-hash-table-iterator and
  hash-table-iterator? These are generic functions to traverse sequences.

if (*s7* 'safety) > 1, optimization is turned off
(*s7* 'maximum-stack-size) is now (*s7* 'max-stack-size)
(*s7* 'print-length) replaces *vector-print-length*
(*s7* 'bignum-precision) replaces *bignum-precision*
(*s7* 'stacktrace-defaults) replaces *stacktrace*

checked: sbcl 1.2.7, gtk 3.15.4



===============================================================================

Snd 15.2

Mike Scholz fixed bugs in clm and the NetBSD audio code, and updated many of the scripts.
Anders Vinjar added lispworks code for gnuplot in dlocsig.lisp.

all the motif stuff (xm.c, snd-motif.scm etc) has moved to the *motif* environment,
  OpenGL (gl.c, snd-gl.scm) to *gl*, and gtk (xg.c, snd-gtk.scm etc) to *gtk*.

mus-copy (or copy) copies a generator.
added snd15.scm (old vct names)

checked: gtk 3.15.2|3, FC 21, sbcl 1.2.6

Thanks!: Mike Scholz, Matti Koskinen, Kjetil Matheussen, Anders Vinjar, Tito Latini

===============================================================================

Snd 15.1.

Juan Reyes donated his Leslie instrument, rotates, in leslie.cms
  and leslie.ins (in clm).

s7 now has a s7webserver directory containing Kjetil Matheussen's
  s7 web repl.

Mike Scholz updated the Forth and Ruby scripts.

checked: sbcl 1.2.4|5, gtk 3.14.0|1|2|3|4, 3.15.0|1

Thanks!: Kjetil Matheussen, Juan Reyes, Mike Scholz.

===============================================================================

Snd 15.1.

Juan Reyes donated his Leslie instrument, rotates, in leslie.cms
  and leslie.ins (in clm).

s7 now has a s7webserver directory containing Kjetil Matheussen's
  s7 web repl.

Mike Scholz updated some of the Forth and Ruby scripts.

checked: sbcl 1.2.4|5, gtk 3.14.0|1|2|3|4, 3.15.0|1

Thanks!: Kjetil Matheussen, Juan Reyes, Mike Scholz.

===============================================================================

Snd 15.0:

clm and snd: Juan Reyes provided his banded waveguide instrument,
  bandedwg.ins and bandedwg.cms, and a Tibetan bowl: bowl.ins
  and bowl.cms.

s7: *s7* is an environment holding various curiousities.
    moved *gc-stats*, *safety*, and *maximum-stack-size* into *s7*
    added cutlet to remove a binding from an environment

checked: gtk 3.13.7|8|9, sbcl 1.2.3

Thanks!: Juan Reyes

===============================================================================

Snd 14.9:

s7: symbol-access is now just the set accessor function (not a list), and it is
      local to an environment.  See reactive-let et al in stuff.scm.

    define and friends now return the value, not the symbol (like set!).

    added mockery.scm.

    added hash-table* (unconsed args):
        (hash-table '(a . 1) '(b . 2))
        (hash-table* 'a 1 'b 2)

    "let" replaces the "environment" terms
    make-procedure-with-setter is now dilambda

        new name       old name

        let?         environment?
        rootlet      global-environment
        unlet        initial-environment
        with-let     with-environment
        outlet       outer-environment
        sublet       augment-environment
        varlet       augment-environment!
        curlet       current-environment
        owlet        error-environment
        funclet      procedure-environment
        let->list    environment->list
        openlet      open-environment
        openlet?     open-environment?
        coverlet     close-environment
        let-ref      environment-ref
        let-set!     environment-set!
        inlet        environment and environment*

        dilambda     make-procedure-with-setter
        dilambda?    procedure-with-setter?


Snd: edit-position can't be a function
     mus-sound-path and *mus-sound-path*
     *default-output-data-format* is now *default-output-sample-type*
     default-output-data-format is replaced by default-output-sample-type
     similarly, data-format, mus-sound-data-format, mus-data-format->string and mus-data-format-name

checked: gtk 3.13.4|5|6, FreeBSD 10, sbcl 1.2.2.

Thanks!: Francis Derive, Anders Vinjar

===============================================================================

Snd 14.8:

s7: symbol-table function now returns a list of all known symbols.
    require added
    removed unoptimize and reader-expand
    Display macro in stuff.scm
    added ~< expr ~> in format as a sort of "here-string" escape -- any s7 code in
      the brackets is evaluated in the current environment, and the result
      is inserted at that point in the output string (using object->string if
      the result is not a string). This is similar to {var} or $var in various
      shell languages.
    also added ~| as a smarter ~^
    for all output functions, #f as port means no output (/dev/null in effect)

Snd: the numbering for dialog-widgets has changed -- the unused entries were removed.

checked: sbcl 1.2.1, gtk 3.13.3

Thanks!: Greg Santucci


===============================================================================

Snd 14.7.

s7: sort! now operates in-place on lists (it used to copy the list).
    sort! also accepts bytevectors (for r7rs), and as a by-product, strings.
    string-up|downcase built-in (for r7rs).
    stuff.scm.
    cyclic-sequences.
    hash-table-entries.

Snd: removed defvar (use define-envelope), and multiply-arrays (missed earlier)

checked: sbcl 1.1.18|1.2.0, gtk 3.13.1|2

Thanks!: Mike Scholz, David Lowenfels, Corey Mwamba

===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).
     moving-norm (new generator).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

CL clm: bumped version number to 5 (I'll leave clm-4.tar.gz
    for future generations to marvel at).  The new CL clm
    does not have frames or mixers, and has file->frample
    and frample->file in place of file->frame and frame->file.
    Also sound-frames -> sound-framples and so on.

cast into outer darkness:
    continue-float-vector->file
    continue-frame->file
    dac-hook
    file->float-vector
    file->float-vector?
    file->frame
    file->frame?
    float-vector->file
    float-vector->file?
    float-vector-mix
    frame
    frame*
    frame+
    frame->file
    frame->file?
    frame->frame
    frame->list
    frame->sample
    frame-ref
    frame-set!
    frame?
    frames
    make-file->float-vector
    make-file->frame
    make-float-vector->file
    make-frame
    make-frame!
    make-frame->file
    make-level-meter
    make-mixer
    make-mixer!
    make-scalar-mixer
    make-sound-data
    mixer
    mixer*
    mixer+
    mixer-ref
    mixer-set!
    mixer?
    mus-sound-frames
    mus-sound-close-input
    mus-sound-close-output
    mus-sound-open-input
    mus-sound-open-output
    mus-sound-read
    mus-sound-reopen-output
    mus-sound-seek-frame
    mus-sound-write
    region-frames
    sample->frame
    save-mixes
    selection-frames
    sound-data*
    sound-data+
    sound-data-add!
    sound-data-chans
    sound-data-copy
    sound-data-fill!
    sound-data-length
    sound-data-maxamp
    sound-data-multiply!
    sound-data-offset!
    sound-data-peak
    sound-data-ref
    sound-data-reverse!
    sound-data-scale!
    sound-data-set!
    sound-data?
    stop-dac-hook
    transform-frames
    with-level-meters
(some backwards compatible replacements are in snd14.scm)


Some notes on updating:
  the main instruments that changed are expandn, freeverb, and fullmix

  mixer -> 1-dim array of floats, size: chans * chans
  frame -> same, size: chans
  sound-data -> 2 dim array of floats, size: '(chans samples-per-chan)
  array of floats = float-vector in scheme, double-array in CL, vct elsewhere

  "frame" -> "frample" in most cases, including mus-file-mix arg names
  envs arg to mus-file-mix-with-envs has same layout as matrix arg
  frample->frample arg order is '(matrix in-vector out-vector)
  most mus-sound-read|write cases can be replaced by array->file and file->array


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.




===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).
     moving-norm (new generator).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

CL clm: bumped version number to 5 (I'll leave clm-4.tar.gz
    for future generations to marvel at).  The new CL clm
    does not have frames or mixers, and has file->frample
    and frample->file in place of file->frame and frame->file.
    Also sound-frames -> sound-framples and so on.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hook sample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter float-vector->file file->float-vector
    float-vector-mix make-float-vector->file make-file->float-vector
    float-vector->file? file->float-vector? continue-float-vector->file


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



Some notes on updating:
  the main instruments that changed are expandn, freeverb, and fullmix

  mixer -> 1-dim array of floats, size: chans * chans
  frame -> same, size: chans
  sound-data -> 2 dim array of floats, size: '(chans samples-per-chan)
  array of floats = float-vector in scheme, double-array in CL

  "frame" -> "frample" in most cases, including mus-file-mix arg names
  envs arg to mus-file-mix-with-envs has same layout as matrix arg
  frample->frample arg order is '(matrix in-vector out-vector)
  most mus-sound-read|write cases can be replaced by array->file and file->array


===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).
     moving-norm (new generator).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

CL clm: bumped version number to 5 (I'll leave clm-4.tar.gz
    for future generations to marvel at).  The new CL clm
    does not have frames or mixers, and has file->frample
    and frample->file in place of file->frame and frame->file.
    Also sound-frames -> sound-framples and so on.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hook sample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter float-vector->file file->float-vector
    float-vector-mix make-float-vector->file make-file->float-vector
    float-vector->file? file->float-vector? continue-float-vector->file


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).
     moving-norm (new generator).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hook sample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter float-vector->file file->float-vector
    float-vector-mix make-float-vector->file make-file->float-vector
    float-vector->file? file->float-vector? continue-float-vector->file


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).
     moving-norm (new generator).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hook sample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hook sample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



===============================================================================

Snd 14.6

s7: gensym? environment*

clm: even|odd-weight|multiple (new built-in functions).

   deprecate frame and mixer generators -- use float vectors instead.

   finally deprecate sound-data objects -- this includes a bunch of
      functions such as dac-hook, mus-sound-read, etc.

   "frample" replaces "frame" wherever "frame" refers to
      a set of samples that represent a single sampling instant
      (also known as a "sample frame").  So, the generator once
      known as "file->frame" is now "file->frample".

    mus-mix -> mus-file-mix,
    mus-mix-with-envs -> mus-file-mix-with-envs.

cast into outer darkness:
    selection-frames make-frame make-frame! make-frame->file
    make-mixer make-mixer! file->frame file->frame? sound-data sound-data*
    sound-data+ sound-data-add! sound-data-chans sound-data-copy
    sound-data-fill! sound-data-length sound-data-maxamp sound-data-multiply!
    sound-data-offset! sound-data-peak sound-data-ref sound-data-reverse!
    sound-data-scale! sound-data-set! sound-data? make-scalar-mixer
    make-sound-data frame frame* frame+ frame->file frame->file?
    frame->frame frame->list frame->sample frame-ref frame-set! frame?
    frames frames frames stop-dac-hook continue-frame->file
    transform-frames mixer mixer* mixer+ mixer-ref region-frames
    mixer-set! mixer? mixers dac-hooksample->frame save-mixes
    with-level-meters mus-sound-frames mus-sound-seek-frame
    make-file->frame make-level-meter


checked: gtk 3.11.9|12.0|1, sbcl 1.1.17

Thanks!: Mike Scholz.



===============================================================================

Snd 14.5:

CLM: Lispworks port thanks to Anders Vinjar.

many internal changes (13 Mbytes in the changelog),
  but none visible, I hope.

checked: gtk 3.11.6|7|8, sbcl-1.1.16

Thanks!: Rick, Anders, Tito Latini.


===============================================================================

Snd 14.4:

Mike Scholz updated sndins.c.

s7: changed lambda* arg handling slightly to mimic CL.
    added when and unless (for r7rs; these were macros).

CLM: Frank Zalkow donated lw-all.lisp.

checked: gtk 3.11.4|5, sbcl 1.1.15.

Thanks!: Rick, Mike, Frank Zalkow, James Hearon.


Just a progress report, some timings:

  version     12.x  13.0  14.4

  snd-test     359   275  39.7  (no gui)
  s7test      1721  1358   974  (hard to optimize)
  make-index 44300  3291  1382  (hooray for char-position)
  t455|6       265    89   5.2  (the s7.html torture tester)
  t502          90    43  13.6  (pure clm)
  bench      42736  8752  3447  (the standard Gabriel tests)
  lat          229    63  30.4  (old-style academistry)

These are callgrind numbers.  Currently if you're running the
gtk Snd, nearly all the time is going to gtk and cairo.



===============================================================================

Snd 14.4:

Mike Scholz updated sndins.c.

s7: changed lambda* arg handling slightly to mimic CL.
    added when and unless (for r7rs; these were macros).

CLM: Frank Zalkow donated lw-all.lisp.

checked: gtk 3.11.4|5, sbcl 1.1.15.

Thanks!: Rick, Mike, Frank Zalkow, James Hearon.


Just a progress report, some timings:

  version     12.x  13.0  14.4

  snd-test     359   275  39.7  (no gui)
  s7test      1721  1358   974  (hard to optimize)
  make-index 44300  3291  1382  (hooray for char-position)
  t455|6       265    89   5.2  (the s7.html torture tester)
  t502          90    43  13.6  (pure clm)
  bench      42736  8752  3447  (the standard Gabriel tests)
  lat          229    63  30.4  (bad-old-style academistry)

These are callgrind numbers.  Currently if you're running the
gtk Snd, nearly all the time is going to gtk and cairo (mainly,
I think, to their allocation functions).


===============================================================================

Snd 14.3
read-sample-with-direction
make-float-vector
mus-set-formant-frequency
make-polywave additional args xcoeffs ycoeffs
mus_file_read* changed and mus-sound-read
mus-sound-preload
checked: sbcl-1.1.14, FC 20
Thanks!: Mike Scholz, Dave Phillips.

===============================================================================

Snd 14.2:

added *show-indices* etc (the old procedure-with-setter globals
  can now be accessed as normal variables -- there are about
  200 of them).

with-tracking-cursor changed again! (added :track-and-stay to
  make the cursor stay where the play stops).

removed (obsolete) trap-segfault.

s7: bignum-precision is now a variable: *bignum-precision*.
    added *maximum-stack-size* to catch infinite recursion.

checked: gtk 3.10.2|11.0|2, OSX 10.9, sbcl 1.1.13

Thanks!: Ray Rashif, Robert Komar

===============================================================================

Snd 14.1:

removed frame.scm and mixer.scm (frames and mixers have been replaced
  by float-vectors in s7-clm).

checked: gtk 3.9.16, 3.10.0|1, sbcl 1.1.12.

Thanks!: Mike Scholz.

===============================================================================

Snd 14.1:

mostly bug fixes.

checked: gtk 3.9.16, 3.10.0, sbcl 1.1.12.

Thanks!: Mike Scholz.

===============================================================================

Snd 14.0

added --with-readline to the configure script

in s7: make-shared-vector, homogenous int and float vectors
         sound-data and vct (the types) are now just synonyms for vector
         (this is step 3 of the guile->s7 plan from 2008)
         dac-hook data is now a list of float vectors

       ~W in format, :readable as third arg of object->string
         write.scm: pretty-print, checkpoint (removed pretty-print.scm).

       WITH_MAIN compiler flag to include a main program in s7.c (a REPL).

       libc.scm (bindings to most of libc)
       libgsl.scm (bindings for some of GSL)

       reader-expand and reader-cond -- read-time choices (#+ analogs)

removed oscope.scm and sound-data->sound-data
removed kmenu.scm (obsolete)

Checked: gtk 3.9.12|14, sbcl 1.1.11

Thanks!:  Rick Taube, James Hearon

===============================================================================

Snd 13.9:

sndlib now can be built by premake4, thanks to Rick.

added --with-audio switch to sndlib configure script.
  innumerable other changes to the configure stuff in snd, sndlib, libxm, clm.
  old switch --with-no-gui is now --without-gui.
  removed --with-just-gl, --enable-readline, snd-as-widget,
          --with-motif-prefix and --with-ruby-prefix.
  Gtk is now the default GUI toolkit, not Motif.

  added make-config-pc.rb to Snd/tools, sndlib, libxm
    this is a script Mike Scholz wrote to create a ruby.pc file if
    your Ruby package omitted it by mistake.

  cload.scm: changed define-c-function to c-define.
  added libm.scm to dynamically load the math library functions.
        libgdbm.scm to load the gdbm library.
        libdl.scm for libdl.
        tools/gdb-s7.scm: some unfinished gdb hackery.

removed trap-segfault.

ported Snd to OpenIndiana (solaris).

checked: gtk 3.9.6|8|10, sbcl 1.1.9|10, gl2ps 1.3.8, Linux Mint 15 (Debian),
	 gsl 1.16.

Thanks!: Nando, Rick, Mike, Orm Finnendahl.

===============================================================================

Snd 13.8.

s7: added autoload (actually moved it from Snd to s7).
    ffitest.c


Snd: listener-colorized, syntax highlighting in glistener.
     colorizer-colors.

     removed the view files dialog from the gtk version, including all the
       related extension language functions, and view-files-select-hook.

     The various file open/save dialogs now (sigh) use gtk's filechooser.

     the file-sorter functions now apply only to the Motif case.


cmn: Lispworks port thanks to Anders Vinjar.
clm: sbcl bugfix thanks to Michael Edwards.

checked: gtk 3.9.2, sbcl 1.1.8, openbsd 5.3 and FC 19 (via VirtualBox)

Thanks!: Victor Gerasimov, Mike Scholz, Anders Vinjar, Michael Edwards, Rick Taube.

===============================================================================

Snd 13.7.

s7: r7rs changes: flush-output-port, vector-append, read|write-string,
       boolean=?, symbol=?, exit, emergency-exit.
       added destination/start/end args to copy.

Snd: new gtk listener, split out as glistener.c/h,
       tests in tools/gcall.c and tools/gtest.scm.

checked: sbcl 1.1.7, gtk 3.9.0

Thanks!: Nando, Jason Ripley, James Hearon

===============================================================================

Snd 13.6

added environment-ref|set!
      char-position and string-position (moved from Snd to s7)
      make-formant-bank and formant-bank? (and changed formant-bank again)
      comb-bank, all-pass-bank, and filtered-comb-bank generators
      one-pole-all-pass generator moved to C
      envelope-interp, rxyk!cos, and rxyk!sin moved to C
      yet another version of oscil-bank

removed mus-file-prescaler and mus-prescaler  -- these no longer serve any purpose.

checked: gtk 3.7.14, 3.8.0|1, sbcl 1.1.6.

Thanks!: Michael Edwards, Mike Scholz


===============================================================================

Snd 13.6

added environment-ref|set!
      char-position and string-position (moved from Snd to s7)
      make-formant-bank and formant-bank? (and changed formant-bank again)
      comb-bank, all-pass-bank, and filtered-comb-bank generators
      one-pole-all-pass generator moved to C
      envelope-interp, rxyk!cos, and rxyk!sin moved to C
      yet another version of oscil-bank

removed mus-file-prescaler and mus-prescaler  -- these no longer serve any purpose.

checked: gtk 3.7.14, 3.8.0|1, sbcl 1.1.6

Thanks!: Michael Edwards, Mike Scholz


===============================================================================

Snd 13.5

moving-max is now built-in.
added vct-min and vct-max.

checked: sbcl 1.1.5, ruby 2.0.0, gtk 3.7.12

Thanks!: Mike and Fernando.


===============================================================================

Snd 13.4

Fernando added 3rd order ambisonics support in dlocsig.scm.

clm+s7 is finally up to speed -- I think it is as fast as
  the old run macro version.  This took about twice as long
  as I expected.

checked: gmp 5.1.0, sbcl 1.1.3|4, FC18 (gcc 4.7.2).




===============================================================================

Snd 13.3

Adam Sampson added DESTDIR support to the makefile.
removed rtio.scm.
removed all the clm safety stuff (*clm-ouput-safety*, mus-safety etc).
as always, Mike Scholz and I have made a bazillion incremental improvements!

Checked: sbcl 1.1.1|2, cmucl 20d, gtk 3.7.2|4, fftw 3.3.3



===============================================================================

Snd 13.3

Adam Sampson added DESTDIR support to the makefile.

removed rtio.scm.
removed all the clm safety stuff (*clm-ouput-safety*, mus-safety etc).

Checked: sbcl 1.1.1|2, cmucl 20d, gtk 3.7.2|4, fftw 3.3.3

Thanks!: Mike, Adam Sampson.


===============================================================================

Snd 13.2

named let*.

deprecated clm-print (snd13.scm has a replacement).

checked: fftw 3.3.2, gtk 3.6.0|1 3.7.0, sbcl 1.1.0

Thanks!: Rick, Mike.



===============================================================================

Snd 13.1:

cload.scm to automatically link in a C function from a C shared library
  this file and lint.scm are now also included in the s7 tarball.
symbol->dynamic-value

checked: gtk 3.5.12|14|16|18, clang 3.1, mpc 1.0.1

Thanks!:  Fernando, Mike, Rick, Anders Vinjar.



===============================================================================

Snd 13.0:

Mike Scholz fixed up the sndins directory.

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd files.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator (in s7 it is now based on environments).
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement).

removed the s7 WITH_OPTIMIZATION switch

checked: gtk 3.5.6|8|10, mpc 1.0, sbcl 1.0.58

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Mike Scholz fixed up the sndins directory.

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd files.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator (in s7 it is now based on environments).
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement).

removed the s7 WITH_OPTIMIZATION switch

checked: gtk 3.5.6|8, mpc 1.0

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Mike Scholz fixed up the sndins directory.

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd files.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator (in s7 it is now based on environments).
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement).

checked: gtk 3.5.6|8, mpc 1.0

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Mike Scholz fixed up the sndins directory.

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd files.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator (in s7 it is now based on environments).
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement).

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator (in s7 it is now based on environments).
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement, used only in Motif version).

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

completely changed defgenerator.
  removed def-clm-struct and ws-interrupt.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement, used only in Motif version).

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

added mus_make_generator, mus_make_generator_type, mus_xen_gen
  (moved parts of defgenerator to C).  removed def-clm-struct.
  defgenerator fields no longer have a type option.
  removed (ancient, obsolete ws-interrupt).

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement, used only in Motif version).

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

added mus_make_generator, mus_make_generator_type, mus_xen_gen
  (moved parts of defgenerator to C).  removed def-clm-struct.

added mus-mix-with-envs (for fullmix), and oscil-bank.

removed gamin support (ancient libfam replacement, used only in Motif version).

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

added mus_make_generator, mus_make_generator_type, mus_xen_gen
  (moved parts of defgenerator to C).  removed def-clm-struct.

added mus-mix-with-envs (for fullmix), and oscil-bank.

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz

===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

added mus_make_generator, mus_make_generator_type, mus_xen_gen
  (moved parts of defgenerator to C).  removed def-clm-struct.

checked: gtk 3.5.6|8

Thanks!:  Matti Koskinen, Mike Scholz


===============================================================================

Snd 13.0:

Matti Koskinen got s7 working in uclinux on the blackfin processor.

removed run.c and the run macro (34000 lines!).

removed ptree-channel, max-virtual-ptrees, optimization,
  optimization-hook, add-clm-field, declare, and all the scheme
  functions that depended on these.

deprecated vct-map! and removed it from the Snd scheme files.
removed trailing with-source arg from display-edits.

added Save icon to the toolbars

moved the clm/clm2xen struct declarations out of the header files,
  and added accessor functions.  (Bumped clm to 5.0, sndlib to 22.0).

added mus_make_generator, mus_make_generator_type, mus_xen_gen
  (moved parts of defgenerator to C).  removed def-clm-struct.

checked: gtk 3.5.6

Thanks!:  Matti Koskinen, Mike Scholz


===============================================================================

Snd 12.12:

s7: open-environment?
    all built-in functions are generic, and any scheme (or C) function can be.
    added throw (like error, but does not affect error-environment, nor call *error-hook*).

Snd: removed the --with-static-* configuration switches.  The difference
       in either file size or runtime size is miniscule compared to
       everything else, and memory is extremely cheap.  This includes
       --with-static-xm|xg|alsa|motif

checked: sbcl 1.0.57, FC 17 (gcc 4.7.0), gtk 3.5.4

Thanks!: Michael Alcorn, Mike Scholz, Brian Damgaard.

===============================================================================

Snd 12.11:

  s7: if WITH_SYSTEM_EXTRAS is 1 (default is 0) include
        directory? file-exists? delete-file getenv directory->list system
      with-baffle to limit the scope of continuations
      #_<name> is the initial (built-in, startup) value of <name>
      *error-info* replaced by error-environment, stacktrace changed slightly.
      hooks changed completely (s7 version bumped to 2.0 since this is a
        large backwards imcompatible change).
      procedure-setter is settable, so most of the old procedure-with-setter
        stuff is gone.
      s7_list, s7_environment_ref|set, s7_procedure_set_setter in s7.h.
      make-type replaced by open-environment. s7.html has a largely backwards
        compatible scheme version of make-type.
      aritable? to check arity match (named "procedure-arity-includes" in srfi-102).
      arity to generalize and replace procedure-arity
      removed trace and untrace (replaced by the trace macro in s7.html).

  sndlib: removed mus-audio-describe, audinfo, ESD audio support.

  Snd: removed print-hook.

checked: sbcl 1.0.56, gtk 3.4.1|3.5.2, autoconf 2.69, ruby 1.9.3-p194, cairo 1.12.2
         gmp 5.0.5

Thanks!: Ludger Brummer, Torsten Anders, Mike Scholz, Rick Taube, Peter Bex.

===============================================================================

Snd 12.11:

  s7: if WITH_SYSTEM_EXTRAS is 1 (default is 0) include
        directory? file-exists? delete-file getenv directory->list system
      with-baffle to limit the scope of continuations
      #_<name> is the initial (built-in, startup) value of <name>
      *error-info* replaced by error-environment, stacktrace changed slightly.
      hooks changed completely (s7 version bumped to 2.0 since this is a
        large backwards imcompatible change).
      procedure-setter is settable, so most of the old procedure-with-setter
        stuff is gone.
      s7_list, s7_environment_ref|set, s7_procedure_set_setter in s7.h.
      make-type replaced by open-environment. s7.html has a largely backwards
        compatible scheme version of make-type.
      aritable? to check arity match (named "procedure-arity-includes" in srfi-102).
      arity to generalize and replace procedure-arity

  sndlib: removed mus-audio-describe, audinfo, ESD audio support.

  Snd: removed print-hook.

checked: sbcl 1.0.56, gtk 3.4.1|3.5.2, autoconf 2.69, ruby 1.9.3-p194, cairo 1.12.2
         gmp 5.0.5

Thanks!: Ludger Brummer, Torsten Anders, Mike Scholz, Rick Taube, Peter Bex.

===============================================================================

Snd 12.11:

  s7: if WITH_SYSTEM_EXTRAS is 1 (default is 0) include
        directory? file-exists? delete-file getenv directory->list system
      with-baffle to limit the scope of continuations
      #_<name> is the initial (built-in, startup) value of <name>
      *error-info* replaced by error-environment, stacktrace changed slightly.
      hooks changed completely (s7 version bumped to 2.0 since this is a
        large backwards imcompatible change).
      procedure-setter is settable, so most of the old procedure-with-setter
        stuff is gone.
      s7_list, s7_environment_ref|set, s7_procedure_set_setter in s7.h.
      make-type replaced by open-environment. s7.html has a largely backwards
        compatible scheme version of make-type.

  sndlib: removed mus-audio-describe, audinfo, ESD audio support.

  Snd: removed print-hook.

checked: sbcl 1.0.56, gtk 3.4.1|3.5.2, autoconf 2.69, ruby 1.9.3-p194, cairo 1.12.2
         gmp 5.0.5

Thanks!: Ludger Brummer, Torsten Anders, Mike Scholz, Rick Taube, Peter Bex.

===============================================================================

Snd 12.11:

  s7: if WITH_SYSTEM_EXTRAS is 1 (default is 0) include
        directory? file-exists? delete-file getenv directory->list system
      with-baffle to limit the scope of continuations
      #_<name> is the initial (built-in, startup) value of <name>
      *error-info* replaced by error-environment, stacktrace changed slightly.
      hooks changed completely (s7 version bumped to 2.0 since this is a
        large backwards imcompatible change).
      procedure-setter is settable, so most of the old procedure-with-setter
        stuff is gone.
      s7_list, s7_environment_ref|set, s7_procedure_set_setter in s7.h.
      make-type has changed completely, and is currently completely broken.

  sndlib: removed mus-audio-describe, audinfo, ESD audio support.

  Snd: removed print-hook.

checked: sbcl 1.0.56, gtk 3.4.1|3.5.2, autoconf 2.69, ruby 1.9.3-p194, cairo 1.12.2
         gmp 5.0.5

Thanks!: Ludger Brummer, Torsten Anders, Mike Scholz, Rick Taube, Peter Bex.

===============================================================================

Snd 12.11:

  s7: if WITH_SYSTEM_EXTRAS is 1 (default is 0) include
        directory? file-exists? delete-file getenv directory->list system
      with-baffle to limit the scope of continuations
      #_<name> is the initial (built-in, startup) value of <name>
      *error-info* replaced by error-environment, and stacktrace changed slightly.
      hooks changed completely

  sndlib: removed mus-audio-describe, audinfo, ESD audio support.

  Snd: removed print-hook.

checked: sbcl 1.0.56, gtk 3.4.1|3.5.2, autoconf 2.69, ruby 1.9.3-p194, cairo 1.12.2
         gmp 5.0.5

Thanks!: Ludger Brummer, Torsten Anders, Mike Scholz, Rick Taube, Peter Bex.

===============================================================================

Snd 12.10.

This version is mostly bugfixes and documentation improvements.
In s7 "@" is now an exponent marker.

checked: gtk 3.3.18|20|3.4.0, gmp 5.0.4, mpfr 3.1.0, cairo 1.12.0

Thanks!: Jeffrey Zimmer, Sean Reed, Michael Edwards, Peter Bex.

===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,
       the "minibuffer" is now a "statusbar".  This means it is not
          editable, so all the key sequences that used to prompt for
          info are either undefined now, or use a dialog instead.
       removed minibuffer-history-length, prompt-in-minibuffer, clear-minibuffer,
          and report-in-minibuffer.  Replaced the latter two with status-report.
       removed sound-specific search-procedures (i.e. there is only one search procedure)
       removed the bomb function

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,
       the "minibuffer" is now a "statusbar".  This means it is not
          editable, which means all the key sequences that used to
          prompt for info are either undefined now, or use a dialog instead.
       removed minibuffer-history-length, prompt-in-minibuffer, clear-minibuffer,
          and report-in-minibuffer.  Replaced the latter two with status-report.
       removed sound-specific search-procedures (i.e. there is only one search procedure)
       removed the bomb function

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,
       the "minibuffer" is now a "statusbar".  This means it is not
          editable, which means all the key sequences that used to
          prompt for info are either undefined now, or use a dialog instead.
       removed minibuffer-history-length, prompt-in-minibuffer, clear-minibuffer,
          and report-in-minibuffer.  Replaced the latter two with status-report.
       removed sound-specific search-procedures (i.e. there is only one search procedure)


checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,
       the "minibuffer" is now a "statusbar".  This means it is not
          editable, which means all the key sequences that used to
          prompt for info are either undefined now, or use a dialog instead.
       removed minibuffer-history-length, prompt-in-minibuffer, clear-minibuffer,
          and report-in-minibuffer.  Replaced the latter two with status-report.


checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,
       the "minibuffer" is now a "statusbar" to use up-to-the-minute jargon.
         This means it is not editable, which means all the key sequences
         that used to prompt for info are either undefined now, or use a
         dialog instead.
       removed minibuffer-history-length, prompt-in-minibuffer, clear-minibuffer,
         and report-in-minibuffer.  Replaced the latter two with status-report.


checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html (these were
       using Javascript for stuff that is now built into html), and
       translated the rest of the html files to html5.

  snd: removed the recorder, recorder-dialog, snd-g|xrec.c,
       changed various menu names and added a view:with-grid menu
       moved dialog buttons around at random,
       removed minibuffer-history-length, prompt-in-minibuffer,
       removed save-macros and named keyboard macros,
       added context-sensitive tooltips to the gtk version,
       changed the gtk listener default font to Monospace 11,



checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html, and
    translated the rest of the html files to html5

  snd: removed the recorder, changed various menu names, moved
       dialog buttons around at random.
       removed minibuffer-history-length, prompt-in-minibuffer

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html, and
    translated the rest of the html files to html5

  snd: removed the recorder, changed various menu names, moved
       dialog buttons around at random.

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14|16

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html, and
    translated the rest of the html files to html5

  snd: removed the recorder, changed various menu names, moved
       dialog buttons around at random.

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html, and
    translated the rest of the html files to html5

  snd: removed the recorder, changed various menu names, moved
       dialog buttons around.

checked: clang 1.7, gmp 5.0.3, gtk 3.3.14

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  clm/cmn/snd/s7: removed snd1.html and snd-contents.html, and
    translated the rest of the html files to html5


checked: clang 1.7, gmp 5.0.3, gtk 3.3.14

Thanks!: Mike Scholz


===============================================================================

Snd 12.9

  Mike Scholz got Snd to compile/load/run in
     FreeBSD 8, 9, and 10
     CentOS: gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
     Ubuntu: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
     Debian: gcc (Debian 4.4.5-8) 4.4.5
     NetBSD
     OpenBSD

  s7: added random-state?, hash-table-iterator?, and morally-equal?

  removed snd1.html, snd-contents.html (the other html files are moving
    to HTML5 as rapidly as possible)


checked: clang 1.7, gmp 5.0.3, gtk 3.3.14

Thanks!: Mike Scholz


===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55, gtk 3.3.8|10|12

Thanks!: Mike Scholz, Rick Taube.


===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55, gtk 3.3.8|10|12

Thanks!: Mike Scholz.


===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55, gtk 3.3.8|10

Thanks!: Mike Scholz.


===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55, gtk 3.3.8|10

Thanks!:

===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55, gtk 3.3.8

Thanks!:

===============================================================================

Snd 12.8

s7: added logbit? (using gmp arg order, not CL)

    added reverse argument (in C) to s7_new_type_x and (in scheme) to make-type.
      This is needed because an object might implement the apply and set methods,
      but they might refer to different things (I should have noticed this a long
      time ago...)

    s7_environment_to_list and environment->list return just the local environment's
      bindings.  They used to crawl up the environment chain, but that can now be
      done with outer-environment.

    outer-environment returns the environment enclosing its argument (an environment).

    added an object system example in the environments section of s7.html.
      It's based on environments as classes/instances.

checked: sbcl 1.0.55

Thanks!:

===============================================================================

Snd 12.7

s7 is faster, but not enough so to remove the run macro.
  This business has taken longer than I expected.

checked: gtk 3.3.4|6, sbcl 1.0.54

Thanks!: Rick Taube, Michael Edwards, Mike Scholz

===============================================================================

Snd 12.6

  s7 is faster.
  removed the --with-doubles configuration switch.
  changed s7_make_closure args (see s7.h).
  added procedure-name and s7_procedure_name.

checked: sbcl 1.0.52|3, gtk 3.2.1|3.3.2, fth 1.2.9, cmucl 20c

Thanks!: Michael Edwards, Geoff Lee, Mike Scholz, Rick Taube.


===============================================================================

Snd 12.5

This version involves primarily s7 optimizations.  About half the
  standard clm instruments now run nearly as fast without the run
  macro as with it.  Progress has been slow...

in clm, the function output option in out* and in* has been removed.
        added mus-type

checked: sbcl 1.0.51, gtk 3.1.16|18|90|92 3.2.0, ruby 1.9.3

Thanks!: Mike Scholz, Brooke Mitchell


===============================================================================

Snd 12.4.

  removed thread support from Snd/s7/sndlib.
  removed snd9.scm.

  s7 is nearing the point where we can get rid of the run macro.
  Currently the fm-violin in C takes 400 callgrind units to generate
  20 seconds of sound, in run it takes 480, and in s7 by itself, 700.
  In Snd 12.2, s7 took 4896, in Snd 11.10 from last August, 7392.


checked: sbcl 1.0.50, gtk 3.1.10|12

Thanks!: Mike Scholz


===============================================================================

Snd 12.3

  removed the profiling option in s7.

  all my time in this version went into trying to make s7 faster.
    I believe it is now 3 times as fast as it was in early May.

  Unless someone objects violently, I'm going to remove the multithreading
    support from s7.  It has turned out to be less useful than I hoped,
    mainly because s7 threads share the heap and therefore have to coordinate
    all cell allocations.  So it's faster, and simpler to use multiple
    pthreads each running a separate s7 interpreter, rather than one s7
    running multiple s7 threads.  In clm, the contention is for access to
    the output stream, so the gain in speed is not always something to
    brag about.  And begin_hook handles GUI-related problems without
    any threads.  Last but not least, the effort to make the non-threaded
    s7 faster has messed up parts of the threaded version.  Rather than
    waste a lot of time fixing this, I'd rather just flush the stuff.

  Due to changes in Gtk, functions like gtk_vbox_new are no longer
    defined in libxm.  This means that several of the gtk-related
    scheme files in the Snd tarball now only work in Gtk 3.0 or later.


checked: gmp 5.0.2, sbcl 1.0.49, gtk 3.1.6|8 (but it looks like crap),
         fftw 3.3beta

Thanks!: Mike Scholz, Fernando Lopez-Lezcano, Rick Taube

===============================================================================

Snd 12.2:

  s7 is about 35% faster in most cases.

  run is smarter about implicit indexing, so I've cleaned up
    a lot of the instruments.

  s7_procedure_setter|getter in s7.h.

checked: gsl 1.15, gtk 3.1.4, sbcl 1.0.48

Thanks!: Rick Taube

===============================================================================

Snd 12.1

  added lint.scm, a scheme lint checker.

  added expr.scm, which tries to find a math expression that matches
     an arbitrary set of data.

  added with-interrupts.  It defaults to #t, but both XtAppPending and
     gtk_events_pending can cause a noticeable slow-down in the computation,
     so set with-interrupts to #f to turn off the GUI checks.

  added show-full-range to make the y-axis bounds accommodate the sound values.

  added info-popup-hook to specialize the popup menu's info output.

  removed verbose-cursor (use with-verbose-cursor).

  removed the unused "chn" parameter from the pan-mix functions in mix.scm.

checked: gtk 3.0.4|5|6|7|8, 3.1.2, sbcl 1.0.47, mpfr 3.0.1

Thanks!: Mike Scholz.



===============================================================================

Snd 12.0

   selection has a loop play triangle
   mix and cursor have play triangles
   if mouse click would trigger play, the cursor is a right or left arrow.
   removed draggable mark play triangle and mark-drag-triangle-hook.
   added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   in Motif, libXpm is no longer optional.
   the Region browser print option has been removed.
   removed click-for-listener-help.
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   removed time-graph-hook; replaced by combined-data-color.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in Scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list and a C tie-in for the random number functions.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2|3, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   in Motif, libXpm is no longer optional.
   removed click-for-listener-help.
   the Region browser print option has been removed.
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   removed time-graph-hook; replaced by combined-data-color.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2|3, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   in Motif, libXpm is no longer optional.
   removed click-for-listener-help.
   the Region browser print option has been removed.
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2|3, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   in Motif, libXpm is no longer optional.
   removed click-for-listener-help.
   the Region browser print option has been removed.
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in Motif, libXpm is no longer optional.
   the Region browser print option has been removed.

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in Motif, libXpm is no longer optional.

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 700x300
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed. In s7/Motif, the listener popup can
     show a stacktrace of code as it is running!

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list.

   Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   in s7, random-state->list.

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz, Rick Taube.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.

   To make it easier to zoom in on the FFT, the keypad arrow keys are bound
     to zoom and move the FFT bounds, analogous to the normal arrow keys which
     affect the time domain graph.  (There isn't any place to put sliders for
     this, and the Options:Transform sliders aren't always handy).

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 12.0

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click would trigger play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog.
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.


   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click = play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.
   removed click-for-listener-help.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   In the beginning, before the libxm library, I thought it made sense to include
     functions like draw-line which would draw a line, no matter what graphics
     environment Snd was built with.  Unfortunately, cairo needs an explicitly
     handled cairo_t structure.  So, draw-line, draw-lines, draw-dot, draw-dots,
     draw-string, fill-rectangle, and fill-polygon now have a required trailing
     cairo_t argument (it's ignored in Motif).  Also two new kludges to get and
     free this structure: make-cairo and free-cairo.  There aren't that many
     uses of these functions (most the fancy graphic stuff uses direct cairo
     or Motif calls from libxm), so perhaps eventually, they'll be removed.


   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click = play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.
   in gtk, the trailing cr argument to draw-axes in not optional.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   selection has a loop play triangle
     mix and cursor have play triangles
     if mouse click = play, the cursor is a right or left arrow.
     removed draggable mark play triangle and mark-drag-triangle-hook.
     added variable play-arrow-size (default: 10)

   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   selection has a loop play triangle
   mix and cursor have play triangles
   if mouse click = play, the cursor is a right or left arrow.
   removed draggable mark play triangle and mark-drag-triangle-hook.
   added variable play-arrow-size (default: 10)
   added Edit:Unselect menu option
   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400
   auto-resize defaults to false in Gtk, true in Motif.

   tracking-cursor-style defaults to cursor-line.
     cursor-follows-play moved to snd11.scm.
     with-tracking-cursor is now a global (not sound-local).

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.  Also removed the misc.scm popup menu
     references.

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   selection has a loop play triangle
   mix and cursor have play triangles
   if mouse click = play, the cursor is a right or left arrow.
   removed draggable mark play triangle and mark-drag-triangle-hook.
   added variable play-arrow-size (default: 10)
   added Edit:Unselect menu option

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.  Also removed the misc.scm popup menu
     references.

   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.
   typing space in a graph plays from the cursor, space while playing = pause/continue
   startup window size is 600x400

   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1|2, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   selection has a loop play triangle
   mix and cursor have play triangles
   if mouse click = play, the cursor is a right or left arrow.
   removed draggable mark play triangle and mark-drag-triangle-hook.
   added variable play-arrow-size (default: 10)
   added Edit:Unselect menu option

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.  Also removed the misc.scm popup menu
     references.

   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth from selection.scm to C.
   added delete-samples-and-smooth.


   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.14

   removed c-g! function; it can be replaced by stop-playing.
     removed c-g? in scheme -- it is superfluous.

   selection has a loop play triangle
   mix and cursor have play triangles
   if mouse click = play, the cursor is a right or left arrow.
   removed draggable mark play triangle and mark-drag-triangle-hook.
   added variable play-arrow-size (default: 10)
   added Edit:Unselect menu option

   added 'src' and 'auto' buttons to the Save-as dialogs for automatic srate conversion
    and a blog-style commentary.  In the extension language, these are
    save-as-dialog-src and save-as-dialog-auto-comment.

   added sync-style variable: sync-none, sync-all, or sync-by-sound (now the default).
     this used to be handled in extensions.* under names like global-sync-choice.
     sync-none was the previous default. examp.scm sync-all function renamed sync-everything.

   moved with-reopen-menu to snd11.scm, and removed it from the preferences dialog
     This menu is almost the same as the built-in File:Open recent menu.

   moved make-hidden-controls-dialog from snd-motif|gtk.scm to snd11.scm, and removed it
     from the preferences dialog.  It is now built-in as Options:Controls

   moved show-selection from extensions.* to C, added unselect-all (in C)
     which replaces clear-selection (selection.scm).

   added show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits,
     with-toolbar, remember-sound-state, with-smpte-label.  removed old
     show-smpte-label in *.scm.

   remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
     it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
     <soundfile-name> is the current sound's file name.

   with-toolbar defaults to true in gtk, false otherwise.  It replaces toolbar.scm
     and panic.scm.  Also with-tooltips to turn tooltips on or off.

   The built-in popup menus are now context sensitive, and the files popup.scm
     and gtk-popup.scm have been removed.  Also removed the misc.scm popup menu
     references.

   removed Snd.gtkrc, Snd.ad, and the obsolete X resources stuff.
   added with-menu-icons (gtk only).
   added optional "alpha" arg to make-color.
   moved delete-selection-and-smooth selection.scm into C.
   added delete-samples-and-smooth.


   The Gtk Snd now needs Gtk 2.12 or later.

checked: sbcl 1.0.46, gtk 3.0.1, mpc 0.9


Thanks!: Louis Gorenfeld, Hartmut Noack, Philipp Uberbacher, Fernando Lopez-Lezcano,
         Mike Scholz.

===============================================================================

Snd 11.13

s7: make-hash-table-iterator.

    map and for-each accept any applicable object as the first argument.

    format's ~{...~} directive can handle any applicable object.

    the thread stuff has been exported to s7.h.

    s7_set_begin_hook (see s7.html#s7inathread and s7.html#replrescue)
      The basic problem is that the GUI toolkits are not thread-safe, but we
      want the GUI to remain responsive even if s7 is caught in an infinite
      loop in the listener.  This also gives a way to break out of any long
      computation without relying on Unix signals and weird keystrokes.
      This is tied to C-g in the listener, so ws-interrupt (ws.scm) is
      now a deprecated no-op.

lots more forth and ruby stuff thanks to Mike Scholz.

checked: gtk 2.99.0|1|2|3, gtk 3.0.0, FC14 (gcc 4.5.1)

Thanks!: Rick Taube, Hartmut Noack, Mike Scholz.

===============================================================================

Snd 11.13

s7: make-hash-table-iterator.

    map and for-each accept any applicable object as the first argument.

    format's ~{...~} directive can handle any applicable object.

    the thread stuff has been exported to s7.h.

    s7_set_begin_hook (see s7.html#s7inathread and s7.html#replrescue)
      The basic problem is that the GUI toolkits are not thread-safe, but we
      want the GUI to remain responsive even if s7 is caught in an infinite
      loop in the listener.  This also gives a way to break out of any long
      computation without relying on Unix signals and weird keystrokes.
      This is tied to C-g in the listener, so ws-interrupt (ws.scm) is
      now a deprecated no-op.

checked: gtk 2.99.0|1|2|3, gtk 3.0.0, FC14 (gcc 4.5.1)

Thanks!: Rick Taube, Hartmut Noack

===============================================================================

Snd 11.12

s7: *gc-stats*
    member and assoc have an optional 3rd arg, the comparison function
    added environment?

in the gtk 3 version of Snd, there is no longer a -nogtkrc flag, and
    Snd.gtkrc is obsolete (Gtk has moved to a css-style system, but I
    think in gtk 3 I'll leave all the "theme" stuff to the global theme).

    in gtk2, only versions 2.10 or later are supported.

checked: gtk 2.91.5|6|7, sbcl 1.0.45

Thanks!: Mike Scholz

===============================================================================

Snd 11.11

Rene Bastian has written a French version of the cmn manual:
    manuel-cmn-fr.html in the cmn tarball.

Mike provided a bunch more script and configuration improvements, and
    C/Ruby expertise.

Michael Edwards added an optional argument to moog-filter in moog.lisp
  to control saturation.

s7: *safety*: an integer, defaults to 0 meaning don't be paranoid.
            There is one case where you might need to set *safety*
            to 1 -- see the "bad-idea" function in s7.html.

    hooks.  s7 had several built-in hooks, but the hook support
            was in xen.c and xen.h.  It's now in s7 with backwards
            compatibility definitions in xen.c.  See s7.h and xen.h
            for the C API, and s7.html for the scheme side. Also,
            with much help from Mike, it's now possible to add a
            C-side function to an extension language hook, so
            the "watcher" stuff in Snd has been removed and
            replaced with normal hooks: add-watcher and
            delete-watcher have been replaced by effects-hook.
            In *.scm and *.html I've replaced the old Guile
            hook functions with shiny new replacements: hook-push,
            hook-append, hook-remove, and various uses of hook-functions.

            *trace-hook*, *load-hook*, *error-hook*, and *unbound-variable-hook*
            are now s7 hooks.

    cond-expand (taken originally from MIT Scheme I think).

checked: gtk 2.91.2|3|4, sbcl 1.0.44, Ruby 1.9.3

Thanks!: Rene Bastian, Mike Scholz, Rick Taube, Michael Edwards

===============================================================================

Snd 11.10

Mike made innumerable improvements in the scripts.

removed snd7.scm and snd8.scm.

defgenerator replaces def-clm-struct.

deprecated verbose-cursor (use with-verbose-cursor).

added 'gtk3 or 'gtk2 to *features*.

s7: added setters for current-input-port, current-output-port,
       and current-error-port.

    *stdin*, *stdout*, *stderr* as the default IO ports
       (rather than nil which is ambiguous).

    removed special variable (dynamic binding) support (it gets
       in the way of tail recursion).

    s7_call_with_location to improve error handling.

    s7 is about 10% faster in this version -- there are timings
       at the end of s7.c and snd-test.scm.

checked: autoconf 2.68, sbcl 1.0.43, gtk 2.91.0|1, gmp 5.0.1

Thanks!: Mike Scholz

===============================================================================

Snd 11.9.

The new gtk (version 3) has discarded most of the gdk functions, replacing them
  with cairo.  This means the xg module and gtk code have also
  changed a lot.  --with-cairo is the default (and the only alternative).
  You'll need gtk 2.9 or later, and cairo 1.6.4 or later.  Eventually
  there will be a cairo "surface" for openGL, so I'll be able to
  reimplement that connection.  Unfortunately, the gtk/cairo version
  of Snd is very slow (more than 10 times slower than Motif).  Looking
  at valgrind output, my first guess is that it's cairo's fault, but
  I need to spend some time poking at it.

kmenu.scm uses the new gdk key names, so it only works in gtk 2.90.7 or later.

removed --with-builtin-gtkrc (Gtk themes have improved a lot over the years)

removed --with-static-gsl

removed the button color functions.

added a play triangle to the selection, and a close button to the sound pane.

changed the default value of just-sounds to #t.

s7: :allow-other-keys in define* parameter list.

Greg Santucci noticed and fixed a bug in *trace-hook*.

checked: gtk 2.90.6|7, sbcl 1.0.42

Thanks!: Michael Klingbeil, Greg Santucci


===============================================================================

Snd 11.9.

The new gtk (version 3) has discarded most of the gdk functions, replacing them
  with cairo.  This means the xg module and gtk code have also
  changed a lot.  --with-cairo is the default (and the only alternative).
  You'll need gtk 2.9 or later, and cairo 1.6.4 or later.  Eventually
  there will be a cairo "surface" for openGL, so I'll be able to
  reimplement that connection.

kmenu.scm uses the new gdk key names, so it only works in gtk 2.90.7 or later.

removed --with-builtin-gtkrc (Gtk themes have improved a lot over the years)

removed --with-static-gsl

removed the button color functions.

added a play triangle to the selection, and a close button to the sound pane.

changed the default value of just-sounds to #t.

s7: :allow-other-keys in define* parameter list.

Greg Santucci noticed and fixed a bug in *trace-hook*.

checked: gtk 2.90.6|7, sbcl 1.0.42

Thanks!: Michael Klingbeil, Greg Santucci


===============================================================================

Snd 11.8

--with-doubles is now the default in the configure script

scan-channel and find-channel have changed slightly: they now
  return just the sample number where the match was found, or #f.

*-button-color deprecated.

index.cl and indexer.scm replaced by make-index.scm.

s7: access to any symbol's dynamic binding via the special macro.

Checked: gtk 2.90.5, sbcl 1.0.41, Ruby 1.9.1-p429, autoconf 2.67, cmucl 20b

Thanks!: Dylan_, Mike Scholz, Rick Taube

===============================================================================

Snd 11.7.

Michael Klingbeil found and fixed several bugs in locsig, and
	made several changes for ClozureCL in OSX.

s7: hash-table for-each and map are now entry-oriented.
    reverse of a hash-table swaps keys and values.

removed title-with-date (examp.scm), snd-gxutils.c,
    window-property, window-property-changed-hook, send-mozilla

checked: gtk 2.90.2|3|4, Fedora Core 13, mpfr-3.0.0, sbcl 1.0.40,
    autoconf 2.66, clisp 2.49

Thanks!: Mike Scholz, Fernando Lopez-Lezcano, Michael Klingbeil,
         Rick Taube

===============================================================================

Snd 11.7.

Michael Klingbeil found and fixed several bugs in locsig, and
	made several changes for ClozureCL in OSX.

s7: hash-table for-each and map are now entry-oriented.
    reverse of a hash-table swaps keys and values.

removed title-with-date (examp.scm), snd-gxutils.c,
    window-property, window-property-changed-hook, send-mozilla

checked: gtk 2.90.2|3|4, FC 13, mpfr-3.0.0, sbcl 1.0.40, autoconf 2.66
    clisp 2.49

Thanks!: Mike Scholz, Fernando Lopez-Lezcano, Michael Klingbeil,
         Rick Taube

===============================================================================

Snd 11.6

in s7: *#readers* for your own #... readers
       nan? and infinite?
       #nD(...) multidimensional vector constant syntax
       support for circular and shared structures
       integer-decode-float and binary file IO (binary-io.scm).

play-skipping-silence in extsnd.html

removed snd6.scm.

if --with-gtk, the configure script looks first for gtk 3.0 now
  (actually 2.90.n, but the libraries and headers use the name 3.0), then
  falls back on 2.0.

added --without-audio configure switch.

checked: sbcl 1.0.38|39, gtk 2.20.1|21.0|90.0|1, mpc 0.8.2

Thanks!: Fernando Lopez-Lezcano, Kjetil Matheussen



===============================================================================

Snd 11.5

autoload support via s7's *unbound-variable-hook*.  If you try to
  use some undefined function, Snd first looks through a table
  of (nearly) everything defined in the scheme files that come
  with Snd, loading the needed files automatically. To turn this
  off, (set! *unbound-variable-hook* #f).

removed encapsulation from s7.  Added augment-environment.

added make-type to s7: scheme-level type creation.
      symbol-access: trap/modify the symbol value lookup mechanism.

mix-notelists in ws.scm.

Fernando fixed some problems in dlocsig.scm.

checked: gtk 2.20.0, sbcl 1.0.37

Thanks!: Rick Taube, Rick's students, Oded Ben-Tal, Cazzaniga Sandro,
  Mike Scholz, Fernando Lopez-Lezcano



===============================================================================

Snd 11.5

autoload support via s7's *unbound-variable-hook*.  If you try to
  use some undefined function, Snd first looks through a table
  of (nearly) everything defined in the scheme files that come
  with Snd, loading the needed files automatically. To turn this
  off, (set! *unbound-variable-hook* #f).

removed encapsulation from s7.  Added augment-environment.

added make-type to s7: scheme-level type creation.
      symbol-access: trap/modify the symbol value lookup mechanism.

mix-notelists in ws.scm.

checked: gtk 2.20.0, sbcl 1.0.37

Thanks!: Rick Taube, Rick's students, Oded Ben-Tal, Cazzaniga Sandro,
  Mike Scholz



===============================================================================

Snd 11.4

most of my effort in this version went into optimizations.

the (sndlib) run macro's argument no longer has to be a "thunk".

removed weird r4rs macro syntax from s7.

I think I'll have to either rename or remove the encapsulation stuff
  in s7.  It turns out that very similar names are being used in the Kernel
  language and the r7rs discussions, and my use can only cause confusion.
  Let me know if you're using that stuff.


checked: gtk 2.19.6|7, sbcl 1.0.36, gsl 1.14

Thanks!: Mike Scholz, Geoff Lee, Georgia Rodgers, Michael Edwards, Andrew Antle,
	 Rick Taube,  Rick's students.

===============================================================================

Snd 11.3:

The old functional form of show-listener no longer works:
  change (show-listener) to (set! (show-listener) #t).

in CLM, mus-file-probe et al changed to get bools working across the FFI,
          (that is, mus-file-probe now returns either T or NIL, not 1 or 0),
          and sound-frames and friends now follow the *clm-seach-list* list.

The rest of the Guile-dependent files have been removed.  As soon as
  they are translated to s7, I'll put them back in.  This includes the
  --with-snd-as-pd-external and --with-rt configuration switches.

About half of the CL functions have been implemented in s7test.scm (including
  CLOS via tiny-clos); they pass the sacla/ansi/clisp tests (also in s7test.scm).

flocsig in generators.scm (flanged locsig).

moved sound|channel|mix|mark|edit-property to C.

removed NLS support (the po directory and so on).


checked: gtk 2.19.3|4|5, FC 12, sbcl 1.0.35

Thanks!: Kim Cascone, Mike Scholz, Michael McNabb, Rick Taube, Michael Edwards,
	 Fernando Lopez-Lezcano, Geoff Lee


===============================================================================

Snd 11.2

added portaudio (version 19) support.

s7: hash-table-for-each.

added tools/sam.c: a Samson box emulator!

some of the more useful extensions were moved to C:

  make-current-window-display (draw.*) as with-inset-graph.

  focus-follows-mouse as with-pointer-focus.

  peak-env support, so peak-env.* removed, peak-env-info,
    read-peak-env-info-file and write-peak-env-info-file removed,
    added peak-env-dir which if not null (the default) turns on the
    peak env machinery.  smart-line-cursor also moved to C.


lots of long-delayed cleanups:

  removed Guile support.
    this includes remove-local-hook! in hooks.scm, use-modules and all
    the guile-specific reader/debugger settings ("debug-set!" etc),
    --with-guile, --with-modules, and --with-hobbit configuration switches,
    snd-out in examp.scm, pd-* and rt-* are currently broken.  def-optkey-fun
    is now just define*, and def-optkey-instrument is definstrument.
    load-from-path is load.  shell is system. removed fix-optargs.scm.

  removed mus-audio-systems, mus-audio-mixer-read, mus-audio-mixer-write,
    and all the associated field and device names (in CLM as well as Snd).
    removed mus-audio-report and changed mus-audio-describe to return the
    description as a string.

  removed sndrecord.c and new-buttons.scm.

  removed SGI support.

  removed midi.c and the --with-midi configure switch.

  in CLM, removed sc.c and clm-snd.lisp (CLM to Snd interjob communication).

  removed XmPrint/libXp support (--with-xp configure switch).


versions of Alsa before 1.0 are no longer supported.

mpc versions before 0.8.0 are no longer supported.


checked: autoconf 2.65, sbcl 1.0.33|4, mpfr 2.4.2, gtk 2.19.1|2, mpc 0.8.1

Thanks!: Hermann Beyer, Mike Scholz, Tommy Rushton, Mike Winter, Rick Taube.


===============================================================================

Snd 11.1:

many more ruby/forth improvements thanks to Mike.

*trace-hook* in s7.  Also defmacro* and define-macro*.  make-list.

force and delay are now included in s7 only if WITH_FORCE is defined.
  The slib implementation is used.  The promise? function has been removed.
  I used "make-promise" for "delay" in earlier versions of s7 to avoid
  collisions with CLM.

removed the sbcl ppc undefined_alien_function stuff from cmus.c.

removed all support for gtkglext and fftw2 (use fftw3).

play is generic, and uses optkey args (this is a non-compatible change).
  "old-play" is the old version of play.  play-channel, play-mix, play-region,
  play-selection, and play-and-wait are deprecated.

selection function/object; added selection choice to the generic funcs.
selection->mix.
The graphed selection bounds can be changed by dragging the mouse.

The mix dialog follows the (mix-)sync field, and has 2 new buttons!

copy and fill! for selection and sound, and copy for mix and mark.

moved with-mix from ws.scm to snd11.scm.
moved save-mix from mix.scm into C.
added check-mix-tags to mix.scm.

added snd-forth-docs.fs (incorporated in sndclm.html), thanks to Mike.

colormaps are objects now, not ints; added the predefined colormaps
  as built-in objects (hot-colormap, etc), and integer->colormap,
  colormap->integer.  Each colormap function now takes a colormap object
  as the first argument, not an integer.

transforms are objects also; fourier-transform etc; integer->transform and
  transform->integer.  add-transform returns such an object, delete-transform
  and transform-type take one.

removed tools/snd-index.cl.

checked: sbcl 1.0.32, gtk 2.19.0, acl 8.2, mpc 0.8, guile 1.9.5, fth 1.2.8

Thanks!: Geoff Lee, Mike Scholz, Rick Taube, Alan Grover, Kjetil Matheussen.

===============================================================================

Snd 11.1:

many more ruby/forth improvements thanks to Mike.

*trace-hook* in s7.  Also defmacro* and define-macro*.

force and delay are now included in s7 only if WITH_FORCE is defined.
  The slib implementation is used.  The promise? function has been removed.
  I used "make-promise" for "delay" in earlier versions of s7 to avoid
  collisions with CLM.

removed the sbcl ppc undefined_alien_function stuff from cmus.c.

removed all support for gtkglext and fftw2 (use fftw3).

play is generic, and uses optkey args (this is a non-compatible change).
  "old-play" is the old version of play.  play-channel, play-mix, play-region,
  play-selection, and play-and-wait are deprecated.

selection function/object; added selection choice to the generic funcs.
selection->mix.
The graphed selection bounds can be changed by dragging the mouse.

The mix dialog follows the (mix-)sync field, and has 2 new buttons!

copy and fill! for selection and sound, and copy for mix and mark.

moved with-mix from ws.scm to snd11.scm.
moved save-mix from mix.scm into C.
added check-mix-tags to mix.scm.

added snd-forth-docs.fs (incorporated in sndclm.html), thanks to Mike.

colormaps are objects now, not ints; added the predefined colormaps
  as built-in objects (hot-colormap, etc), and integer->colormap,
  colormap->integer.  Each colormap function now takes a colormap object
  as the first argument, not an integer.

transforms are objects also; fourier-transform etc; integer->transform and
  transform->integer.  add-transform returns such an object, delete-transform
  and transform-type take one.

removed tools/snd-index.cl.

checked: sbcl 1.0.32, gtk 2.19.0, acl 8.2, mpc 0.8, guile 1.9.5, fth 1.2.8

Thanks!: Geoff Lee, Mike Scholz, Rick Taube, Alan Grover, Kjetil Matheussen.

===============================================================================

Snd 11.0 (with much help from Mike Scholz):

regions, players, mixes, and marks are objects now, not ints

  integer->region, region->integer, integer->mix and mix->integer,
    integer->mark and mark->integer to convert old code	

  mix, mix-region, and mix-selection return a list of mixes

  marks returns a list of marks

  in several region-related functions, the argument order has changed to
    put the region object first: insert-region, make-region-sampler, mix-region,
    region-sample, region->vct, region->frame, make-region-frame-reader

sounds are objects, but integers are still ok
  integer->sound and sound->integer to convert old code.


These changes make it possible to replace several dozen functions with generic
  functions:

  length handles list length, also string-length, vector-length, hash-table-size,
    vct-length, frames, mus-length, sound-data-length, mix-length, and region-frames.

  frames is similar but treats strings as sound file names, and ints as sound indices.

  srate handles strings (mus-sound-srate), regions (region-srate), and sounds.

  channels handles strings (mus-sound-chans), region-chans, sound-data-chans, mus-channels,
    mixes (always 1 channel), and sounds

  file-name handles strings, sounds, mixes, regions, samplers, generators, and
    (s7) scheme file ports.

  sync handles sync, mix-sync, and mark-sync.

  maxamp can handle a sound (via the regular maxamp function), string (treated as a
   sound file name, mus-sound-maxamp), generator (maxamp of the mus-data vct, if any),
   sound-data (sound-data-maxamp), vct (vct-peak), region (region-maxamp), vector, list,
   or mix object.

all "sample-reader" and "sample_reader" names changed to "sampler".
  (the old names are defined in snd10.scm)
  make-sampler (formerly make-sample-reader) "snd" arg can be a mix object, returning a mix sampler.


in s7 added procedure-environment and promise?

removed export-all.scm, snd4.scm, snd5.scm, tools/sed-href, tools/lines.scm,
  and tools/check-gtk.scm.

sine-summation, sum-of-sines, and sum-of-cosines removed (see snd10.scm).

the run macro only works in s7.

removed run-safety, *snd-loaded-files*, and *snd-remember-paths*.

added clm.rb and grani.rb (thanks to Mike Scholz).


checked: mpc 0.7, OSX 10.6, gtk 2.18.0|1|2|3, cmucl 20a, guile 1.9.4

Thanks!: Kjetil Matheussen, Mike Scholz


===============================================================================

Snd 10.9

Kjetil improved the rt stuff.
added env.scm to sndlib (for jcvoi.scm).
optimization now defaults to 6.
show-backtrace removed.

s7: *error-info* for better error reporting.
    vector-for-each, vector-map, string-for-each
    generic map, for-each

added s7-slib-init.scm: slib support.  It assumes getenv, file-exists?, and system
  are provided elsewhere (this is the case if s7 is running in Snd or sndlib).

added s7.html
  s7: with-environment, true multiple-values, vectors can have > 2^31 elements (you'll
      need a lot of memory).  multiple-value-bind and multiple-value-set!.

checked:  gtk 2.17.7|8|9|10|11, guile 1.9.2|3, sbcl 1.0.31, gsl 1.13

  in sbcl, something has changed in the double float array handling, so functions
  like convolution can't be called from lisp.  The instruments seem to be ok.
  (The two use the same calling sequence so I'm a bit mystified).

Thanks!: Rick Taube, Ralf Mattes, Kjetil Matheussen, Mike Scholz

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts).
Also strings, lists, and hash-tables are set-applicable.  This has the somewhat
  strange side effect that (apply "hi" '(1)) returns #\i, since strings are applicable.
  I think the syntax is pretty:

      (let ((lst (list 1 2 3)))
        (set! (lst 1) 32)
        (list (lst 0) (lst 1)))
      -> '(1 32)

      (let ((hash (make-hash-table)))
        (set! (hash 'hi) 32)
        (hash 'hi))
      -> 32

  but even better, vector arithmetic is almost readable, and you can write (for example)
  a generic FFT that can take vectors, vcts, frames, lists, etc.  I wonder if I should
  extend the "setter" idea to things like imag-part or numerator.  One thing I haven't
  looked into yet: (set! ((lst 0) 0) 1) which I guess is set-caar!

s7 length is generic, also added generic copy and fill!.

added sort! for lists or vectors (it uses C's qsort internally, and list arguments are
  always copied -- it's really vector-sort!).

added frame and mixer, paralleling functions like vct and list:
  (frame .1 .2) = (make-frame 2 .1 .2) etc

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.
  stacktrace (and error position info) still needs a lot of work.

added macroexpand.
    > (define-macro (hi a) `(+ ,a 1))
    hi
    > (macroexpand (hi 32))
    (+ 32 1)

removed gc-verbose, and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

C-\ in the Snd terminal breaks out of evaluator infinite loops (s7 only).

In the s7 C API:
  s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
  s7_define_macro: define a macro at C-level.
  s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).
  lower-case versions of s7_T and friends (I'll probably remove the upper-case versions someday).

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    This evaluates "body", then returns any variables global to that code to their prior value:

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32

    There are three or maybe four reasons for encapsulators (rather than, say, fluid-let).
    The main one is that it's a neat idea: a sort of data-side continuation.  open-encapsulator
    remembers the overall environment at the point it is called, returning an encapuslator
    object.  Whenever we want to return to that data state, we call that object as a thunk.
    encapsulator-bindings returns the alist of variables awaiting restoration.  Once called,
    that list is cleared, and the encapsulator starts saving values again (so repeated calls
    keep returning you to that data state).  close-encapsulator turns that encapsulator off.
    In a REPL, for example, you could save the initial state, then return to it at any time,
    without restarting the interpreter.  fluid-let is not what we want here because it has
    a body, and requires that you list in advance what variables you want to protect (and
    besides, it's not really a let (it uses "set!") and I can't see anything fluid about it).
    By tracing the encapsulator object, we can see every set! within some piece of code.
    This encapsulation is not complete: I haven't finished making Snd/CLM objects work
    with it, and some Scheme constructs aren't handled yet: (string-set! (vector-ref...))
    for example.


    Another idea that strikes me as interesting: define!

      (define! env var value)

    would bind var to value in the environment env (it changes env, hence the "!").  Currently,
    if you want 2 functions to share a local variable, you have to establish the names in the
    outer environment by hand:

        (define proc1 #f)
        (define proc2 #f)
        (let ((local-var 32))
          (set! proc1 (lambda () (+ local-var 1)))
          (set! proc2 (lambda () (- local-var 1))))

    You can't use

        (begin
          (define local-var 23)
          (define (proc1) (+ local-var 1))
          (define (proc2) (- local-var 1)))

    because local-var is also defined outside the "begin".  With define! you could:

        (let ((e (current-environment))) ; or (global-environment) to make them global
          (let ((local-var 32))
            (define! e (proc1) (+ local-var 1))
            (define! e (proc2) (- local-var 1))))

    This could replace the notions of library and module, I think.  A file could be
    enclosed in a let, keeping everything local to that file except stuff that is
    defined via define!.

    Or... (env-let env (...) body) evaluates its bindings and body in the context
    of the environment env.  Or environments as "first class" objects (see extend-environment
    in s7.h, for example).  Or...

    One last idea: emacs 23 apparently supports the XEmbed protocol, so I think
    it is now possible to do what I had hoped to do in 1996: use emacs as the
    snd listener (within Snd).  To communicate between Snd and Emacs it might still
    be necessary to treat Snd as an emacs subjob, but the emacs window would be
    inside the Snd app.


cmn works in ECL 9.7.1.
ruby 1.9 works as Snd's extension language.
guile 1.9 works, but is not very useful: the run macro does not work, nor does ws.scm.
using Motif 2.3.2 (CVS at sourceforge), the listener is at the top for some reason.


Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

also strings, lists, and hash-tables are set-applicable.  This has the somewhat
  strange side effect that (apply "hi" '(1)) returns #\i, since strings are applicable.
  I think the syntax is pretty:

      (let ((lst (list 1 2 3)))
        (set! (lst 1) 32)
        (list (lst 0) (lst 1)))
      -> '(1 32)

      (let ((hash (make-hash-table)))
        (set! (hash 'hi) 32)
        (hash 'hi))
      -> 32

  but even better, vector arithmetic is almost readable, and you can write (for example)
  a generic FFT that can take vectors, vcts, frames, lists, etc.

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).
lower-case versions of s7_T and friends (I'll probably remove the upper-case versions someday).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

sort! for lists or vectors.

read-hook (in s7-Snd) has changed (the other cases are not changed).

C-\ in the Snd terminal breaks out of evaluator infinite loops (s7).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy and fill!.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32

    We might simpy copy the entire current environment, but that is slow (there are easily
    1000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts the bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs.  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (using encapsulators), to
    be able to return to a given data state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!
    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I haven't decided yet
    how to deal with something like (string-set! (vector-ref ...)). Also C-side variables accessed
    through procedure-with-setters are not (yet?) restored.


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

also strings, lists, and hash-tables are set-applicable.  This has the somewhat
  strange side effect that (apply "hi" '(1)) returns #\i, since strings are applicable.
  I think the syntax is pretty:

      (let ((lst (list 1 2 3)))
        (set! (lst 1) 32)
        (list (lst 0) (lst 1)))
      -> '(1 32)

      (let ((hash (make-hash-table)))
        (set! (hash 'hi) 32)
        (hash 'hi))
      -> 32

  but even better, vector arithmetic is almost readable, and you can write (for example)
  a generic FFT that can take vectors, vcts, frames, lists, etc.

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).
lower-case versions of s7_T and friends (I'll probably remove the upper-case versions someday).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

sort! for lists or vectors.

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy and fill!.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32

    We might simpy copy the entire current environment, but that is slow (there are easily
    1000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts the bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs.  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (using encapsulators), to
    be able to return to a given data state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!
    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I haven't decided yet
    how to deal with something like (string-set! (vector-ref ...)). Also C-side variables accessed
    through procedure-with-setters are not (yet?) restored.


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

also strings, lists, and hash-tables are set-applicable.  This has the somewhat
  strange side effect that (apply "hi" '(1)) returns #\i, since strings are applicable.
  I think the syntax is pretty:

      (let ((lst (list 1 2 3)))
        (set! (lst 1) 32)
        (list (lst 0) (lst 1)))
      -> '(1 32)

      (let ((hash (make-hash-table)))
        (set! (hash 'hi) 32)
        (hash 'hi))
      -> 32

  but even better, vector arithmetic is almost readable, and you can write (for example)
  a generic FFT that can take vectors, vcts, frames, lists, etc.

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).
lower-case versions of s7_T and friends (I'll probably remove the upper-case versions someday).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

sort!

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy and fill!.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32

    We might simpy copy the entire current environment, but that is slow (there are easily
    1000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts the bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs.  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (using encapsulators), to
    be able to return to a given data state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!
    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I haven't decided yet
    how to deal with something like (string-set! (vector-ref ...)). Also C-side variables accessed
    through procedure-with-setters are not restored.


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

added sort! to s7, and lower-case versions of s7_T and friends.
  I'll probably remove the upper-case versions someday.

strings are set-applicable (like vectors).  This has the somewhat strange side effect
  that (apply "hi" '(1)) returns #\i, since strings are applicable, but the up side,
  no need for noise words like string-ref and vector-ref, seems more important to me.

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy and fill!.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32

    We might simpy copy the entire current environment, but that is slow (there are easily
    1000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts the bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs.  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (using encapsulators), to
    be able to return to a given data state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!
    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I haven't decided yet
    how to deal with something like (string-set! (vector-ref ...)). Also C-side variables accessed
    through procedure-with-setters are not restored.


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, fill).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

added sort! to s7, and lower-case versions of s7_T and friends.
  I'll probably remove the upper-case versions someday.

strings are set-applicable (like vectors).  This has the somewhat strange side effect
  that (apply "hi" '(1)) returns #\i, since strings are applicable, but the up side,
  no need for noise words like string-ref and vector-ref, seems more important to me.

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy and fill!.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.
    We might simpy copy the entire current environment, but that is slow (there are easily
    10000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts a dumb bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs!  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (open|close-encapsulator), to
    be able to return to a given (data) state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!

    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I don't know
    how to deal with something like (string-set! (vector-ref ...)) -- should I save upon vector|list-ref
    as well as -set!?, so there are a few cases that aren't currently restored.  But a simple example:

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extended version of the C-level new type creator (length, copy, etc).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

added sort! to s7, and lower-case versions of s7_T and friends.
  I'll probably remove the upper-case versions someday.

strings are set-applicable (like vectors).  This has the somewhat strange side effect
  that (apply "hi" '(1)) returns #\i, since strings are applicable, but the up side,
  no need for noise words like string-ref and vector-ref, seems more important to me.

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code, then return variables global to that code to their prior state.
    We might simpy copy the entire current environment, but that is slow (there are easily
    10000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts a dumb bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs!  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (open|close-encapsulator), to
    be able to return to a given (data) state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!

    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I don't know
    how to deal with something like (string-set! (vector-ref ...)) -- should I save upon vector|list-ref
    as well as -set!?, so there are a few cases that aren't currently restored.  But a simple example:

        > (define global-x 32)
        global-x
        > (encapsulate
            (set! global-x 123)
            (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.8

Rick fixed the windows build process for sndlib; added sndlib.sln.

Kjetil and Mike made numerous improvements.  In particular, ruby 1.9
  is working.


in s7, sound-data, frame, mixer objects are set-applicable (like vectors and vcts)

added frame and mixer, paralleling functions like vct and list
  (frame .1 .2) = (make-frame 2 .1 .2) etc

s7_define_function_star: define* at C-level, handling keywords, argument order, etc.
s7_define_macro: define a macro at C-level.  Also macroexpand.
s7_new_type_x: extendeded version of the C-level new type creator (length, copy, etc).

added profiling option (--with-profiling in configure) to s7.  profile
  function in extensions.scm.  This could be greatly elaborated, if
  it's of interest.

added trace, untrace, break and __func__ to s7. The __func__ info made it possible
  to remove the backtrace facility altogether: backtracing, backtrace, set-backtrace-length,
  clear-backtrace, and list-line-number have been removed.  These are replaced by
  the stacktrace function, callable from within a break or error handler.

in s7, removed gc-verbose and load-verbose replaced by *load-hook*.  Error handling can
  be specialized via *error-hook*.

added sort! to s7, and lower-case versions of s7_T and friends.
  I'll probably remove the upper-case versions someday.

strings are set-applicable (like vectors).  This has the somewhat strange side effect
  that (apply "hi" '(1)) returns #\i, since strings are applicable, but the up side
  (no need for noise words like string-ref and vector-ref) seems more important to me.

read-hook (in s7-Snd) has changed (the other cases are not changed).

the ubiquitous Float type is now named mus_float_t (new sndlib major version: 21),
  and off_t has been changed to mus_long_t.  Wherever possible I'm using either
  int64_t or long long int, rather than off_t.

added all the non-Snd-specific instrument files to the sndlib tarball:
  analog-filter.scm|rb, animals.scm, bird.scm|rb|fsm, clm.fs, clm-ins.scm|rb|fs, dlocsig.scm|rb,
  fade.scm, freeverb.scm|rb, generators.scm, grani.scm, jcrev.scm, jcvoi.scm,
  maraca.scm|rb, maxf.scm|rb, moog.scm, noise.scm|rb, piano.scm|rb, prc95.scm|rb,
  pvoc.scm|rb, singer.scm|rb, sndwarp.scm, spectr.scm|rb|fs, stochastic.scm, strad.scm|rb,
  v.scm|rb.  Also split out expandn, fullmix, and nrev from clm-ins.scm into separate files.
  Mike brought the sndins directory up to date.

s7 length is generic, also added generic copy.

added "encapsulators" to s7:
   open-encapsulator, close-encapsulator, (obj) to restore, encapsulator-bindings

   (define-macro (encapsulate . body)
      (let ((encap (gensym)))
        `(let ((,encap (open-encapsulator)))
           (dynamic-wind
              (lambda ()
	        #f)
              (lambda ()
	        ,@body)
              (lambda ()
	        ((,encap))  ; restore saved vars
                (close-encapsulator ,encap))))))

    We want to run some code,  then return variables global to that code to their prior state.
    We might simpy coply the entire current environment, but that is slow (there are easily
    10000 variables in Snd), and requires huge amounts of space (vectors need to be copied
    for example), and usually in such a situation, only one or two variables actually need to
    be restored.  fluid-let is not what we want.  First "fluid-let" is a bad name; it is not a
    "let" because it uses set! rather than making a new binding, and what is "fluid" about it?
    Second, fluid-let puts a dumb bookkeeping burden on the programmer -- he has
    to maintain a list of the variables he wants to protect -- that's asking for bugs!  Finally,
    it's restricted to protecting the body of the fluid-let, but in a REPL, for example,
    we want to return to a known state without being in any obvious let form.  That is, we
    actually want a sort of data-side call/cc. In this system (open|close-encapsulator), to
    be able to return to a given (data) state, open an encapsulator, then later call it to restore
    all variables global to that object.  close-encapsulator says I'm done with it -- the
    normal case is that calling the object restores all its stored values, then (if not closed)
    it starts saving values again -- this way we can repeatedly return to a clean state without
    opening a new encapsulator every time.  Also, if we trace the encapsulator, we'll see every set!

    This is not perfect yet -- I'm still working on the Snd/CLM objects, and I don't know
    how to deal with something like (string-set! (vector-ref ...)) -- should I save upon vector|list-ref
    as well as -set!?, so there are a few cases that aren't currently restored.  But a simple example:

        > (define global-x 32)
        global-x
        > (encapsulate (set! global-x 123) (format #f "x: ~A" global-x))
        "x: 123"
        > global-x
        32


cmn works in ECL 9.7.1.

Checked: gtk 2.17.3|4|5|6, fth 1.2.5|6, fftw 3.2.2, guile 1.9.1, openmotif 2.3.2, clisp 2.48,
         autoconf 2.64, sbcl 1.0.30, ecl 9.7.1

  (in guile 1.9.n, the run macro does not work, nor do ws.scm and generators.scm)
  (in the new motif, the listener is at the top for some reason)

Thanks!: Mike Scholz, Rick Taube, Kjetil Matheussen, Markus Eichhoff, W Andrew Burnson

===============================================================================

Snd 10.7

Mike made many improvements throughout Snd.

generators.scm: moving-fft, moving-scentroid, moving-autocorrelation, moving-pitch.

dlocsig.scm works now in s7, but not guile 1.9.0.

clm: added rectangular->magnitudes (ignores phases)

ALSA is now the default audio choice in Linux (this affects CLM/Sndlib also).
  This is a slight problem in Clisp because there's no way to tell that
  we're in Linux, so in that case, push :alsa on *features* before loading
  all.lisp.  I've noticed playback can hang or simply fail if the pulseaudio
  server is running.  Linux audio is a never-ending pain.

New configure switch --with-oss.

Checked: gtk 2.17.1|2, sbcl 1.0.29, Fedora Core 11, guile 1.9.0

in the new guile, %delay and %filter are not defined, and there are many changes
  due to the guile compiler, so debug.scm has been removed, as well as the with-sound
  debugging stuff (ws.scm) that depended on it.  1.9.0 doesn't handle off_t cleanly,
  so you'll actually need 1.9.1.  Due to new restrictions in the syntax it accepts,
  this version of guile also can't handle generators.scm. And run doesn't work.

Thanks!: Mike Scholz, Jose Padovani, Kjetil Matheussen, Rick Taube.

===============================================================================

Snd 10.7

Mike made many improvements throughout Snd.

generators.scm: moving-fft, moving-scentroid, moving-autocorrelation, moving-pitch.

dlocsig.scm works now in s7, but not guile 1.9.0.

clm: added rectangular->magnitudes (ignores phases)

ALSA is now the default audio choice in Linux (this affects CLM/Sndlib also).
  This is a slight problem in Clisp because there's no way to tell that
  we're in Linux, so in that case, push :alsa on *features* before loading
  all.lisp.  I've noticed playback can hang or simply fail if the pulseaudio
  server is running.  Linux audio is a never-ending pain.

Checked: gtk 2.17.1|2, sbcl 1.0.29, Fedora Core 11, guile 1.9.0

in the new guile, %delay and %filter are not defined, and there are many changes
  due to the guile compiler, so debug.scm has been removed, as well as the with-sound
  debugging stuff (ws.scm) that depended on it.  1.9.0 doesn't handle off_t cleanly,
  so you'll actually need 1.9.1.  Due to new restrictions in the syntax it accepts,
  this version of guile also can't handle generators.scm. And run doesn't work.

as mentioned previously, the new ruby (1.9) segfaults on any attempt to raise
  an error.

Thanks!: Mike Scholz, Jose Padovani, Kjetil Matheussen, Rick Taube.

===============================================================================

Snd 10.7

Mike made many improvements throughout Snd.

generators.scm: moving-fft, moving-scentroid, moving-autocorrelation, moving-pitch.

dlocsig.scm works now in s7, but not guile 1.9.0.

clm: added rectangular->magnitudes (ignores phases)

ALSA is now the default audio choice in Linux (this affects CLM/Sndlib also).
  This is a slight problem in Clisp because there's no way to tell that
  we're in Linux, so in that case, push :alsa on *features* before loading
  all.lisp.

Checked: gtk 2.17.1|2, sbcl 1.0.29, Fedora Core 11, guile 1.9.0

in the new guile, %delay and %filter are not defined, and there are many changes
  due to the guile compiler, so debug.scm has been removed, as well as the with-sound
  debugging stuff (ws.scm) that depended on it.  1.9.0 doesn't handle off_t cleanly,
  so you'll actually need 1.9.1.  Due to new restrictions in the syntax it accepts,
  this version of guile also can't handle generators.scm. And run doesn't work.

Thanks!: Mike Scholz, Jose Padovani, Kjetil Matheussen, Rick Taube.

===============================================================================

Snd 10.6

more Ruby and Forth improvements from Mike.

sndlib.vsproj and other files for MS C sndlib from Rick and Andrew Burnson.

polyoid-env generator (generators.scm).

run improved.

checked: mpc 0.6, gmp 4.3.0|1, sbcl 1.0.28, gtk 2.17.0, fth 1.2.4

Thanks!: Mike Scholz, Thomas Baruchel, Rick, Andrew Burnson.

===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.
  added sinc-window.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.

With Kjetil's help, s7 is more than twice as fast now in s7test.

checked: mpfr 2.4.1, gtk 2.15.5|16.0|1, fftw 3.2.1, fth 1.2.3, sbcl 1.0.27

Thanks!: Michael Edwards, Kjetil Matheussen, Mike Scholz, Al Steffens,
         Anders Vinjar, Oded Ben-Tal, Rick Taube, Andrew Burnson.



===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.
  added sinc-window.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.

checked: mpfr 2.4.1, gtk 2.15.5|16.0|1, fftw 3.2.1, fth 1.2.3, sbcl 1.0.27

Thanks!: Michael Edwards, Kjetil Matheussen, Mike Scholz, Al Steffens,
         Anders Vinjar, Oded Ben-Tal, Rick Taube, Andrew Burnson.



===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.
  added sinc-window.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.

checked: mpfr 2.4.1, gtk 2.15.5|16.0, fftw 3.2.1, fth 1.2.3, sbcl 1.0.27

Thanks!: Michael Edwards, Kjetil Matheussen, Mike Scholz, Al Steffens,
         Anders Vinjar, Oded Ben-Tal, Rick Taube, Andrew Burnson.



===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.
  added sinc-window.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.
  Use strace to find out where the problem is.

checked: mpfr 2.4.1, gtk 2.15.5|16.0, fftw 3.2.1, fth 1.2.3, sbcl 1.0.27

Thanks!: Michael Edwards, Kjetil, Mike Scholz, Al Steffens, Anders Vinjar,
	 Oded Ben-Tal, Rick Taube, Andrew Burnson.



===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.
  added sinc-window.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.
  Use strace to find out where the problem is.

checked: mpfr 2.4.1, gtk 2.15.5|16.0, fftw 3.2.1, fth 1.2.3

Thanks!: Michael Edwards, Kjetil, Mike Scholz, Al Steffens, Anders Vinjar,
	 Oded Ben-Tal, Rick Taube.



===============================================================================

Snd 10.5

many more improvements thanks to Kjetil and Mike Scholz.

multidimensional and applicable vectors in s7.

pulseaudio support (--with-pulseaudio in configure):
  I don't know if this actually works, since pulseaudio (paplay) itself
  doesn't work on my machine.

moved the papoulis and dpss (slepian) fft-windows from dsp.scm to clm.c.

matlab mat-5 headers (for 1-channel sound data).

all hash literals using ',' changed to use '=>' in *.rb (for ruby 1.9.*)
  but ruby 1.9.n is not usable yet -- it segfaults on any error.
  Use strace to find out where the problem is.

checked: mpfr 2.4.1, gtk 2.15.5|16.0, fftw 3.2.1

Thanks!: Michael Edwards, Kjetil, Mike Scholz, Al Steffens, Anders Vinjar,
	 Oded Ben-Tal, Rick Taube.



===============================================================================

Snd 10.4

(this is mostly a "clean up loose ends" version)


Kjetil made improvements to the pd external support, and made
       a port of CMN to ABCL.

big-gens.scm (scheme-only versions of some of the built-in generators)

changed spectro-cutoff to spectrum-end and spectro-start to spectrum-start
  moved the 10 spectro-* keypad key bindings to snd10.scm (keypad-spectro-bindings)
  moved the spectrum end slider to the transform dialog and added spectrum start slider
    (this should make it easier to zoom into an arbitrary portion of the spectrum)

merged the color and orientation dialogs

removed TODO.Snd, snd.spec, and old-snd.spec -- I don't plan to make any more rpm files.

checked: gsl 1.12, gtk 2.15.1|2|3|4, sbcl 1.0.25, cmucl 19f

Thanks!: Kjetil, Pavel Penev, Rick Taube, Michael Edwards, Mike Scholz


===============================================================================

Snd 10.4

(this is mostly a "clean up loose ends" version)


Kjetil made improvements to the pd external support, and made
       a port of CMN to ABCL.

big-gens.scm (scheme-only versions of some of the built-in generators)

changed spectro-cutoff to spectrum-end and spectro-start to spectrum-start
  moved the 10 spectro-* keypad key bindings to snd10.scm (keypad-spectro-bindings)
  moved the spectrum end slider to the transform dialog and added spectrum start slider
    (this should make it easier to zoom into an arbitrary portion of the spectrum)

merged the color and orientation dialogs

removed TODO.Snd, snd.spec, and old-snd.spec -- I don't plan to make any more rpm files.

checked: gsl 1.12, gtk 2.15.1|2|3|4, sbcl 1.0.25, cmucl 19f

Thanks!: Kjetil, Pavel Penev, Rick Taube, Michael Edwards


===============================================================================

Snd 10.4

(this is mostly a "clean up loose ends" version)


Kjetil made improvements to the pd external support, and made
       a port of CMN to ABCL.

big-gens.scm (scheme-only versions of some of the built-in generators)

changed spectro-cutoff to spectrum-end and spectro-start to spectrum-start
  moved the 10 spectro-* keypad key bindings to snd10.scm (keypad-spectro-bindings)
  moved the spectrum end slider to the transform dialog and added spectrum start slider
    (this should make it easier to zoom into an arbitrary portion of the spectrum)


checked: gsl 1.12, gtk 2.15.1|2|3, sbcl 1.0.25, cmucl 19f

Thanks!: Kjetil, Pavel Penev, Rick Taube, Michael Edwards


===============================================================================

Snd 10.3

Kjetil made improvements to the rt stuff.

Michael Gogins, William Andrew Burnson, and Rick figured out how to
  build sndlib in windows -- I hope I correctly incorporated their
  changes in the configure script and various sources.


added multiprecision math support for all scheme (s7) numeric
  types and functions via gmp, mpfr, and mpc.  In configure,
  use the --with-gmp switch.  bignum-precision can set the
  float precision (default is 128 bits).  If this all works
  out, I'll add this support to clm as well.  You'll need
  mpc 0.5.2 (the latest version).

sox header support.

jcvoi.scm (translated from jcvoi.ins) for the immortal Old Macdonald.

the sine-summation, sum-of-cosines, and sum-of-sines generators are deprecated.
  Their replacements are nrxysin (or nrsin), ncos, and nsin.
  snd10.scm has backwards-compatible definitions of these generators.

removed event.scm and all the xm.c stuff that was deprecated in 2002.

sin-m*pi/n and show-digits-of-pi-starting-from functions in numerics.scm

rpmbuild changed since I last used it, so it's not impossible the
  rpm files are confused.  Does anyone use the rpm files that I
  build?


checked: Gamin 0.1.10, sbcl 1.0.23|24, Guile 1.8.6, gtk 2.14.6|2.15.0

Thanks!: Rick, Fernando, Esben Stien, Kjetil, Carlos Pita, Stanko Juzbasic,
         Oded Ben-Tal, Michael Gogins, William Andrew Burnson

===============================================================================

Snd 10.3

Kjetil made improvements to the rt stuff.

Michael Gogins, William Andrew Burnson, and Rick figured out how to
  build sndlib in windows -- I hope I correctly incorporated their
  changes in the configure script and various sources.


added multiprecision math support for all scheme (s7) numeric
  types and functions via gmp, mpfr, and mpc.  In configure,
  use the --with-gmp switch.  bignum-precision can set the
  float precision (default is 128 bits).  If this all works
  out, I'll add this support to clm as well.  You'll need
  mpc 0.5.2 (the latest version).

sox header support.

jcvoi.scm (translated from jcvoi.ins) for the immortal Old Macdonald.

the sine-summation, sum-of-cosines, and sum-of-sines generators are deprecated.
  Their replacements are nrxysin (or nrsin), ncos, and nsin.
  snd10.scm has backwards-compatible definitions of these generators.

removed event.scm and all the xm.c stuff that was deprecated in 2002.

sin-m*pi/n and show-digits-of-pi-starting-from functions in numerics.scm

rpmbuild changed since I last used it, so it's not impossible the
  rpm files are confused.  Does anyone use the rpm files that I
  build?


checked: Gamin 0.1.10, sbcl 1.0.23|24, Guile 1.8.6, gtk 2.14.6|2.15.0

Thanks!: Rick, Fernando, Esben Stien, Kjetil, Carlos Pita, Stanko Juzbasic,
         Oded Ben-Tal, Michael Gogins

===============================================================================

Snd 10.3

Kjetil made improvements to the rt stuff.

Michael Gogins, William Andrew Burnson, and Rick figured out how to
  build sndlib in windows -- I hope I correctly incorporated their
  changes in the configure script and various sources.


added multiprecision math support for all scheme (s7) numeric
  types and functions via gmp, mpfr, and mpc.  In configure,
  use the --with-gmp switch.  bignum-precision can set the
  float precision (default is 128 bits).  If this all works
  out, I'll add this support to clm as well.  You'll need
  mpc 0.5.2 (the latest version).

sox header support.

jcvoi.scm (translated from jcvoi.ins) for the immortal Old Macdonald.

the sine-summation, sum-of-cosines, and sum-of-sines generators are deprecated.
  Their replacements are nrxysin (or nrsin), ncos, and nsin.
  snd10.scm has backwards-compatible definitions of these generators.

removed event.scm and all the xm.c stuff that was deprecated in 2002.

sin-m*pi/n and show-digits-of-pi-starting-from functions in numerics.scm


checked: Gamin 0.1.10, sbcl 1.0.23|24, Guile 1.8.6, gtk 2.14.6|2.15.0

Thanks!: Rick, Fernando, Esben Stien, Kjetil, Carlos Pita, Stanko Juzbasic,
         Oded Ben-Tal, Michael Gogins

===============================================================================

Snd 10.3

Kjetil made improvements to the rt stuff.

Michael Gogins and Rick figured out how to build sndlib in windows --
  I hope I correctly incorporated their changes in the configure script.


added multiprecision math support for all scheme (s7) numeric
  types and functions via gmp, mpfr, and mpc.  In configure,
  use the --with-gmp switch.  bignum-precision can set the
  float precision (default is 128 bits).  If this all works
  out, I'll add this support to clm as well.  You'll need
  mpc 0.5.2 (the latest version).

sox header support.

jcvoi.scm (translated from jcvoi.ins) for the immortal Old Macdonald.

the sine-summation, sum-of-cosines, and sum-of-sines generators are deprecated.
  Their replacements are nrxysin (or nrsin), ncos, and nsin.
  snd10.scm has backwards-compatible definitions of these generators.

removed event.scm and all the xm.c stuff that was deprecated in 2002.

sin-m*pi/n and show-digits-of-pi-starting-from functions in numerics.scm


checked: Gamin 0.1.10, sbcl 1.0.23|24, Guile 1.8.6, gtk 2.14.6|2.15.0

Thanks!: Rick, Fernando, Esben Stien, Kjetil, Carlos Pita, Stanko Juzbasic,
         Oded Ben-Tal, Michael Gogins

===============================================================================

Snd 10.2

added osc.scm thanks to Kjetil.

many improvements thanks to Mike and Rick.

removed Gauche support.

moved the run macro from snd-run.c to run.c and put it in sndlib.

removed s7-format.scm -- format is now built-in.

removed s7-optargs.scm -- define* is also built-in.  The main
  difference between the two versions of define* is that the
  s7 version does not (currently anyway) accept expressions
  as default values.

checked: gtk 2.14.4|5, clisp 2.47, sbcl 1.0.22, fftw 3.2

Thanks!: Rick, Kjetil, Meino Cramer, Mike Scholz, David Lowenfels,
	 Hayahiko Moro.


===============================================================================

Snd 10.1

S7 is now the default extension language.

added rhypars.cms by Juan Reyes

in clm.c, I removed the reader/writer locks (rdin and rdout gens);
  these were not working the way I had hoped they would.  Much work
  on threads -- with-threaded-sound has been rewritten 3 or 4 times.

gtkglext (openGL support in gtk) has been unmaintained for a long time,
  and by this point use of --with-gl with --with-gtk can somehow cause
  Snd to log you out!  So, it's not highly recommended.  I wish gtk had
  gone to OpenGL, not cairo.  I'll probably remove the gtkglext support
  soon.

I'm about to remove Gauche support.
  Gauche 0.8.14 segfaults immediately in Snd; Shiro says he didn't change
  anything, but argument handling has clearly changed. I poked around in
  Gauche, but didn't find anything.


checked: gtk 2.14.2|3, cairo 1.8.0, autoconf 2.63, sbcl 1.0.21, Gauche 0.8.14

Thanks!: Benjamin Um, Juan Reyes

===============================================================================

Snd 10.0

more rt/faust/stalin improvements from Kjetil.

moved sine-bank to snd9.scm

2 more generators in generators.scm (tanhsin, moving-spectrum)

tools/numtst.c which generates a Scheme numerics test suite
  also tools/clisp-number|other-tests.scm (taken from Clisp)

A new extension language choice: S7, a TinyScheme derivative.
  This is a small (ca. 10000 lines), source-level embedded
  interpreter (like gnulib -- no libraries, no run-time init files)
  that has full continuations, ratios and complex numbers,
  generalized set!, applicable objects, hash-tables and keywords
  (the latter for define*), defmacro, define-macro, and procedure-with-setter.
  My goal is a simple, multithreadable, possibly even
  real-time extension language that I can change to suit myself.
  S7 is not Scheme++ -- I have removed the notion of an "inexact integer",
  so truncate, floor, and ceiling return (exact) integers,
  and rationalize (which uses continued fractions) returns
  (exact) ratios.  I've added call-with-exit for light-weight
  continuations (equivalent to a goto, or return in C).
  S7 is reasonably fast (it can outperform both Guile
  and Gauche if I get to choose the benchmark), and is
  compatible with Snd's run macro, so the only real bottleneck
  is that macro expansion is slow.  It passes Jaffer's r4rs tests,
  and most of the r6rs number tests mentioned above. I haven't had
  time yet to implement threads.  s7 still hasn't made it through
  snd-test.scm , so there are still plenty of bugs.

Mike Scholz helped me with S7 and improved some of the ruby files.

checked: gtk+-2.13.5|6|7 and 2.14.1, sbcl 1.0.19|20

Thanks!: Kjetil, Bret Battey, Hayahiko Moro, Mike.


===============================================================================

Snd 10.0

more rt/faust/stalin improvements from Kjetil.

moved sine-bank to snd9.scm

2 more generators in generators.scm (tanhsin, moving-spectrum)

tools/numtst.c which generates a Scheme numerics test suite
  also tools/clisp-number|other-tests.scm (taken from Clisp)

A new extension language choice: S7, a TinyScheme derivative.
  This is a small (ca. 10000 lines), source-level embedded
  interpreter (like gnulib -- no libraries, no run-time init files)
  that has full continuations, ratios and complex numbers,
  generalized set!, applicable objects, hash-tables and keywords
  (the latter for define*), defmacro, define-macro, and procedure-with-setter.
  My goal is a flexible, multithreadable, simple, possibly even
  real-time extension language that I can change to suit myself.
  S7 is not Scheme++ -- I have removed the notion of an "inexact integer",
  so truncate, floor, and ceiling return (exact) integers,
  and rationalize (which uses continued fractions) returns
  (exact) ratios.  I've added call-with-exit for light-weight
  continuations (equivalent to a goto, or return in C).
  S7 is reasonably fast (it can outperform both Guile
  and Gauche if I get to choose the benchmark), and is
  compatible with Snd's run macro, so the only real bottleneck
  is that macro expansion is slow.  It passes Jaffer's r4rs tests,
  and most of the r6rs number tests mentioned above. I haven't had
  time yet to implement threads.  s7 still hasn't made it through
  snd-test.scm , so there are plenty of bugs...

Mike Scholz helped me with S7 and improved some of the ruby files.

checked: gtk+-2.13.5|6|7 and 2.14.1, sbcl 1.0.19|20

Thanks!: Kjetil, Bret Battey, Hayahiko Moro, Mike.


===============================================================================

Snd 9.12

more rt/faust/stalin improvements from Kjetil.

moved sine-bank to snd9.scm

2 more generators in generators.scm (tanhsin, moving-spectrum)

tools/numtst.c which generates a Scheme numerics test suite
  also tools/clisp-number|other-tests.scm (taken from Clisp)

A new extension language choice: S7, a TinyScheme derivative.
  This is a small (ca. 10000 lines), source-level embedded
  interpreter (like gnulib -- no libraries, no run-time init files)
  that has full continuations, ratios and complex numbers,
  generalized set!, applicable objects, hash-tables and keywords
  (the latter for define*), defmacro, define-macro, and procedure-with-setter.
  My goal is a flexible, multithreadable, simple, possibly even
  real-time extension language that I can change to suit myself.
  S7 is not Scheme++ -- I have removed the notion of an "inexact integer",
  so truncate, floor, and ceiling return (exact) integers,
  and rationalize (which uses continued fractions) returns
  (exact) ratios.  I've added call-with-exit for light-weight
  continuations (equivalent to a goto, or return in C).
  S7 is reasonably fast (it can outperform both Guile
  and Gauche if I get to choose the benchmark), and is
  compatible with Snd's run macro, so the only real bottleneck
  is that macro expansion is slow.  It passes Jaffer's r4rs tests,
  and most of the r6rs number tests mentioned above. I haven't had
  time yet to implement threads.  s7 still hasn't made it through
  snd-test.scm , so there are plenty of bugs...

Mike Scholz helped me with S7 and improved some of the ruby files.

checked: gtk+-2.13.5|6|7 and 2.14.1, sbcl 1.0.19|20

Thanks!: Kjetil, Bret Battey, Hayahiko Moro, Mike.


===============================================================================

Snd 9.12

more rt/faust/stalin improvements from Kjetil.

moved sine-bank to snd9.scm

2 more generators in generators.scm (tanhsin, moving-spectrum)

tools/numtst.c which generates a Scheme numerics test suite
  also tools/clisp-number|other-tests.scm (taken from Clisp)

A new extension language choice: S7, a TinyScheme derivative.
  This is a small (ca. 10000 lines), source-level embedded
  interpreter (like gnulib -- no libraries, no run-time init files)
  that has full continuations, ratios and complex numbers,
  generalized set!, applicable objects, hash-tables and keywords
  (the latter for define*), defmacro, define-macro, and procedure-with-setter.
  My goal is a flexible, multithreadable, simple, possibly even
  real-time extension language that I can change to suit myself.
  S7 is not Scheme++ -- I have removed the notion of an "inexact integer",
  so truncate, floor, and ceiling return (exact) integers,
  and rationalize (which uses continued fractions) returns
  (exact) ratios.  I've added call-with-exit for light-weight
  continuations (equivalent to a goto, or return in C).
  S7 is reasonably fast (it can outperform both Guile
  and Gauche if I get to choose the benchmark), and is
  compatible with Snd's run macro, so the only real bottleneck
  is that macro expansion is slow.  It passes Jaffer's r4rs tests,
  and most of the r6rs number tests mentioned above. I haven't had
  time yet to implement threads.

Mike Scholz helped me with S7 and improved some of the ruby files.

checked: gtk+-2.13.5|6|7, sbcl 1.0.19|20

Thanks!: Kjetil, Bret Battey, Hayahiko Moro, Mike.


===============================================================================

Snd 9.11

more RT improvements from Kjetil

with-threaded-sound (ws.scm and sound.lisp), support in Snd/CLM for threads.
with-threaded-channels (extensions.scm)
  (these are still in the "alpha" stage, but bug reports are always welcome)

changed arguments to the progress-report funcs (need channel-specific
  widgetry for multi-thread possibilities)

1 more generator in generators.scm

axis-color (to set the axis color in combined graphs)

time-graph-hook (to set data colors in combined graphs)

flatten-partials (avoid spikey waveforms)

mus-max-malloc, mus-max-table-size, *clm-file-buffer-size* can be a bignum (off_t)
  (support in Snd/CLM for off_t sized arrays)

output-safety arg to with-sound, mus-safety method --
   part of trying to get full speed from multicore machines.


checked: gtk 2.13.2|3|4, ruby 1.8.7, clisp 2.46, sbcl 1.0.18


Thanks!: Kjetil, Mike


===============================================================================

Snd 9.10

real-time/stalin support thanks to Kjetil.

new version of autoc.ins thanks to Bret Battey

more Forth-related improvements thanks to Mike.

more jack-related changes thanks to Kjetil.

7 more generators in generators.scm, moved green.scm to generators.scm,
  moving moving-* from dsp.scm to generators.scm (and moved smoothing-filter
  to snd9.scm).

retired the waveshape generator finally (see generators.scm for replacement).

added chebyshev-t-sum, chebyshev-u-sum, and chebyshev-tu-sum using the
  recursive version of the Tn and Un calculations.  Used by the polyoid
  and noid generators in generators.scm to compute peak-phases.scm.

4 more birds in animals.scm

normalize-partials is now built-in (mus_normalize_partials in clm.c)

music5 port: music5.f, music5-examples, old-music5.f

expandn.ins from clm translated to Snd/CLM scheme (clm-ins.scm)

checked: Clozure CL 1.2, guile 1.8.5, fth 1.1.0, clisp 2.45, Fedora 9,
         sbcl 1.0.17, gtk 2.13.1

Thanks!: Bret Battey, Kjetil Matheussen, Mike Scholz, Bill Gosper,
         Marc LeBrun, Julius Smith

===============================================================================

Snd 9.9

more rt and faust-related improvements thanks to Kjetil Matheussen

freeverb bugfix thanks to Oded Ben-Tal.

rmsp.ins replaced by track-rms.ins thanks to Michael Edwards.

many Ruby and Forth-related improvements, and a bugfix in graphEq thanks to Mike.

most of my effort went into the documentation.

selection.scm (with various functions that used to be in examp.scm, extensions.scm etc)

with-marked-sound, with-mixed-sound and with-mixed-sound->notelist (ws.scm)

3 more generators in generators.scm

bess.scm can now be loaded into Snd (as well as run independently as a script)

checked: gsl 1.10, autoconf 2.62, cairo 1.6.4, sbcl 1.0.16

Thanks!: Kjetil Matheussen, Oded Ben-Tal, Michael Edwards, Mike Scholz, Rick Taube.


===============================================================================

Snd 9.8:

more rt improvements and a major bugfix in snd-gtk.scm thanks to Kjetil
  (new files: rt-faust.scm and rt-DotEmacs)

clm4:
  ncos and nsin generators (eventually replace sum-of-cosines and sum-of-sines)
  nrxysin (replacing sine-summation) and nrxycos generators
  polywave (replacing polyshape and waveshape)
  firmant (the Mathews/Smith formant; the old form, mfilter, has been moved to snd9.scm)
  env-any for envelopes with arbitrary functions to connect the dots (not in CL/CLM)
  make-env envelope can be made up of embedded lists: '((0 0) (1 1)) (thanks to Kjetil)
    this also applies to envelopes in Snd.
  defgenerator (generators.scm)
    all the generators in generators.scm changed to reflect the nrxycos style of arguments
  removed mus-cosines (use mus-length, old form is in snd9.scm)
  changed the gain calculation in the formant generator (a long-standing bug)
    mus-formant-radius removed (use mus-scaler, snd9.scm has old form)
    "gain" argument removed from make-formant
    frequency and radius argument order reversed in make-formant (snd9.scm has old-make-formant)
    added 3rd optional argument to formant for frequency change
  mus-name can be set
  mus-run-with-fm-and-pm
  the "stream" arg to outa and friends now defaults to *output*
    *output* (last arg to out* and last arg to in*) can be a function (not in CL/CLM)
    make-locsig defaults to *output* and *reverb* output locations (also make-move-sound)
  with-sound tries to be more informative in case of an error if run-safety is not 0

  CL/CLM: clm3.lisp has obsolete stuff previously in ffi.lisp.
          opencml support on linux 86-64 and ppc
          sbcl support on netbsd, cmucl on sparc, etc
          the cl/clm tarball is now clm-4.tar.gz
          "error" called in run loop tries to call lisp "error" (rather than exit)

added clm4 and snd9 to the *features* lists.

7 more animals in animals.scm

1 more generator in generators.scm

checked: gtk 2.12.8 and 2.13.0, Gauche 0.8.13, sbcl 1.0.14|15, guile 1.8.4, clisp 2.44, cmucl 19e

Thanks!: Kjetil Matheussen, Arthur Green, Timothy E Johnson, Oded Ben-Tal



===============================================================================

Snd 9.7:

added Kjetil's article, sndrt_lac2008.pdf

added SNDLIB_JACK_DONT_AUTOCONNECT and SNDLIB_NUM_JACK_CHANNELS thanks to Kjetil

Forth improvements thanks to Mike

OSS v4 (audio.c) changes thanks to Yair K.

oldmacdonald.lisp (CL/CLM) thanks to William Andrew Burnson

77 more animals in animals.scm
  (Trumpeter swan, Whooping crane, and Sage sparrow are my favorites so far)
  (I'd call these "musical aphorisms" except it sounds pompous -- working for
  3 or 4 hours on a 1/4 second of sound is addictive -- you wonder how anyone
  could have enough to say to fill 30 seconds).

6 more generators in generators.scm
  (including the cosine form of sine-summation)

make-waveshape and make-polyshape partials argument can be a vct,
  as can the partials argument to partials->*

make-table-lookup|wave-train-with-env (generators.scm)

:dur arg to make-env is now :length (:end will eventually go away)
  (other changes in CLM are in the works -- see the end of clm.c,
  under "clm4" -- any comments or other ideas are always welcome)

clm finally works in the sbcl x86-64 linux and mac ppc cases
  (thanks to Rick and a bottle of aspirin)

*clm-default-frequency* (0.0; the old default was 440.0)
   (changing the default to 0.0 simplifies the use of the make-* functions)

checked: gtk 2.12.5|7, cairo 1.4.14

Thanks!: Rick Taube, Kjetil Matheussen, Mike Scholz, Yair K.,
         Howard Gilbert, Jelena Zoran, William Andrew Burnson

===============================================================================

Snd 9.6:

Many more Ruby improvements thanks to Mike.

Fernando fixed a help-system bug.

5 more generators in generators.scm.

102 more calls in animals.scm -- (calling-all-animals) plays them all.

"Open recent" item in File menu.

completions dialog changed to be a drop-down list in the listener
  (in Motif -- I haven't decided how to display it in Gtk).

make-env can take a vct rather than a list for the breakpoint data
  (to make it easier to use at run time).  Also, there are set!
  methods for envelope scaler, offset, and duration.

clear-selection and with-temporary-selection in extensions.scm.

added fft-with-phases -- a normal FFT display but with colors to
  try to show phase info (actually less useful than I hoped).

checked: Fedora 8, sbcl 1.0.11|2, clisp 2.43, gtk 2.12.2|3

Thanks!: Fernando Lopez-Lezcano, Mike Scholz

===============================================================================

Snd 9.5

port to mingw thanks to Kjetil.

changed slightly the way local methods are declared in def-clm-struct

14 more generators in generators.scm, and a couple dozen instruments in various states of disrepair
  (including some imaginary machines)

animals.scm

more changes to fm.html, and fm-parallel|cascade|complex-component in dsp.scm

src-fit-envelope in dsp.scm

changed clm default srate to 44100

moved mus-phase-vocoder-outctr to mus-location (old form is in snd9.scm)

Mike Scholz and Juan Pampin found and fixed bugs in sndlib/clm

checked: pango 1.18.3, guile 1.8.3, gtk 2.12.1, clisp 2.42, OSX 10.5, Gauche 0.8.12

Thanks!: Mike Scholz, Juan Pampin, Bill Sack, Kjetil Matheussen


===============================================================================

Snd 9.4:

added export-all.scm.

the run macro can now find define* args (from within the define*)

def-clm-struct uses def-optkey-fun for its make func,
  and takes an optional :make-wrapper function to specialize the make function.
  Also run is better at handling lists and def-clm-struct.
  def-clm-struct can include a list of lists of (name func) pairs to implement generic funcs.

added generators.scm with 42 new generators (and a couple instruments under construction)
  several of these generators used to be in dsp.scm (under slightly different names) --
  the old forms are in snd9.scm.

clm: changed asymmetric-fm to use cos(sin) and added amplitude normalization.

make-dpss-window and make-papoulis-window in dsp.scm
  gsl-eigenvectors

added make-mixer! and make-frame! to bypass the size checks (for matrices and vectors)

checked: sbcl 1.0.9|10, pango 1.18.1, gtk 2.12.0

Thanks!: Steven Jones, Todd Ingalls, Achim Bornhoeft


===============================================================================

Snd 9.3

rt improvements from Kjetil (new file: rt-clm-ins.scm).

*.rb and *.fs improvements from Mike.

clm.html split:
  clm in CL (CLM tarball) is clm.html,
  clm in other languages (Snd tarball) is sndclm.html

fm.html split in two:
  cl-fm.html in CL (all examples are in CL)
  fm.html in Snd (all examples are in Scheme)
  all the math is now done in LaTex, and I added several pictures
  (most of my work in this version went into fm.html and sndclm.html)

moved autocorrelate to clm
  renamed the graph-hook function "correlate" in examp.scm|fs|rb to "display-correlation"
  added correlate to clm

added a stab at amplitude normalization to sine-summation

dsp.scm: smoothing-filter, weighted-moving-average, exponentially-weighted-moving-average
         Savitzky-Golay filter

numerics.scm (various numerical functions)

mix.scm: delay-channel-mixes

clm: shepard.ins thanks to Juan Reyes

added blackman5 to blackman10 (6 to 11-term sum-of-cosines windows in the Blackman-Harris/Hamming family)
      rv2-window to rv4-window (2nd to 4th order Rife-Vincent windows in the Hann(ing) family)
      mlt-sine-window

removed useless :start arg from make-env
  this means all (CL-CLM) instruments that use make-env need to be recompiled.

checked:  Guile 1.8.2, gtk 2.11.6, gamin 0.1.9, Gauche 0.8.11, pango 1.18.0

Thanks!: Juan Reyes, Kjetil Matheussen, Mike Scholz, Jim Hauser

===============================================================================

Snd 9.2

many Forth/Ruby improvements thanks to Mike.

RIFF bugfix and minGW configure info thanks to Steve Beet.

snddiff.scm
virtual-filter-channel (examp.scm)
max-virtual-ptrees (and a greatly expanded virtual editor)
added optional snd chn args to apply-ladspa and with-tag to mix-channel
power spectral density as transform (green.scm)

clm: mus-increment on gens with a notion of frequency (phase increment);
       to make room for this, asymmetric-fm ratio and sine-summation b moved to mus-offset.
     exp envs optimized

Thanks!: Mike Scholz, Plutek, Etienne Deleflie, Steve Beet, Kjetil Matheussen, unknown_error

Checked: gtk 2.11.2|3|4|5, cairo 1.4.8|10, Fedora 7, sbcl 1.0.6|7

===============================================================================

Snd 9.2

many Forth/Ruby improvements thanks to Mike.

RIFF bugfix and minGW configure info thanks to Steve Beet.

snddiff.scm
virtual-filter-channel (examp.scm)
max-virtual-ptrees (greatly expanded virtual editor)

added optional snd chn args to apply-ladspa and with-tag to mix-channel
power spectral density as transform (green.scm)

clm: mus-increment on gens with a notion of frequency (phase increment);
       to make room for this, asymmetric-fm ratio and sine-summation b moved to mus-offset.
     exp envs optimized

Thanks!: Mike Scholz, Plutek?, Etienne Deleflie, Steve Beet, Kjetil Matheussen, unknown_error

Checked: gtk 2.11.2|3|4|5, cairo 1.4.8|10, Fedora 7, sbcl 1.0.6|7

===============================================================================

Snd 9.1

more work on the virtual mix support

Two new hooks: peak-env-hook, draw-mix-hook

added mouse position args to mix-drag-hook

background-gradient (gtk+cairo only)

sound-mark-info

mix-sync-max

moved equalize-panes to snd-motif.scm

new rt-compiler.scm et al thanks to Kjetil

SIGUSR1 (kill -10) throws Snd back to its top level

in cmn:
  Michael Edwards added a way to change a staff name (new-staff-name)
  I did half of the :old-style layout bugfix (the staves are laid out correctly, I think)

in clm:
  changes for ACL 8.1



Thanks!: Michael Edwards, Etienne Deleflie, Joshua Parmenter, Kjetil Matheussen

checked: Ruby 1.8.6, sbcl 1.0.5, gtk 2.10.12|2.11.0|1, ACL 8.1, pango 1.17.0|1|2,
         glib 2.13.2|3

===============================================================================

Snd 9.1

Two new hooks: peak-env-hook, draw-mix-hook

added mouse position args to mix-drag-hook

background-gradient (gtk+cairo only)
sound-mark-info
mix-sync-max

moved equalize-panes to snd-motif.scm

in cmn:
  Michael Edwards added a way to change a staff name (new-staff-name)
  I did half of the :old-style layout bugfix (the staves are laid out correctly, I think)

new rt-compiler.scm et al thanks to Kjetil

in clm:
  changes for ACL 8.1

SIGUSR1 (kill -10) throws Snd back to its top level


Thanks!: Michael Edwards, Etienne Deleflie, Joshua Parmenter, Kjetil Matheussen

checked: Ruby 1.8.6, sbcl 1.0.5, gtk 2.10.12|2.11.0|1, ACL 8.1, pango 1.17.0|1|2,
         glib 2.13.2|3

===============================================================================

Snd 9.1


peak-env-hook
draw-mix-hook

background-gradient (gtk+cairo only)
sound-mark-info
mix-sync-max

moved equalize-panes to snd-motif.scm

in cmn:
  Michael Edwards added a way to change a staff name (new-staff-name)
  I did half of the :old-style layout bugfix (the staves are laid out correctly, I think, but first-staff clefs are omitted)

in clm:
  changes for ACL 8.1

SIGUSR1 (kill -10) throws Snd back to its top level -- a way, perhaps, to get out
  of any infinite loop.


Thanks!: Michael Edwards, Etienne Deleflie, Joshua Parmenter

checked: Ruby 1.8.6, sbcl 1.0.5, gtk 2.10.12|2.11.0, ACL 8.1, pango 1.17.0|1,
         glib 2.13.2

===============================================================================

Snd 9.1


peak-env-hook
draw-mix-hook

background-gradient (gtk+cairo only)
sound-mark-info

moved equalize-panes to snd-motif.scm

in cmn:
  Michael Edwards added a way to change a staff name (new-staff-name)
  I did half of the :old-style layout bugfix (the staves are laid out correctly, I think, but first-staff clefs are omitted)

in clm:
  changes for ACL 8.1

SIGUSR1 (kill -10) throws Snd back to its top level -- a way, perhaps, to get out
  of any infinite loop.


Thanks!: Michael Edwards, Etienne Deleflie, Joshua Parmenter

checked: Ruby 1.8.6, sbcl 1.0.5, gtk 2.10.12|2.11.0, ACL 8.1, pango 1.17.0, glib 2.13.2

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track            play-mixes
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks        sync-mixes
    track                 (now any list of mix ids) -- syncd-mixes follows the mix-sync value
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes
    pan-mix (mix.scm) and all its friends

  added
    edit-properties
    edit-property accessor in extensions.scm
    mix-sync

    mix.scm:
      scale-mixes
      silence-mixes
      move-mixes
      src-mixes
      transpose-mixes
      color-mixes
      set-mixes-tag-y
      mixes-maxamp
      scale-tempo
      mixes-length
      save-mixes
      env-mixes
      sync-all-mixes
      syncd-mixes
      play-mixes

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)

the 1st arg to "play" can be a function that produces samples to be sent to the DAC, or
  controls other such processes -- see play-mixes in mix.scm for an example.


as always, infinite Ruby and Forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2|4, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track            play-mixes
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks        sync-mixes
    track                 (now any list of mix ids) -- syncd-mixes follows the mix-sync value
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes
    pan-mix (mix.scm) and all its friends

  added
    edit-properties
    edit-property accessor in extensions.scm
    mix-sync

    mix.scm:
      scale-mixes
      silence-mixes
      move-mixes
      src-mixes
      transpose-mixes
      color-mixes
      set-mixes-tag-y
      mixes-maxamp
      scale-tempo
      mixes-length
      save-mixes
      env-mixes
      sync-all-mixes
      syncd-mixes
      play-mixes

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)

the 1st arg to "play" can be a function that produces samples to be sent to the DAC, or
  controls other such processes -- see play-mixes in mix.scm for an example.


as always, infinite Ruby and Forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2|4 (I'm getting segfaults from 1.16.4),
         Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track            play-mixes
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks        sync-mixes
    track                 (now any list of mix ids) -- syncd-mixes follows the mix-sync value
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes
    pan-mix (mix.scm) and all its friends

  added
    edit-properties
    edit-property accessor in extensions.scm
    mix-sync

    mix.scm:
      scale-mixes
      silence-mixes
      move-mixes
      src-mixes
      transpose-mixes
      color-mixes
      set-mixes-tag-y
      mixes-maxamp
      scale-tempo
      mixes-length
      save-mixes
      env-mixes
      sync-all-mixes
      syncd-mixes
      play-mixes

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)

the 1st arg to "play" can be a function that produces samples to be sent to the DAC, or
  controls other such processes -- see play-mixes in mix.scm for an example.


as always, infinite Ruby and Forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2|4, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks        sync-mixes
    track                 (now any list of mix ids) -- syncd-mixes follows the mix-sync value
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position
    pan-mix (mix.scm) and all its friends

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes

  added
    edit-properties
    edit-property accessor in extensions.scm
    mix-sync

    mix.scm:
      scale-mixes
      silence-mixes
      move-mixes
      src-mixes
      transpose-mixes
      color-mixes
      set-mixes-tag-y
      mixes-maxamp
      scale-tempo
      mixes-length
      save-mixes
      env-mixes
      sync-all-mixes
      syncd-mixes

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)


as always, infinite ruby and forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks
    track                 (now any list of mix ids)
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position
    pan-mix (mix.scm) and all its friends

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes

  added
    edit-properties
    edit-property accessor in extensions.scm
    mix-sync

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)


as always, infinite ruby and forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks
    track                 (now any list of mix ids)
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position
    pan-mix (mix.scm) and all its friends

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes

  added
    edit-properties
    mix-sync

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)


as always, infinite ruby and forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen, "bigcab"

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks
    track                 (now any list of mix ids)
    track->sound-data     (see save-mixes)
    track->vct            (see save-mixes)
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position
    pan-mix (mix.scm) and all its friends

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes

  added
    edit-properties
    mix-sync

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)


as always, infinite ruby and forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2, Gauche 0.8.10


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen

===============================================================================

Snd 9.0

I discarded the old recorder and the track support, and completely
revamped the virtual mix support -- enough changes to warrant a new
major version.


the recorder:
  completely discarded the old recorder and its functions -- these are gone:
    recorder-autoload
    recorder-buffer-size
    recorder-file
    recorder-file-hook
    recorder-gain
    recorder-in-amp
    recorder-in-chans
    recorder-in-data-format
    recorder-in-device
    recorder-max-duration
    recorder-out-amp
    recorder-out-chans
    recorder-out-data-format
    recorder-out-header-type
    recorder-srate
    recorder-trigger
    vu-in-dB
    vu-size
  due to hardware troubles, I haven't fully tested the new recorder.

tracks:
  removed:             replacement:
    copy-track
    delete-all-tracks     silence-all-mixes
    delete-track          silence-mixes
    filter-track
    free-track
    lock-track
    make-track
    make-track-frame-reader
    make-track-sample-reader
    mix-track
    play-track
    read-track-frame
    read-track-sample
    retempo-track         scale-tempo
    reverse-track         scale-tempo by a negative scaler
    save-track            save-mixes
    set-all-tracks
    track                 (now any list of mix ids)
    track->sound-data
    track->vct
    track-amp             scale-mixes
    track-amp-env         env-mixes
    track-chans
    track-color           color-mixes
    track-dialog-track
    track-frames          mixes-length
    track-maxamp          mixes-maxamp
    track-name
    track-position        move-mixes
    track-property
    track-sample-reader?
    track-speed           src-mixes
    track-speed-style
    track-tag-y           set-mixes-tag-y
    track-tempo           scale-tempo
    track-track
    track?                (now just a list)
    tracks
    transpose-track       transpose-mixes
    view-tracks-dialog

  removed track-colors.scm and mix-menu.scm

  removed all track-related arguments from functions such as mix-vct, mix, and
    mix-region

  removed tempo-control-bounds

  completely rewrote the virtual mix support:  these are gone:
    copy-mix
    delete-mix (set mix-amp to 0.0)
    mix-chans (each mix is one chan in -> one chan out)
    mix-inverted?
    mix-locked?
    mix-speed-style
    mix-tag-position
    pan-mix (mix.scm) and all its friends

  changed
    mix-frames -> mix-length
    delete-all-mixes -> silence-all-mixes

  added
    edit-properties
    mix-sync

  moved mix-properties into C.

  "mix" function now handles one channel in and out and the position defaults to 0 (not the cursor)


as always, infinite ruby and forth improvements thanks to Mike

spokenword.scm thanks to Ville Koskinen

checked: fftw 3.2a, cairo 1.4.2|4, sbcl 1.0.4, pango 1.16.2


Thanks!: Mike Scholz, Esben Stien, Michael Edwards, Ville Koskinen

===============================================================================

Snd 8.9

many more Forth and Ruby improvements from Mike.

three more fft windows: bohman-window, bartlett-hann-window, flat-top-window

kalman-filter-channel (dsp.scm) -- noise-reduction experiment

clean.scm -- more noise reduction (clean-channel|sound)

File:Close all menu if more than one sound open

open-file-dialog-directory to set the initial Open File dialog directory

changed default html reader from mozilla to firefox

added bindings to xg.c for cairo and gtk print

added a cairo graphics backend (on the --with-cairo configure switch)
  no "eye candy" yet, but everything works, I hope.


checked: Gauche 0.8.9, pango 1.15.6, 1.16.0|1, gsl 1.9, fth 1.0.8, sbcl 1.0.3,
    glib 2.12.10|11 2.13.0, cairo 1.4.0, gtk+-2.10.10


Thanks!: Michael Edwards, Peter Anderson, Immanuel Litzroth, Mike Scholz,
         Jay LaBoeuf, Max Mathews, Luke Dahl, Joanne Carey, Charles Turner,
	 Kjetil Matheussen, Anders Vinjar


===============================================================================

Snd 8.9

many more Forth and Ruby improvements from Mike.

three more fft windows: bohman-window, bartlett-hann-window, flat-top-window

kalman-filter-channel (dsp.scm) -- noise-reduction experiment

clean.scm -- more noise reduction (clean-channel|sound)

File:Close all menu if more than one sound open

open-file-dialog-directory to set the initial Open File dialog directory

changed default html reader from mozilla to firefox

added bindings to xg.c for cairo and gtk print

added a cairo graphics backend (on the --with-cairo configure switch)
  no "eye candy" yet, but everything works, I think -- cairo is a lot slower
  than gdk or GL (I wonder why gtk chose cairo over GL).


checked: Gauche 0.8.9, pango 1.15.6, 1.16.0|1, gsl 1.9, fth 1.0.8, sbcl 1.0.3,
    glib 2.12.10|11 2.13.0, cairo 1.4.0, gtk+-2.10.10


Thanks!: Michael Edwards, Peter Anderson, Immanuel Litzroth, Mike Scholz,
         Jay LaBoeuf, Max Mathews, Luke Dahl, Joanne Carey, Charles Turner,
	 Kjetil Matheussen


===============================================================================

Snd 8.8:

many improvements from Mike

Jack support in OSX and Cygwin from Kjetil

poussin-sum and jackson-sum in dsp.scm (more band-limited pulse-trains), and changed
  amplitude scaling in fejer-sum and legendre-sum so that they always peak at 1.0.
  Also added a note in clm.html showing a way to get a time-varying pulse-train.

changed default-output-data-format to mus-bfloat

removed initFile and the (undocumented) htmlDir X resources

make install now copies the *.scm|fs|rb files to {prefix}/share/snd

added read/write support for Apple's new CAFF (64-bit) audio files

checked: glib 2.12.7|8|9, gtk 2.10.7|8|9, Mesa 6.5.1|2, pango-1.15.3|4|5,
         sbcl 1.0.1|2, fth 1.0.7

Thanks!:  Mike Scholz, Kjetil Matheussen, Meino Christian Cramer, Michael Edwards



===============================================================================

Snd 8.7

a huge number of *.fs and *.rb improvements from Mike, including the
  new file bird.fsm.


added frame.scm with:

    frame-reverse! frame-copy (from mixer.scm)
    sound->frame frame->sound
      region->frame

    make-frame-reader frame-reader? frame-reader-at-end frame-reader-position
      frame-reader-home free-frame-reader copy-frame-reader frame-reader-chans
      next-frame previous-frame read-frame
      make-region-frame-reader make-selection-frame-reader
      make-track-frame-reader read-track-frame make-sync-frame-reader

    frame->sound-data sound-data->frame
    sound->sound-data sound-data->sound
      region->sound-data track->sound-data selection->sound-data
    file->vct vct->file
    frame->vct vct->frame
    file->sound-data sound-data->file

    insert-sound-data insert-frame insert-vct
    mix-sound-data mix-frame
    scan-sound map-sound (this replaces 8.6's scan-sound)

    simultaneous-zero-crossing

added to extensions.scm:
    pad-sound contrast-sound dither-sound scale-sound offset-sound normalize-sound

added to examp.scm:
    compand-sound sync-all

sound-data-multiply! sound-data-add! sound-data-offset! sound-data* sound-data+
    sound-data-copy sound-data-reverse! sound-data-peak

region-home
add-source-file-extension

clip-hook: called whenever we're about to clip while writing a sound file
  unclip-channel (dsp.scm) based on LPC (reconstruction via forward and backward prediction)
  lpc-coeffs and lpc-predict in dsp.scm
  io.c:  mus_clip_set_handler

finally decided to build in the definition of pi in Guile and Gauche.
  In the context of Snd, it is absurd to have to make sure "pi" is defined all the time.
  It's already defined in Forth, and in Ruby it's PI in the math module.

clm.c: removed (unused) mus_make_frame|mixer_with_data

removed the default font settings in Snd.gtkrc -- presumably Snd
  will now pick up your theme's default font.

added a -nogtkrc startup switch.  This turns off the search for a gtkrc file,
  or its built-in equivalent -- you get whatever your current theme wants.

removed open-sound-file, vct->sound-file, and close-sound-file.
  These were optimizations that make little sense anymore -- use
  mus-sound-open-output and friends instead.  See snd8.scm for
  backwards compatible replacements.

mix tags use the mix-color now


Checked: sbcl 1.0,
         lesstif 0.95 (it still doesn't work with Snd -- segfaults,
           comatose listener, etc),
         cmucl 19d (dies trying to compile cmn's transpose.lisp,
           so that file is commented out for this version of cmucl),
         pango 1.15.1|2, fontconfig 2.4.2, cairo 1.2.6, glib 2.12.5|6, stklos 0.82,
         gamin 1.8.0 (this version fixes at least one of the problems
           that would sometimes cause Snd to hang)

Thanks: Fernando Lopez-Lezcano, Mike Scholz, Kjetil Matheussen, Forest Bond

===============================================================================

Snd 8.6

many improvements from Mike.

mix/track mechanism sped up by about a factor of 100, so its possible
  to have thousands of each (but the screeen gets very cluttered).

  added mix-name, track-name, track-tag-y, mix-name->id, and track-name->id
  to help navigate in these situations.


out-any, in-any, locsig, move-sound, and friends can now handle vct and sound-data objects
  as the "stream" argument.  In with-sound, this is the *output* variable or :output
  argument which then applies to all notes. So, with-sound can be used in a zillion new ways:

     (vct-scale! (with-temp-sound (:output (make-vct 2210)) (fm-violin 0 .1 440 .1)) 2.0)

  This extension caused changes in sound-data object handling:
    sound-data-scale! (for with-sound writing to a sound-data object and with the
      :scaled-to or :scaled-by arguments)
    sound-data-fill! (also for with-sound if not :continue-old-file)

  fade.scm instruments changed to use outa rather than vct-map!
  moved samples->sound-data to snd8.scm.
  Mike provided sndins support for this change.


rf64 headers and mutable riff for very large output files.

mus-float-equal-fudge-factor (mainly for reasonable generator equal? checks)

->frequency, ->samples (ws.scm) for things like (violin 0 .1 'e4).

channel-clipped? in examp.scm

filter-fft in examp.scm.

checked: Fedora Core 6, sbcl 0.9.18, fth 1.0.0, Gauche 0.8.8, autoconf 2.61

Thanks: Jacek M. Holeczek, Rick Taube, Mike Scholz, Kjetil Matheussen, Julius Smith,
    Joseph Anderson, SamButcha


===============================================================================

Snd 8.5

many improvements thanks to Kjetil and Mike.

gl2ps support, gl-graph->ps function, --with-gl2ps switch, gl2ps.[ch]

added gtk-effects-utils.scm, gtk support for *-menu.scm.

finally implemented the log-frequency display in non-GL spectrograms.

save-marks changed to keep matching sync values
add-mark now takes new optional trailing args: name and sync

removed the gtk_print stuff from xg.c since it's all useless without
  support for the cairo graphics functions and the pango functions
  that access them.

sounds->segment-data (examp.scm) -- returns segment start/dur/maxamp data for collections
  of sounds.

with-file-monitor -- can be set to #f to turn off the FAM process stuff.

add-watcher and delete-watcher -- this is a simpler (and less accident-prone)
  hook to catch any change to the sound list, the current selection, or the mark list;
  it is intended to replace the multi-hook kludges currently used to set dialog button
  sensitivity, for example.  Since each watcher is identified by a unique integer,
  local (unnamed) functions can easily be deleted and so on.

  removed selection-changed-hook (use simpler watcher mechanism instead).

in cmn, thickness message now affects bars locally.  Added *double-barline-thickness*.

checked: gtk-2.10.4|5|6, sbcl 0.9.17, clisp 2.40|1.

Thanks: Michael Edwards, Mike Scholz, Kjetil Matheussen, Carlos Pita,
    Carsten Heinrigs, Dragan Novetski, Jacek M. Holeczek, David O'Toole

===============================================================================

Snd 8.4

many ruby, forth, and sndins-related improvements from Mike including new file analog-filter.rb.
  "scheme" instead of "guile" in various names in inf-snd.el (for gauche)

improvements in strad.ins and bandedwg.ins from Juan Reyes

snd_frg.scm thanks to Olivier Doare

granulated-sound-interp (examp.scm)

display-bark-fft (dsp.scm) -- spectral display using bark, erb, and mel scales

def-optkey-instrument (ws.scm)

new optional argument to graph -- lisp graph axis choice
new axis choice --show-bare-x-axis
snd-color
snd-font
after-lisp-graph-hook
removed vu-font and vu-font-size, added vu-in-dB
removed spectrogramColor X resource

checked: ruby 1.8.5, sbcl 0.9.15|16, gtk 2.10.2|3, fth 0.10.22

Thanks: Mike Scholz, Anders Vinjar, Kjetil Matheussen, Bill Sack, Pam & Harold Norris,
    Juan Reyes, Daniel Stahl, Michael Edwards, Carlos Pita

===============================================================================

Snd 8.4

many ruby, forth, and sndins-related improvements from Mike including new file analog-filter.rb.
  "scheme" instead of "guile" in various names in inf-snd.el (for gauche)

improvements in strad.ins and bandedwg.ins from Juan Reyes

snd_frg.scm thanks to Olivier Doare

granulated-sound-interp (examp.scm)

display-bark-fft (dsp.scm) -- spectral display using bark, erb, and mel scales

def-optkey-instrument (ws.scm)

new optional argument to graph -- lisp graph axis choice
new axis choice --show-bare-x-axis
snd-color
snd-font
after-lisp-graph-hook
removed vu-font and vu-size, added vu-in-dB
removed spectrogramColor X resource

checked: ruby 1.8.5, sbcl 0.9.15|16, gtk 2.10.2|3, fth 0.10.22

Thanks: Mike Scholz, Anders Vinjar, Kjetil Matheussen, Bill Sack, Pam & Harold Norris,
    Juan Reyes, Daniel Stahl, Michael Edwards, Carlos Pita

===============================================================================

Snd 8.4

many ruby, forth, and sndins-related improvements from Mike including new file analog-filter.rb.
  "scheme" instead of "guile" in various names in inf-snd.el (for gauche)

improvements in strad.ins and bandedwg.ins from Juan Reyes

snd_frg.scm thanks to Olivier Doare

I was mainly fixing bugs -- my TODO list has only 97 entries!!

granulated-sound-interp (examp.scm)

display-bark-fft (dsp.scm) -- spectral display using bark, erb, and mel scales

def-optkey-instrument (ws.scm)

new optional argument to graph -- lisp graph axis choice
new axis choice --show-bare-x-axis
snd-color
snd-font
after-lisp-graph-hook
removed vu-font and vu-size, added vu-in-dB
removed spectrogramColor X resource

checked: ruby 1.8.5, sbcl 0.9.15|16, gtk 2.10.2|3, fth 0.10.22

Thanks: Mike Scholz, Anders Vinjar, Kjetil Matheussen, Bill Sack, Pam & Harold Norris,
    Juan Reyes, Daniel Stahl, Michael Edwards, Carlos Pita

===============================================================================

Snd 8.3

CLM generators:
  added filtered-comb ("fcomb" for freeverb)
  added move-sound (runtime portion of dlocsig)
  renamed average generator to moving-average
  renamed windowed-maxamp to moving-max (dsp.scm)
  added moving-rms, moving-sum, moving-length (dsp.scm)
     overlay-rms-env (draw.scm) uses moving-rms
     Perhaps these should be built-in CLM generators.
  mfilter (dsp.scm) -- Mathews/Smith high-Q filter
    (similar to formant; another version is maxf.scm/ins)
  removed make-ppolar|zpolar (use make-two-pole|zero)
  moved ssb-fm and rmsgain.scm code to clm-ins.scm (removed rmgain.scm)
  locsig now returns a float (not a frame)

dlocsig.scm (translation to Scheme of Fernando's dlocsig.lisp)
  in CL-CLM, dlocsig.lisp and move-sound.ins now use the move-sound generator.
  mix-move-sound (extsnd.html)

green.scm (bounded brownian noise, from CLM's green.cl)

snd8.scm (backwards compatibility stuff for snd 8)

shepard-tone (sndscm.html)
agc (dsp.scm)
with-full-sound (ws.scm)
def-clm-float-struct (CL-CLM only)
fir+comb (clm.html)
removed vct-map

g_signal_connect and other such macros, and gtk_print_operation* to xg.c

merged new-icons.scm into new-buttons.scm and renamed the latter toolbar.scm
  toolbar.scm also works in gtk

*.fs updates and other improvements from Mike Scholz


checked: gtk 2.9.4, 2.10.0|1, autoconf 2.60, fth 0.10.0|2, sbcl 0.9.14, fftw 3.1.2,
    clisp 2.39


Thanks: Michael Klingbeil, Kjetil Matheussen, Mike Scholz, Oded Ben-Tal,
    Russell Aspinwall, Anders Vinjar


===============================================================================

Snd 8.2

Most of the effort in this version of Snd went into the documentation.

added sndins improvements thanks to Mike.

      fmviolin.clm (fm-violin demo from CLM)

      'clear' and 'revert' buttons in the preferences dialog

      normalize-envelope in env.scm.

removed mus-make-error.

changed (the name of) after-apply-hook to after-apply-controls-hook


Checked: gtk 2.9.0|1|2|3, fth 0.8.18|19|20|21|22

Thanks: Pete Thomas, Esbien Stieb, Mike Scholz


===============================================================================

Snd 8.1

added a bunch of Forth files (*.fs) thanks to Mike Scholz.

many more improvements from Kjetil and Mike.

Gauche support in Snd -- this is a Scheme extension language like Guile.

     http://www.shiro.dreamhost.com/scheme/gauche/index.html

  use --with-gauche in configure.  There are a number of small differences
  between Gauche and Guile.

    added gauche-optargs.scm to get define* (but not defmacro*)
          gauche-format.scm to get ~{ and others, but it's semi-broken
          block comments in '#| |#' to the Guile Snd to be compatible with Gauche (and CL).
    removed ws-interrupt? arg (no defmacro* currently in Gauche version).
    added define+ and definstrument+ to get around lack of documentation string support in Gauche.
    changed all '#! !#' to "#| |#'
    changed all '#:' to ':'
    "run" is a no-op in Gauche -- local variables aren't (currently) accessible in this context.

clisp support in clm.  Due to Clisp's way of macroexpanding "loop", the
  loop macro can't be used within "run" (this affects Clisp users only of course).
  I changed a bunch of such cases to use "do". Also, "run*" doesn't currently work in
  the Clisp clm.

changed show-listener slightly; if optional arg is #f, listener is not created.

removed envelope-base.

clm-load (ws.scm) for cm.

checked: sbcl 0.9.11|12, gsl 1.8, gtk 2.8.17, fftw 3.1.1, fth up to 0.8.16

with much help from: Michael Klingbeil, Kjetil, Mike.

===============================================================================

Snd 8.0

The reason for the new major version: Mike Scholz has provided a complete
  implementation of Forth as an extension language!  It's based on
  http://sourceforge.net/projects/fth.  Use --with-forth with the
  configuration script.

  This is in snd-8.tar.gz at the ccrma ftp site -- I'll update all the
  other versions as soon as possible.


Other changes since version 7.19:

many improvements (ladspa.scm etc) thanks to Kjetil.

kmenu.scm and add-main-menu-mnemonics in snd-gtk.scm thanks to Maxim Krikun.

in clm bandedwg.ins thanks to Juan Reyes.

granulate now has a local random number seed (settable via the mus-location method)
  also peak-env.scm is smarter about data formats (both thanks to Kjetil).

main-menu changed in gtk so that added top level menus return the same widget type as
  the built-in ones -- to get the old menu-shell, wrap the main-menu calls with:
  (gtk_menu_item_get_submenu (GTK_MENU_ITEM (main-menu ...)))

show-selection (extensions.scm)

replaced useless "Filter" button in file dialogs with "Mkdir"

added a stop sign to interrupt long computations (equivalent to C-g)

x-axis-as-clock for more informative x-axis tick labels in very large files

heart.scm (use Snd with non-sound data)

added support for more sound file decoders (along the lines of the current mpeg reader):
  shorten (propietary, read-only), tta (GPL, via ttaenc), wavpack (propietary)

in cmn, removed nxtcmn.c, sgicmn.c, xcmnw.c, cmn-mcl-utils.lisp, cmn-mcl.lisp,
          cmn-excl.lisp, cmn-scroll.lisp.  Removed all FFI, quickdraw, and Braille stuff.
          cmn is now a pure Lisp program that outputs only postscript files.

checked: gtk 2.8.14|15|16, sbcl 0.9.10, Fedora Core 5 (gcc 4.1), netBSD 3.0

with much help from: Mike, Kjetil, Fernando, Maxim Krikun, Juan Reyes, Steve Kuhlmann,
  Tim Blechmann





===============================================================================

Snd 7.19

Bill Sack's pd-stochastic.scm and snd-stochastic.pd.

more pd-related improvements, thanks to Kjetil.

more ruby and emacs related improvements thanks to Mike.

in clm, numerous sbcl-related bugfixes thanks to Fernando.

new-sound-dialog.

removed ancient SGI-specific useScheme resource

removed XmMultiList from xm module

alsa: changed environment variable names to use MUS_* rather than SNDLIB_*
      changed default alsa device to "default", but it then looks for "plughw:0"
            and "hw:0" if things seem weird.
      added mus-alsa-playback-device, mus-alsa-capture-device, mus-alsa-device,
            mus-alsa-buffers, mus-alsa-buffer-size, mus-alsa-squelch-warning.

changed mus-audio-sun-outputs to mus-sun-set-outputs, and
        mus-audio-set-oss-buffers to mus-oss-set-buffers
added mus-netbsd-set-outputs

mus-file-data-clipped -> mus-clipping, added mus-file-clipping for local settings
  data-clipped -> clipping
  mus-prescaler (global) alongside previous mus-file-prescaler

added pausing -- returns #t if DAC is paused, can be set to #t or #f to start/stop pausing
  similarly playing -- #t if DAC is running (may be paused), settable to start/stop playing
  removed dac-is-running (it's in snd7.scm)
  (eventually I'd like to get rid of the jargon "DAC", but that involves 5 more names)

with-tracking-cursor and with-verbose-cursor as synonyms for cursor-follows-play and verbose-cursor
  tracking-cursor-style

bind-key now takes a character or string 1st arg (as well as an integer); if a string, it's treated
  as the X/Gtk key name (e.g. "Home" or "plus").  It also has a 6th optional arg, a preferences
  dialog name (so that the dialog can reflect current key bindings by functionality).


checked: clisp 2.38 (cmn), fftw 3.1, gtk 1.8.11|12|13, sbcl 0.9.9, MacIntel, guile 1.8.0

with much help from: Kjetil, Mike, Russell Aspinwall, Eric Marzolf, Fernando,
   Bill Sack, Sebastian Tennant



===============================================================================

Snd 7.18

snd_pd_external.c, help-snd-fm.pd, and pd-fm.scm and other changes for Pd, thanks to Kjetil.

Many more improvements thanks to Mike.

default sample type is now float. This should only affect the "peak-env" files which will
  need to be rebuilt (just delete the current peak files, and they'll be rebuilt as needed
  automatically).

analog-filter.scm: Butterworth, Chebyshev, inverse-Chebyshev, Bessel(-Thompson), Elliptic filters.
  (These functions are based on code of Anders Johansson)

new fft windows: samaraki and ultraspherical (related to the dolph-chebyshev window)
  ultraspherical window has an additional parameter (side lobe shape) named
  fft-window-alpha here (to parallel fft-window-beta).

new sound effects:
  sinc-train (clm.html)
  reverse-by-blocks and reverse-within-blocks (examp.scm)
  pulse-voice (examp.scm)

moved make-iir-low|high-pass-1 to snd7.scm (from dsp.scm)

removed the various sorting indices (sort-by-name|size|date|entry), and changed
  the way the user-defined sorter works. (snd7.scm defines the old names).
  Also removed (unimplemented, but documented) file-sorters list, and the
  now useless just-sounds-hook.  added sound-file? for easier file-filter definition.

in both Motif and Gtk, the file selection dialogs have been changed -- there are
  fewer visible widgets, but popup menus are scattered around to handle uncommon
  chores (sorting, filtering, etc).  libgamin is connected to the file list as
  elsewhere.  Right-click in the file list brings up a menu of sorting/filtering
  choices; in the directory list it brings up a menu that splits out the parent
  directories (single-click in the directory list moves to that directory);
  in the file and filter entry widgets it brings up a list of previous choices.
  If you type in the file entry widget, the file list tries to move to the apparent choice.
  The "preview area" is as before -- a description of the selected sound file,
  with "play" and "just-sounds" buttons.

In the xm module, XmNpopupEnabled is now an enum (it was boolean -- I was following
  the incorrect info in the Motif docs -- use XmPOPUP_AUTOMATIC rather than #t).

the happy buttons have hunkered down for the winter.

checked: gtk 2.8.8|9|10, sbcl 0.9.7|8, clisp 2.36|7 (cmn), motif 2.3.0, ruby 1.8.4,
         Mesa 6.4.1 (openGL), gamin 0.1.7 (fam)

with much help from: Kjetil, Mike, Russell Aspinwall

===============================================================================

Snd 7.17

Mike made many improvements in the ruby support

Kjetil added a -volume argument to sndplay

all dlp directory files moved to main directory (to simplify load-path handling)

added: *clm-notehook* and *definstrument-hook* added to Guile version of with-sound (thanks to Rick)
       the rest of the preferences dialog
       mus-header-raw-defaults
       sync-max
       SND_PATH environment variable (optional load path directory list)

if --with-float-samples and --with-doubles, the internal sample data type is double.
  (this also affects CLM)

moved snd-apropos to snd7.scm.

clm: fixed various instruments that were using mus-location with src:
         backandforth.ins, scratch in ug1.ins, granular.ins, various test ins.
     added optional srate envelope arg to fullmix.
     Rick added clm.asd.
     Fernando updated dlocsig and friends.
     *clm-tempfile-data-format* and *clm-tempfile-header-type*.

cmn: *dynamics-minimum-vertical-separation* added by Anders.
     Anders also added support for dy0 and dy1 messages in wedge.lisp.
     Rick added cmn.asd.
     *dot-vertical-spacing*

checked: ACL 8.0, openmcl 1.0, cmucl 19c, clisp 2.35 (cmn), gtk 2.8.7

with much help from Mike, R Mattes, Rick, Anders, J Reyes, Kjetil, T Blechmann
   	J Rundall, H Fugal, Fernando, J Sandgren, M Klingbeil

===============================================================================

Snd 7.17

Mike made many improvements in the ruby support

Kjetil added a -volume argument to sndplay

all dlp directory files moved to main directory (to simplify load-path handling)

added: *clm-notehook* and *definstrument-hook* added to Guile version of with-sound (thanks to Rick)
       the rest of the preferences dialog
       mus-header-raw-defaults
       sync-max
       SND_PATH environment variable (optional load path directory list)

if --with-float-samples and --with-doubles, the internal sample data type is double.
  (this also affects CLM)

moved snd-apropos to snd7.scm.

clm: fixed various instruments that were using mus-location with src:
         backandforth.ins, scratch in ug1.ins, granular.ins, various test ins.
     added optional srate envelope arg to fullmix.
     Rick added clm.asd.
     Fernando updated dlocsig and friends.

cmn: *dynamics-minimum-vertical-separation* added by Anders.
     Anders also added support for dy0 and dy1 messages in wedge.lisp.
     Rick added cmn.asd.
     *dot-vertical-spacing*

checked: ACL 8.0, openmcl 1.0, cmucl 19c, clisp 2.35 (cmn), gtk 2.8.7

with much help from Mike, R Mattes, Rick, Anders, J Reyes, Kjetil, T Blechmann
   	J Rundall, H Fugal, Fernando, J Sandgren, M Klingbeil

===============================================================================

Snd 7.16

Marten Stromberg provided a PDF version of snd.html, but I can't decide
  where it should go.

new dialog: first half (Motif version) of a preferences dialog (Options menu item).

added cycle speed style via click, mix|track-speed-style
      analyze-ladspa as synonym for analyse-ladspa
      save/insert/mix buttons in region browser
      save-region-dialog
      --enable-threads configure switch, and first use thereof (FIR filtering)
      snd-g|xprefs.c, preferences-dialog function

snd-error is now (throw 'snd-error ...)

init file handling has become more complex: ~/.snd is still loaded if present,
  as is /etc/snd.conf, but Snd also now looks for ~/.snd_guile|ruby, and
  /etc/snd_guile|ruby.conf, and the preferences dialog and
  Options:save options function write to ~/.snd_prefs_guile|ruby
  (so that the user's init file is not changed by the preference mechanism).
  This may seem unmotivated, but watch this space!

changed recorder-in|out-format -> recorder-in|out-data-format,
        recorder-out-type -> recorder-out-header-type
        save-macros now requires a filename (it won't write to ~/.snd unless you ask it to)

(Snd has just reached the 500,000 line mark)

Checked: gtk 2.8.3|4|5|6, FreeBSD 5.4, gsl 1.7, Ruby 1.8.3

With much help from: Anders Vinjar, Kjetil Matheussen, Mike Scholz, Marten Stromberg


===============================================================================

Snd 7.16

Marten Stromberg provided a PDF version of snd.html, but I can't decide
  where it should go.

new dialog: first half (Motif version) of a preferences dialog (Options menu item).

added cycle speed style via click, mix|track-speed-style
      analyze-ladspa as synonym for analyse-ladspa
      save/insert/mix buttons in region browser
      save-region-dialog
      --enable-threads configure switch, and first use thereof (FIR filtering)
      snd-g|xprefs.c, preferences-dialog function

snd-error is now (throw 'snd-error ...)

init file handling has become more complex: ~/.snd is still loaded if present,
  as is /etc/snd.conf, but Snd also now looks for ~/.snd_guile|ruby, and
  /etc/snd_guile|ruby.conf, and the preferences dialog and
  Options:save options function write to ~/.snd_prefs_guile|ruby
  (so that the user's init file is not changed by the preference mechanism).
  This may seem unmotivated, but watch this space!

changed recorder-in|out-format -> recorder-in|out-data-format,
        recorder-out-type -> recorder-out-header-type
        save-macros now requires a filename (it won't write to ~/.snd unless you ask it to)


Checked: gtk 2.8.3|4|5|6, FreeBSD 5.4, gsl 1.7, Ruby 1.8.3

With much help from: Anders Vinjar, Kjetil Matheussen, Mike Scholz, Marten Stromberg


===============================================================================

Snd 7.15

removed yes-or-no? with associated dialog (and snd-g|xerror.c)
        old Mac OS (8 or 9) support (old-mac-audio.c has the code), also MPW C
          (this affects CLM as well)

added clear-minibuffer
      optional as-error arg to report-in-minibuffer
      sound-file-extensions as settable list
      before-exit|close-hook
      -init startup switch to set init filename as arg
      netBSD audio support

File:Mix dialog no longer exits upon "mix" (removed keep-mix-dialog-open-upon-ok from snd-motif.scm)
File:Insert menu item and dialog added, also insert-file-dialog
read/write support OGG, Speex, and Flac files (via File:Save as)
read support for Mpeg and Midi

gtk version no longer defaults to happy button colors -- they clash with the fancy icons.
  as long as I was changing colors, I changed to an "autumnal" theme for the Motif side.

View:Files dialog completely recast:
  removed current files list, added various ways to use the selected file(s) in the other list
  previous-files-* -> view-files-* (sort, select-hook)
  removed previous-files-sort-procedure
  added sort-files-by-name|size|date|entry
  added view-files-amp|speed|amp-env|speed-style|files|selected-files
  click of file name no longer opens that file -- it just adds it to the selected files list for the dialog
  view-files-select-hook return type no longer matters, and args are: dialog file-name
  preload-directory -> add-directory-to-view-files-list
  preload-file -> add-file-to-view-files-list
  optional dialog arg to view-files-sort (local set)

added osx-10.4-snd at ccrma-ftp

_sndlib.h is now an internal header, whereas sndlib.h is intended for programs
  that use sndlib -- this is an attempt to reduce name-space collisions by
  sequestering configuration info.

checked: OSX 10.4 (gtk/motif/guile/ruby), gtk 2.7.3|4|5, gtk 2.8.0|1|2, NetBSD 2.0,
  Solaris 10 (x86 audio is broken), sbcl 0.9.3

with much help from: Orm Finnendahl, Michael Edwards, Mike Scholz, Thomas Klausner,
  Kjetil Matheussen, Petter Reinholdtsen, Rob Komar, Christophe Rhodes


===============================================================================

Snd 7.14:

Many updates from Mike Scholz and Kjetil Matheussen.

channels-combined is now the default channel-style.

find changed to find-channel to avoid collision with Scheme's srfi-1.
  default-output-type -> default-output-header-type,
  default-output-format -> default-output-data-format

output-name-hook now takes an argument, the current output file name.

removed save-options (use save-state).

added 'Extract' button to Edit|File:Save-as dialogs (to extract a channel).

added 'Reset' buttons to File:New and the raw data dialog.

added 'just-sounds' and 'play selected sound' buttons to various dialogs.
  and some labels are actually pull-down menus.

error handling much improved in various dialogs, although there's a way's
  to go still.

removed View:Error history menu item.  A Scheme/Ruby replacement would
  be trivial (snd-error-hook + string-append, add-to-menu + info-dialog).
  This menu item dates back to pre-Guile days when error handling was
  primitive; I'm currently moving toward a system where all errors are
  reported and handled in the context of the error (not via some global
  dialog).

file names and other choices are now persistent across most dialog actions.

use libfam (from fam or gamin -- file alteration monitor) in a few cases
  (more to come) -- auto-update-interval is ignored if fam is in use.  I'm
  still feeling my way around here -- if Snd hangs in fam or gamin, use
  the configuration switch --without-fam (and please tell me about it!).

removed edpos arg to make-snd->sample.

removed the possibility of saving a region via C-x w -- it just refers
  to the selection now.

folded gl-ruby.c into gl.c, xm-ruby.c into xm.c, xg-ruby.c into xg.c.
  (This was part of an attempt to use Gauche/Stklos/Chicken in place of Guile).

linear-src-channel in dsp.scm.


checked: gtk 2.6.8 and 2.7.0|1|2 (a pain), Fedora Core 4 (gcc 4.0), sbcl 0.9.2


gtk 2.7.* uses a library named Cairo for drawing and font stuff; there is
  currently a bug in this library that causes Snd to hang if you have lots
  of printout in the listener.  It also requires about 20 more libraries:

  ldd snd
        libguile.so.12 => /usr/local/lib/libguile.so.12 (0x40017000)
        libguile-ltdl.so.1 => /usr/local/lib/libguile-ltdl.so.1 (0x400a4000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x400bb000)
        libm.so.6 => /lib/tls/libm.so.6 (0x400e8000)
        libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0 (0x4010a000)
        libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0 (0x403e7000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x40467000)
        libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x40480000)
        libpangoxft-1.0.so.0 => /usr/local/lib/libpangoxft-1.0.so.0 (0x40495000)
        libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x4049c000)
        libpangox-1.0.so.0 => /usr/local/lib/libpangox-1.0.so.0 (0x404a2000)
        libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x404ae000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x404d1000)
        libcairo.so.1 => /usr/local/lib/libcairo.so.1 (0x40522000)
        libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x40549000)
        libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x4057d000)
        libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x405b0000)
        libdl.so.2 => /lib/libdl.so.2 (0x405b5000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x405b8000)
        libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x40636000)
        libpixman.so.1 => /usr/local/lib/libpixman.so.1 (0x4065b000)
        libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x4066f000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40677000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40757000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0x40765000)
        libglitz.so.1 => /usr/local/lib/libglitz.so.1 (0x40788000)
        libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x407ad000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x40823000)
        libgtkglext-x11-1.0.so.0 => /usr/local/lib/libgtkglext-x11-1.0.so.0 (0x40a1a000)
        libgdkglext-x11-1.0.so.0 => /usr/local/lib/libgdkglext-x11-1.0.so.0 (0x40a1f000)
        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40a70000)
        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40a86000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40ad8000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40ae1000)
        libgamin-1.so.0 => /usr/local/lib/libgamin-1.so.0 (0x40af8000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x40b00000)
        libXft.so.2 => /usr/local/lib/libXft.so.2 (0x40b04000)
        libXfixes.so.0 => /usr/local/lib/libXfixes.so.0 (0x40b15000)
        libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x40b1a000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40b24000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
        libexpat.so.0 => /usr/lib/libexpat.so.0 (0x40b32000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40b52000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40c05000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40c0e000)

  and that's only the gtk version!


with much help from: Mike Scholz, Kjetil Matheussen, Rob Komar,
   Anders Vinjar, Phil Reynolds, Jonas Berlin, Chris Chafe,
   Tim Blechmann, Fernando Lopez-Lezcano


(On tap: replace the "current files" list in the View:Files dialog with
  a panel of operations applicable to the "previous files" list.  Add
  a preferences dialog, and some global way to get at all the filters.
  Add fam support to all the directory lists.  Insert/Insert-selection
  main menus; perhaps Rename/Append.  Key-binding sets to mimic other
  sound editors.  Much smarter completion choice presentation.  Built-in
  support for OGG, Flac, Speex, Mpeg, Midi etc (if the relevant programs are
  accessible during configuration).  Multiple copies of all dialogs (this
  works now for some dialogs).  Region browser save-as/mix/insert choices.
  Get rid of the yes-or-no dialog.)

===============================================================================

Snd 7.14:

Many updates from Mike Scholz and Kjetil Matheussen.

channels-combined is now the default channel-style.

find changed to find-channel to avoid collision with Scheme's srfi-1.
  default-output-type -> default-output-header-type,
  default-output-format -> default-output-data-format

output-name-hook now takes an argument, the current output file name.

removed save-options (use save-state).

added 'Extract' button to Edit|File:Save-as dialogs (to extract a channel).

added 'Reset' buttons to File:New and the raw data dialog.

added 'just-sounds' and 'play selected sound' buttons to various dialogs.
  and some labels are actually pull-down menus.

error handling much improved in various dialogs, although there's a way's
  to go still.

removed View:Error history menu item.  A Scheme/Ruby replacement would
  be trivial (snd-error-hook + string-append, add-to-menu + info-dialog).
  This menu item dates back to pre-Guile days when error handling was
  primitive; I'm currently moving toward a system where all errors are
  reported and handled in the context of the error (not via some global
  dialog).

file names and other choices are now persistent across most dialog actions.

use libfam (from fam or gamin -- file alteration monitor) in a few cases
  (more to come) -- auto-update-interval is ignored if fam is in use.  I'm
  still feeling my way around here -- if Snd hangs in fam or gamin, use
  the configuration switch --without-fam (and please tell me about it!).

removed edpos arg to make-snd->sample.

removed the possibility of saving a region via C-x w -- it just saves
  the selection now.

folded gl-ruby.c into gl.c, xm-ruby.c into xm.c, xg-ruby.c into xg.c.
  (This was part of an attempt to use Gauche/Stklos/Chicken in place of Guile).

linear-src-channel in dsp.scm.


checked: gtk 2.6.8 and 2.7.0|1|2 (a pain), Fedora Core 4 (gcc 4.0), sbcl 0.9.2


gtk 2.7.* uses a library named Cairo for drawing and font stuff; there is
  currently a bug in this library that causes Snd to hang if you have lots
  of printout in the listener.  It also requires about 20 more libraries:

  ldd snd
        libguile.so.12 => /usr/local/lib/libguile.so.12 (0x40017000)
        libguile-ltdl.so.1 => /usr/local/lib/libguile-ltdl.so.1 (0x400a4000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x400bb000)
        libm.so.6 => /lib/tls/libm.so.6 (0x400e8000)
        libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0 (0x4010a000)
        libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0 (0x403e7000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x40467000)
        libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x40480000)
        libpangoxft-1.0.so.0 => /usr/local/lib/libpangoxft-1.0.so.0 (0x40495000)
        libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x4049c000)
        libpangox-1.0.so.0 => /usr/local/lib/libpangox-1.0.so.0 (0x404a2000)
        libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x404ae000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x404d1000)
        libcairo.so.1 => /usr/local/lib/libcairo.so.1 (0x40522000)
        libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x40549000)
        libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x4057d000)
        libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x405b0000)
        libdl.so.2 => /lib/libdl.so.2 (0x405b5000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x405b8000)
        libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x40636000)
        libpixman.so.1 => /usr/local/lib/libpixman.so.1 (0x4065b000)
        libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x4066f000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40677000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40757000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0x40765000)
        libglitz.so.1 => /usr/local/lib/libglitz.so.1 (0x40788000)
        libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x407ad000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x40823000)
        libgtkglext-x11-1.0.so.0 => /usr/local/lib/libgtkglext-x11-1.0.so.0 (0x40a1a000)
        libgdkglext-x11-1.0.so.0 => /usr/local/lib/libgdkglext-x11-1.0.so.0 (0x40a1f000)
        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40a70000)
        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40a86000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40ad8000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40ae1000)
        libgamin-1.so.0 => /usr/local/lib/libgamin-1.so.0 (0x40af8000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x40b00000)
        libXft.so.2 => /usr/local/lib/libXft.so.2 (0x40b04000)
        libXfixes.so.0 => /usr/local/lib/libXfixes.so.0 (0x40b15000)
        libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x40b1a000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40b24000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
        libexpat.so.0 => /usr/lib/libexpat.so.0 (0x40b32000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40b52000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40c05000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40c0e000)

  and that's only the gtk version!


with much help from: Mike Scholz, Kjetil Matheussen, Rob Komar,
   Anders Vinjar, Phil Reynolds, Jonas Berlin, Chris Chafe,
   Tim Blechmann, Fernando Lopez-Lezcano


(On tap: replace the "current files" list in the View:Files dialog with
  a panel of operations applicable to the "previous files" list.  Add
  a preferences dialog, and some global way to get at all the filters.
  Add fam support to all the directory lists.  Insert/Insert-selection
  main menus; perhaps Rename/Append.  Key-binding sets to mimic other
  sound editors.  Much smarter completion choice presentation.  Built-in
  support for OGG, Flac, Speex, Mpeg, Midi etc (if the relevant programs are
  accessible during configuration).  Multiple copies of all dialogs (this
  works now for some).  Region browser save-as/mix/insert choices. Get
  rid of the yes-or-no dialog.  Etc... -- as always, ideas are welcome --
  I've somehow become interested in user-interface stuff -- probably just
  a passing fit)

===============================================================================

Snd 7.13

many improvements thanks to Mike Scholz and Kjetil Matheussen, including:
  maraca.rb, play.rb, prc95.rb, singer.rb, zip.rb, and extensive additions to snd-test.rb
  rt.tex

vct* and vct+

region-|selection-|maxamp-position

before-save-as-hook

windowed-maxamp generator (clm.html, dsp.scm)

added comment arg to save-sound-as
added y-label to axis-info list

beats-per-measure and x-axis-style x-axis-in-measures

harmonicizer -- this splits each portion of a spectrum into a set of harmonics (formant-bank + polynomial)
  it is similar in spirit to ssb-bank (formant-bank + ssbs -- split spectrum, operate on each piece, reassemble)

create-audit-dialog (snd-motif.scm) for hearing test

show-axes menu choice (View:Axes)


CLM: vowel.ins thanks to Michelle Daniels and Oded Ben-Tal.


checked: sbcl 0.9.0|1, Mesa 6.2.1 (openGL)


with much help from: Michelle Daniels, Oded Ben-Tal, Mike Scholz, Fernando Lopez-Lezcano,
	Kjetil Matheussen, Richard Rauch, Jelena Zoran, sting, Jonas Berlin, Daniel Zysman,
        Cris Ewing

===============================================================================

Snd 7.13

many improvements thanks to Mike Scholz and Kjetil Matheussen, including:
  maraca.rb, play.rb, prc95.rb, singer.rb, and zip.rb
  rt.tex

vct* and vct+

region-|selection-|maxamp-position

before-save-as-hook

windowed-maxamp generator (clm.html, dsp.scm)

added comment arg to save-sound-as
added y-label to axis-info list

beats-per-measure and x-axis-style x-axis-in-measures

harmonicizer -- this splits each portion of a spectrum into a set of harmonics (formant-bank + polynomial)
  it is similar in spirit to ssb-bank (formant-bank + ssbs -- split spectrum, operate on each piece, reassemble)

create-audit-dialog (snd-motif.scm) for hearing test

show-axes menu choice (View:Axes)


CLM: vowel.ins thanks to Michelle Daniels and Oded Ben-Tal.


checked: sbcl 0.9.0|1, Mesa 6.2.1 (openGL)


with much help from: Michelle Daniels, Oded Ben-Tal, Mike Scholz, Fernando Lopez-Lezcano,
	Kjetil Matheussen, Richard Rauch, Jelena Zoran, sting, Jonas Berlin, Daniel Zysman,
        Cris Ewing

===============================================================================

Snd 7.12:

marks.rb, draw.rb, poly.rb, musglyphs.rb, and many other improvements thanks to Mike Scholz.

rt-examples.scm and much else thanks to Kjetil Matheussen.

mixer.scm with various matrix/vector functions (determinant, inverse,
   solve simultaneous linear equations, etc) as applied to mixers/frames.

   mixer-scale is now embedded in mixer* (old name is in snd7.scm), and
   frame*, frame+, mixer*, and mixer+ take either generator or float args.

   changed interpretation of frame->frame arguments.  To get the old style,
      you need to reverse the first two args -- the new style reflects the
      actual matrix multiplication order, which I think makes more sense.

poly.scm with various polynomial-related functions.

added before-save-state-hook and y-axis-label.

moved load-font from C to snd-motif.scm and snd-gtk.scm.

removed xen->sample generator.

changed mus-error-to-string to mus-error-type->string.
    moved mus-data-format->string and mus-header-type->string from ws.scm to C.

changed moog.scm and prc95.scm to use def-clm-struct, rather than a list.
    zip.scm (zipper) changed (takes env args now, not thunks, uses def-clm-struct, etc).

added invert-filter and volterra-filter in dsp.scm (also src-duration, for convenience)


CLM: removed bessel.lisp -- it was very much out of date, and much of it is
       now available directly from libm (see note about bes-j0 etc in 7.11)

     added size arg (buffer size) to make-readin, make-file->sample, make-file->frame

     fullmix.ins defaults changed.


checked: gtk 2.6.5|6|7


with much help from: Mike Scholz, Kjetil Matheussen, Rick Taube, Michael Klingbeil,
    Anders Vinjar, Fernando Lopez-Lezcano, Bill Sack, Chandrasekhar Ramakrishnan,
    Oded Ben-Tal, Russell Aspinwall, Orm Finnendahl


===============================================================================

Snd 7.11

  Mike Scholz greatly expanded and improved the Ruby stuff in Snd (not to mention
    many other general improvements): snd_test.rb replaced by snd-test.rb,
    new files mix.rb, dsp.rb, pvoc.rb -- an amazing addition to Snd!

  Kjetil Matheussen implemented real-time support!  The new files are
    oo.scm, rt-compiler.scm, and rt-engine.scm -- another amazing addition!

  delay and move-locsig bugfixes thanks to Fernando.

  changed libxm to libxg in gtk case, also xm-version to xg-version
    added --with-static-xg configure option (same as --with-static-xm)

  added the -export-dynamic loader switch if using Gnu's ld and dlfcn

  band limited sawtooth in dsp.scm (Stilson/Smith/Kritov)

  bes-j0|1|n, bes-y0|1|n, bes-i0, erf|c, lgamma (etc from libm)

  mus-interpolate

  env-channel-with-base

  Ruby side of edit-list->function

  zoom-focus-style can be a function

  polyshape generator (polynomial + oscil)

  mus-chebyshev-first|second-kind (as "kind" arg to partials->polynomial)

  partials->waveshape no longer normalizes the partials (to parallel partials->polynomial)

  gc-off and gc-on are no-ops now in Guile -- the underlying support was
    removed in the CVS Guile


in CMN: Anders Vinjar fixed a bug in display-crescendo

        removed obsolete make-cmn.cl


in CLM: Rick fixed a bug in play

        run* cleaned-up finally

        ffi cleaned-up (removed various obsolete linkages)

        removed ACL 4.n support

        sbcl can now handle multi-instrument files and no longer uses the *.sbcl kludge


with much help from: Fernando Lopez-Lezcano, Mike Scholz, Kjetil Matheussen,
  Rick Taube, Anders Vinjar, Kyle Markley, Steve Bankowitz

checked: Intel C 8.1, gtk 2.6.3|4, Sun Workshop C (via S Bankowitz)

===============================================================================

Snd 7.10:

grani.ins translated to Scheme and Ruby by Mike Scholz!

gfm and sndins improvements (see gfm/README) and many other updates thanks to Mike Scholz

CLM: scanned.ins and circular-scanned.ins updates thanks to Juan Reyes
     added one-cut.ins thanks to Fernando

eval-c.scm improvements thanks to Kjetil S. Matheussen


added: colormap?
       variable-graph?
       transform?, delete-transform (these refer to add-transform)
       free-player
       scentroid (B Battey/CLM) in dsp.scm, and sndwarp (sndwarp.scm)
       new CLM generator method: mus-reset

changed: transform-hook to after-transform-hook
         send-netscape to send-mozilla

	 memo-sound to *snd-opened-sound* (CLM also)
         snd-load-files to *snd-loaded-files*
         snd-remember-paths to *snd-remember-paths* (default value is now #t)
           (These changes [try to] make it more obvious that these are variables, not functions)

removed: useless edpos arg to controls->channel
         support for Motif 1.n and Lesstif

moved: sndsine.c to documentation
       makesnd.* into makefile.in


with much help from: Fernando Lopez-Lezcano, Matt Wright, Mike Scholz, G Vincent Castellano,
  Michael Uplawski, Juan Reyes, Bill Sack, Kjetil S. Matheussen, Michael Edwards, Ralf Mattes,
  N J Cross, Jeff Root


checked: gtk 2.6.1|2, gsl 1.6, sbcl 0.8.19

===============================================================================

Snd 7.9

bugfixes/improvements thanks to Kjetil Matheussen, including one
  in the granulate generator that affected the "jitter" argument.
  also eval-c.scm.

added:  tools/snd.supp -- Valgrind suppressions file for Snd
          (valgrind turned up numerous minor bugs)
	quick.html
        mark-tag-width|height
        after-save-as-hook, replacing emacs-style-save-as (see snd7.scm)
        more virtual ops (and removed the "xen-channel" fallback option --
          this affects the next-to-last optional arg to ptree-channel)

xg (gtk) type checking is much fussier now.

CMN: woodblock glyph and bugfixes from Anders Vinjar.

checked: Guile 1.6.6, gtk 2.5.6 and 2.6.0, sbcl 0.8.17 and 0.8.18

with much help from: Eric Sandall, Julian Stecklina,  Kjetil S. Matheussen,
  Bruce Beach, Roman Kosellek, Tim Blechmann, Gary Scavone, Michael Uplawski,
  Anders Vinjar, Russell Aspinwall.

===============================================================================

Snd 7.8:

new version of gfm package (sndlib/gfm) thanks to Mike Scholz,
  now included (along with sndins) in the Snd tarball.
  also many other improvements

various bugfixes and improvements thanks to Kjetil S. Matheussen

added:
  recorder-in-chans
  vct->string
  normalize-channel
  controls->channel
  sound-data->sound-data (for oscope)
  rms-envelope in env.scm (based on Bret Battey's rmsenv.ins)
  edit history pane popup menu (popup.scm and gtk-popup.scm) (unfinished)

  oscope.scm: oscilloscope dialog

removed:
  track-id arg to mix-selection
  edpos arg to play-selection
  mus_audio_save|restore (audio.c) and Scheme/Ruby correlates
  the dumb buttons at the bottom of the controls (Apply etc)
    these are now in various popup menus

moved scale-sound-by and scale-sound-to to snd7.scm.

changed handling of recorder-out-chans -- it now sets the max out chans
  displayed in the recorder dialog, as well as the default output file chans.

checked: gtk 2.5.4|5, sbcl 0.8.16, ruby 1.8.2-preview3

with much help from: Mike Scholz, Heinrich Gudenus, Kjetil S. Matheussen,
  Dave Phillips, Michal Seta, Thomas F. Bechteler, Frank Barknecht, Peter Lutek,
  Tim Orford, Juan Reyes


===============================================================================

Snd 7.7

new version of sndins and other bugfixes thanks to Mike Scholz

in clm: autoc.ins, scentroid.ins, rmsenv.ins, and sndwarp.ins thanks to Bret Battey

clm: configuration and signum bugfixes thanks to Anders Vinjar


added: smart-line-cursor in draw.scm
	  (a line cursor that ducks under the top right thumbnail graph)

       vct|channel|spectral-polynomial (dsp.scm)

       create-ssb-dialog in snd-motif.scm

       vct-reverse! (mostly to experiment with fancy granulate edit funcs)

       log-freq-start (with more transform dialog widgetry and axis improvements)

       show-sonogram-cursor (tracking cursor in sonogram)

       do? (examp.scm -- do that can be interrupted and continued)

       grid-density (controls axis tick spacing)

       edit-list->function (1st step toward a "sound spreadsheet")


removed: mus-inspect, buffer generator.
           (mus-inspect duplicates the functionality of mus-describe, and given
	   a decent debbuger, the extra info it provides is unneeded).

         vct-convolve! (see snd7.scm -- was same as convolution function)

         vct->samples and samples->vct (see snd7.scm)
	   (These were redundant given vct->channel->vct and inconsistent with others)

         list and vector return value choices from map-chan and map-channel (see snd7.scm).
           float vector as possible arg to formant-bank, fft, or scale-* (use vct) (see snd7.scm).
           list of vectors as possible arg to graph (use list of vcts)
           mus-audio-mixer-read|write vector arg is now a vct
           (I'm trying to reduce the use of vectors as much as possible)

         oscil-bank, mus-bank (see snd7.scm)

         support for gtkglext 0.1 through 0.4


changed transform-samples->vct to transform->vct, region-samples->vct to region->vct,
	transform-samples-size to transform-frames. (Old forms are in snd7.scm).

checked: gtk 2.5.2|3, Mesa 6.1, sbcl 0.8.14|5

with much help from: Michael Klingbeil, Anthony Kozar, Bret Battey, Anders Vinjar,
     Mike Scholz, Paul Winkler, Marv Smoak


(Snd has lumbered over the 400,000 line mark -- 250000 C, 110000 Scheme,
30000 Ruby, and a few thousand of m4, lisp, emacs-lisp etc)

===============================================================================

Snd 7.6

Most of the work in this period went into clm-3, but there were some
changes to Snd:

  numerous improvements and bugfixes from Kjetil Matheussen, including the
    snd-ls package.

  added mixer-scale, mixer+, make-scalar-mixer, continue-frame->file
    run-safety, clm-table-size (filling in a few CLM gaps, making the
    Scheme version of with-sound the same as the CL version)

  new run-time function args to phase-vocoder and granulate (and run support)

  channel-distance in dsp.scm

  configure switches:
    --with-midi            include midi.o (sndlib midi module), default: no
    --with-hobbit          include arity check support for hobbit, default: no
    --with-builtin-gtkrc   include built-in fallback gtkrc, default: yes

  out-chan argument to add-player so that channel data can be sent to any audio channel
    (also play, play-and-wait, play-channel, play-mono-as-stereo example in extsnd.html)
    added players (a list of currently active players)

  new tools directory with various Snd development scripts

  forward/back buttons on the help dialog

  removed built-in Hadamard transform

Checked: Fedora Core 2, gsl 1.5, gtk 2.4.4/2.5.0/2.5.1, Ruby 1.8.2, sbcl 0.8.12/0.8.13
  also many changes reflecting those in recent versions of Guile

With much help from: Cris Ewing, Kjetil S. Matheussen, Mike Scholz,
  Anders Vinjar, Robert Jonsson, Guillaume Germain, Oded Ben Tal


===============================================================================

Snd 7.5

snd-hobbit.scm from Kjetil -- support for the Hobbit Scheme compiler in Snd!
  gtk support in fft-menu.scm (and many other improvements) thanks to Kjetil

Steve Sykes got Snd to run in Cygwin/Windows (with Guile and Motif)!

configure switch --with-doc-dir (for gentoo)
  also new variables GUILE_CONFIG_name and GUILE_name (for OSX/fink)

The Snd/sndlib/CLM build process now requires configure -> config.h.
  for the case of CLM on the old Mac (OS9 etc),  it might work to just
    make an empty file named config.h
  in the CL CLM, you can force configure to run with the *feature* #+reconfigure

removed stop-playing-region-hook, stop-playing-channel-hook, before-apply-hook
  added stop-function arg to play, play-and-wait, play-selection, play-region, add-player
  cursor-update-interval (tracking cursor redraw rate if it is tracking the DAC)
  cursor-location-offset (tracking cursor position fixup)

added add-colormap, delete-colormap, colormap-size, colormap-name, changed colormap-ref
  removed 2 previously built-in colormaps, added rainbow colormap
  default colormap is 0 (black and white)
  new error: 'no-such-colormap

ssb-am generator in CLM
  ssb-bank (dsp.scm) for pitch/duration changes, ssb-bank-env to add freq env
  ssb-fm
  distribution arg to make-rand, make-rand-interp
  removed mus-x*|y*|a*|b*, replaced by mus-x|ycoeff

periodogram in dsp.scm
  edot-product (clm.c) (for DFT-related stuff like stretch-sound-via-dft)
  read-ascii (examp.scm) (raw text as sound file data format)
  complex number support in xen (xen.h) (in Guile -- I don't think Ruby has complex numbers)

checked: cmucl 19a, gtk 2.4.2|3, sbcl 0.8.11

With much help from: Kjetil S. Matheussen, Anders Vinjar, Michael Edwards,
  Stephen Sykes, Cris Ewing, Meino Cramer, Heinrich Gudenus

