Snd 24.3: s7: format now always returns a string (where it used to return #f it now returns "") sam.c: bugfixes and improvements thanks to David Jaffe checked: sbcl 2.4.3 Thanks!: Michael Edwards, Norman Gray, David Jaffe =============================================================================== Snd 24.2 mostly work on optimizations in s7 checked: sbcl 2.4.2 Thanks!: James Hearon =============================================================================== Snd 24.1 More optimizations, minor bug fixes, and rewrites. checked: sbcl 2.4.1 Thanks!: Norman Gray, Andreas Enge =============================================================================== Snd 23.9: s7: added optional let argument to immutable? and immutable! finally added error checks to the tree-* functions see lint.scm for the previous versions s7_make_c_pointer_wrapper_with_type ' (apostrophe) now is (#_quote ...) and similarly for the quasiquote helpers, apply-values, and list-values. Thanks!: Norman Gray =============================================================================== Snd 23.8: s7: error handling, reader-cond, various (*s7* 'max-*) checks checked: sbcl 2.3.9 =============================================================================== Snd 23.6: various small improvements and bugfixes in Snd and s7. checked: sbcl 2.3.7 Thanks!: Kenneth Flak =============================================================================== Snd 23.6: various small improvements and bugfixes in Snd and s7. checked: sbcl 2.3.7 Thanks!: Kenneth Flak =============================================================================== Snd 23.5 s7: various small bugs and optimizations. checked: sbcl 2.3.5|6 Thanks!: Anders Vinjar, Todd Ingalls, johnm, Kjetil Matheussen =============================================================================== Snd 23.3 s7: autoload bugfix checked: sbcl 2.3.3 Thanks!: john M693, Todd Ingalls =============================================================================== Snd 23.2 the usual minor bugfixes and whatnot. checked: sbcl 2.3.2 Thanks!: Woody Douglass =============================================================================== Snd 23.2 the usual minor bugfixes and whatnot. checked: sbcl 2.3.2 Thanks!: Woody Douglass =============================================================================== Snd 23.1: clm: Michael Edwards fixed a bug in scentroid.ins. s7: David St-Hilaire integrated s7 into tic-80. checked: FC 37, sbcl 2.3.1 Thanks!: David St-Hilaire, Michael Edwards =============================================================================== Snd 23.0: In Snd, drag and drop can handle "percent-encoded" file names, thanks to Tito Latini. In clm, Orm Finnendahl got Juan Pampin's ATS system running: https://github.com/ormf/cl-ats. In s7: reverted s7.h to previous version; use tools/s7.def instead. checked: Ubuntu 22.10 (gcc 12.2.0), sbcl 2.2.11|2.3.0 Thanks!: Rudolf Adamkovic, Tito Latini, Iohannes zmoelnig, jingkaimori =============================================================================== Snd 22.9 s7: added support for NaN "payloads": new functions nan and nan-payload to create such a NaN or get its payload, read-time support for +nan.123 (123 is the payload), and so on. S7_EXPORT for MSVC thanks to vladimir florentino checked: sbcl 2.2.10 Thanks!: Hyogeol Lee, vladimir florentino =============================================================================== Snd 22.8 s7: s7_number_to_real_with_location. s7_wrong_type_error. s7_make_string_wrapper_with_length. s7_make_semipermanent_string. CL-style doc strings, (symbol...) settable. checked: sbcl 2.2.9 =============================================================================== Snd 22.8 s7: s7_number_to_real_with_location. s7_wrong_type_error. s7_make_string_wrapper_with_length. s7_make_semipermanent_string. CL-style doc strings, (symbol...) settable. checked: sbcl 2.2.9 =============================================================================== Snd 22.7 s7: (*s7* 'number-separator) checked: sbcl 2.2.8 Thanks!: Tito Latini, IOhannes Zmoelnig =============================================================================== Snd 22.5: s7: add vector-type to return or set the type checking part of the vector element setter, and similarly hash-table-key-typer and hash-table-value-typer checked: sbcl 2.2.5|6 new ghostscript is unhappy with cmn eps files; version 9.55 is unhappy, 9.52 is happy. I think this is caused by negative origin bounding boxes which have worked fine for 30 years. Thanks!: Woody Douglass, Michael Mees, Elijah Stone =============================================================================== Snd 22.5: s7: add vector-type to return or set the type checking part of the vector element setter, and similarly hash-table-key-typer and hash-table-value-typer checked: sbcl 2.2.5|6 new ghostscript is unhappy with cmn eps files; version 9.55 is unhappy, 9.52 is happy. I think this is caused by negative origin bounding boxes which have worked fine for 30 years. Thanks!: Woody Douglass, Michael Mees, Elijah Stone =============================================================================== Snd 22.3: s7_eval_with_location, thanks to Woody Douglass. s7_apply_n* removed (now in xen.c|h) s7_is_multiple_value checked: notcurses 3.0.8 Thanks!: Daniel Hensel, Woody Douglass, johnm =============================================================================== Snd 22.3: s7_eval_with_location, thanks to Woody Douglass. s7_apply_n* removed (now in xen.c|h) s7_is_multiple_value checked: notcurses 3.0.8 Thanks!: Daniel Hensel, Woody Douglass, johnm =============================================================================== Snd 22.2: moved s7_apply_* from s7.h to xen.h if DISABLE_DEPRECATED. checked: sbcl 2.2.1|2, notcurses 3.0.6|7 Thanks!: Mike Scholz =============================================================================== Snd 22.1: no major changes checked: notcurses 3.0.2|3|4|5, Ubuntu 22.04 Thanks!: Christos Vagias, Iain Duncan, Rudolf Adamkovic, Woody Douglass =============================================================================== Snd 22.0: The spectrogram now notices dont-normalize. checked: notcurses 2.4.9|3.0.0 (the latter is needed for nrepl.scm), sbcl 2.1.11 Thanks!: Tito Latini, Chris Chafe, Kjetil Matheussen, Woody Douglass, Christos Vagias =============================================================================== Snd 21.9 s7: mainly work on error handling checked: Ubuntu 21.10, notcurses 2.4.5|7|8, sbcl 2.1.10, Fedora 35 Thanks!: Christos Vagias, Woody Douglass =============================================================================== Snd 21.8 sndlib: Kjetil updated the Jack support in audio.c. s7: now using __has_include if it is defined (gcc has it) this means mus-config.h is optional in gcc/clang (you don't need an empty file). s7_make_byte_vector and friends (s7.h) added (*s7* 'profile-prefix), a symbol or #f profile-info now includes the file and line-number of the function and the function-local value of (*s7* 'profile-prefix), if any. added support for tcc (Tiny C compiler) -- no dynamic loading yet checked: notcurses 2.4.1|3, sbcl 2.1.9 due to a blizzard of changes in notcurses, nrepl currently needs notcurses version 2.4.3 or later -- sorry for the inconvenience! Thanks!: Iain Duncan, Brad Christensen, Christos Vagias, Woody Douglass, James Hearon, Juan Reyes, Kjetil Matheussen =============================================================================== Snd 21.7 s7: added (*s7* 'muffle-warnings?) and s7_output_string bool s7_flush_output_port (was void) checked: notcurses 2.3.13, sbcl 2.1.8 notcurses 2.3.17 behaves very strangely in row 0, so I've covered row 0 with a header box. It's probably some new notcurses configuration option. Thanks!: Brad Christensen, Woody Douglass, JGM, Anders Vinjar =============================================================================== Snd 21.6: s7.h: added s7_is_random_state, s7_make_normal_vector, s7_array_to_list s7.c: I changed the default heap size to 64k (half its previous size) -- my timing tests and benchmarks seem to indicate that this is usually faster (perhaps cache-related?). Pushing it down to 32k doesn't affect runtimes very much. To get the old size back, (set! (*s7* 'heap-size) 128000). Checked: sbcl 2.1.7 Thanks!: Daniel Hensel, Brad Christensen, James Hearon, Christos Vagias, Tito Latini, Elijah Stone, Kjetil Matheussen, Woody Douglass =============================================================================== Snd 21.5: mostly s7 work -- bugs, optimizations, etc checked: sbcl 2.1.5|6 Thanks!: Daniel Hensel, Brad Christensen =============================================================================== Snd 21.4: nrepl: notcurses 2.1.6 or later is required now (notcurses got split into 2 libraries, notcurses-core and notcurses, and the APIs are not compatible. notcurses-core is much smaller, so I'm using it). checked: notcurses 2.3.0, Fedora 34, sbcl 2.1.4, Ubuntu 21.04 Thanks!: chai xiaoxiang, Kjetil Matheussen, Nick Black =============================================================================== Snd 21.2: mostly optimizations and bugfixes in s7 checked: notcurses 2.2.2 =============================================================================== 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 #_ is the initial (built-in, startup) value of *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 #_ is the initial (built-in, startup) value of *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 #_ is the initial (built-in, startup) value of *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 #_ is the initial (built-in, startup) value of *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 #_ is the initial (built-in, startup) value of *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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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-.scm|fs|rb" where 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