Commit e5328e59 authored by Alessio Treglia's avatar Alessio Treglia

Imported Upstream version 12.0

parent 36cf8384
Snd change log
18-Mar: Snd 12.0.
18-Mar: removed time-graph-hook; replaced by combined-data-color.
10-Mar: space=play or pause, tracking-cursor stuff changed.
4-Mar: 'src' button in Save-as dialogs to do automatic sampling rate conversion.
1-Mar: delete-selection-and-smooth, delete-samples-and-smooth.
23-Feb: sync-style variable: sync-none, sync-all, or sync-by-sound (the new default).
Options:Controls menu item, and Edit:Unselect
show-selection and unselect-all.
show-full-duration, initial-beg, initial-dur, ask-about-unsaved-edits.
with-toolbar, with-tooltips, remember-sound-state, with-smpte-label.
new built-in toolbars, removed toolbar.scm and panic.scm.
removed Snd.gtkrc, Snd.ad, and the totally obsolete X resources stuff.
The built-in popup menus are now context sensitive, and the files popup.scm
and gtk-popup.scm have been removed.
with-menu-icons (Gtk only).
play-arrow-size
12-Feb: Snd 11.13.
7-Jan: Snd 11.12.
2011 ----------------------------------------------------------------
29-Nov: Snd 11.11.
5-Nov: add|delete-watchers removed, replaced by effects-hook.
25-Oct: Snd 11.10.
22-Sep: def-clm-struct is now just a synonym for defgenerator.
19-Sep: removed snd7.scm and snd8.scm.
......
Snd 11.10
Snd 12.0
Mike made innumerable improvements in the scripts.
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)
removed snd7.scm and snd8.scm.
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.
defgenerator replaces def-clm-struct.
tracking-cursor-style defaults to cursor-line.
cursor-follows-play moved to snd11.scm.
with-tracking-cursor is now a global (not sound-local).
deprecated verbose-cursor (use with-verbose-cursor).
removed c-g! function; it can be replaced by stop-playing.
removed c-g? in Scheme -- it is superfluous.
added 'gtk3 or 'gtk2 to *features*.
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.
s7: added setters for current-input-port, current-output-port,
and current-error-port.
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.
*stdin*, *stdout*, *stderr* as the default IO ports
(rather than nil which is ambiguous).
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.
removed special variable (dynamic binding) support (it gets
in the way of tail recursion).
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).
s7_call_with_location to improve error handling.
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.
s7 is about 10% faster in this version -- there are timings
at the end of s7.c and snd-test.scm.
remember-sound-state in extensions has been moved to C (old scheme code is in snd11.scm).
it now reads/writes a file named "remembered-<soundfile-name>.scm|fs|rb" where
<soundfile-name> is the current sound's file name.
checked: autoconf 2.68, sbcl 1.0.43, gtk 2.91.0|1, gmp 5.0.1
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.
Thanks!: Mike Scholz
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.
......@@ -4,11 +4,11 @@ Snd is a sound editor. It currently runs on nearly all
Unix-based systems, including Mac OSX and Cygwin.
To build Snd, get the sources from
ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-11.tar.gz
ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-12.tar.gz
gzip -d snd-11.tar.gz
tar xf snd-11.tar
cd snd-11
gzip -d snd-12.tar.gz
tar xf snd-12.tar
cd snd-12
./configure
make
make install
......@@ -104,8 +104,7 @@ If the configure/make process fails, please send me
(bil@ccrma.stanford.edu) the files mus-config.h, config.log, and makefile,
created (or updated) by configure.
Snd comes with s7, but
if you insist on building Snd without any extension
Snd comes with s7, but if you insist on building Snd without any extension
language, you'll find that it's severely limited in what it can do.
Snd can also be built without any graphics toolkit. Without either the GUI
or an extension language, however, there's nothing it can do.
......@@ -119,13 +118,13 @@ are different enough that gl.c can be a pain to build).
Version info:
if Gtk, then Gtk+ 2.9.0 or later and Cairo 1.6.4 or later
if Gtk, then Gtk+ 2.12 or later and Cairo 1.6.4 or later
if Motif, then Motif 2.n but not Lesstif
in Linux, if ALSA, then ALSA 1.0 or later (or any version of OSS)
in Linux, if ALSA, then ALSA 1.0 or later
if Ruby, Ruby 1.8.0 or later.
if Forth, any version
if s7, any version
if GSL, version 0.8 or later
if GSL, version 1.0 or later
if gamin, version 0.1.0 or later
......@@ -220,7 +219,7 @@ Plus many other contributions from
In terms of number of lines, the languages used in Snd/Sndlib are:
C, Scheme, Ruby, Forth, m4, Emacs Lisp, javascript,
Fortran, expect, and postscript (altogether about 700,000 lines).
Fortran, and postscript (altogether about 700,000 lines).
----------------------------------------------------------------
......@@ -267,7 +266,7 @@ CCRMA:
http://ccrma-mail.stanford.edu/mailman/listinfo/planetccrma
Snd:
ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-11.tar.gz
ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-12.tar.gz
http://ccrma.stanford.edu/software/snd/
http://sourceforge.net/projects/snd/
http://www.notam02.no/arkiv/doc/snd-rt/
......@@ -470,7 +469,7 @@ On 64-bit machines, use motif 2.3.2 or later.
---- Gtk+: ----
Only Gtk 2.9 or later is supported.
Only Gtk 2.10 or later is supported.
If you get an error like:
......@@ -487,6 +486,11 @@ In some cases, if you installed gtk from an RPM file, you
also need to install gtk-devel.
Gtk is changing rapidly these days, moving toward Gtk 3. Snd is struggling
to keep pace, but expect trouble!
---- Mac OSX: ----
......@@ -659,6 +663,5 @@ After running configure, add
#define HAVE_RB_ERRINFO 1
#define HAVE_RB_GET_LOAD_PATH 1
and also change HAVE_VSNPRINTF to 0 -- Ruby's version of vsnprintf segfaults
when passed %lld and 64-bit ints.
\ No newline at end of file
! Snd app-defaults -- these defaults are already taken care of in Snd,
! so this file is redundant unless something is changed.
! Actually, since I forget this file even exists, it's best not to use it.
! The .Xdefaults form would prefix each of these with "snd".
*highlightcolor: ivory1
*basiccolor: ivory2
*positioncolor: ivory3
*zoomcolor: ivory4
*listenercolor: AliceBlue
*listenertextcolor: black
*cursorcolor: red
*selectioncolor: lightsteelblue1
*mixcolor: darkgray
*textfocuscolor: white
*redcolor: red
*greencolor: green2
*whitecolor: white
*blackcolor: black
*lightbluecolor: lightsteelblue1
*lighterbluecolor: AliceBlue
*yellowcolor: yellow
*envedwaveformcolor: blue
*filterwaveformcolor: blue
*graphcolor: white
*selectedgraphcolor: white
*datacolor: black
*selecteddatacolor: black
*markcolor: red
*sashcolor: lightgreen
*pushedbuttoncolor: lightsteelblue1
*helpbuttoncolor: ivory1
*quitbuttoncolor: ivory1
*resetbuttoncolor: ivory1
*doitbuttoncolor: ivory1
*doitagainbuttoncolor: ivory1
*axisLabelFont: -*-times-medium-r-*-*-18-*-*-*-*-*-iso8859-1
*axisNumbersFont: 9x15
*fontList: 9x15
*autoResize: 1
*horizontalPanes: 0
*zoomSliderWidth: 10
*positionSliderWidth: 13
*toggleSize: 0
*channelSashIndent: -10
*channelSashSize: 0
*sashSize: 14
*sashIndent: -6
style "default"
{
# font_name = "Serif 11"
fg[NORMAL] = { 0.0, 0.00, 0.0 }
text[NORMAL] = { 0.0, 0.0, 0.0 }
bg[NORMAL] = { 0.93, 0.93, 0.87 }
bg[ACTIVE] = { 0.80, 0.80, 0.75 }
bg[INSENSITIVE] = { 0.93, 0.93, 0.87 }
base[NORMAL] = { 1.00, 1.00, 1.00 }
bg[PRELIGHT] = { 0.70, 0.70, 0.64 }
fg[PRELIGHT] = { 1.0, 0.0, 0.0}
GtkPaned::handle_size = 6
xthickness = 1
ythickness = 1
}
style "default_button" = "default"
{
GtkButton::default_border = { 1, 0, 1, 0 }
GtkButton::default_outside_border = { 1, 0, 1, 0 }
GtkButton::inner_border = { 1, 0, 1, 0 }
GtkButton::focus_line_width = 0
GtkButton::focus_padding = 0
}
style "default_menu" = "default"
{
bg[NORMAL] = { 1.0, 1.0, 0.94 }
}
style "default_pane" = "default"
{
bg[NORMAL] = { 0.56, 0.93, 0.56 }
bg[PRELIGHT] = { 0.26, 0.8, 0.26}
}
style "default_entry" = "default"
{
base[ACTIVE] = { 0.93, 0.93, 0.87 }
base[SELECTED] = { 0.80, 0.80, 0.75 }
base[PRELIGHT] = { 1.0, 1.0, 1.0}
base[NORMAL] = { 0.93, 0.93, 0.87 }
base[INSENSITIVE] = { 0.93, 0.93, 0.87 }
bg[ACTIVE] = { 1.0, 1.0, 1.0 }
bg[SELECTED] = { 1.0, 1.0, 1.0 }
bg[PRELIGHT] = { 1.0, 1.0, 1.0 }
text[ACTIVE] = { 0.0, 0.0, 0.0 }
text[SELECTED] = { 0.0, 0.0, 0.0 }
text[PRELIGHT] = { 0.0, 0.0, 0.0 }
}
style "default_text" = "default_entry"
{
base[NORMAL] = { 1.0, 1.0, 1.0 }
}
style "default_slider" = "default"
{
bg[NORMAL] = { 0.90, 0.90, 0.85 }
bg[ACTIVE] = { 0.70, 0.70, 0.64 }
bg[PRELIGHT] = { 0.90, 0.90, 0.85 }
GtkRange::slider_width = 13
GtkRange::stepper_size = 10
}
style "default_frame" = "default"
{
xthickness = 4
ythickness = 4
}
class "GtkWidget" style "default"
class "GtkButton" style "default_button"
class "GtkMenu" style "default_menu"
class "GtkMenuBar" style "default_menu"
class "GtkEntry" style "default_entry"
class "GtkTextView" style "default_text"
class "GtkPaned" style "default_pane"
class "GtkRange" style "default_slider"
class "GtkFrame" style "default_frame"
style "zoom_slider" = "default_slider"
{
bg[NORMAL] = { 0.70, 0.70, 0.64 }
bg[ACTIVE] = { 0.54, 0.54, 0.51 }
bg[PRELIGHT] = { 0.70, 0.70, 0.64 }
GtkRange::slider_width = 12
GtkRange::stepper_size = 12
}
widget "*.zx_slider" style "zoom_slider"
widget "*.zy_slider" style "zoom_slider"
widget "*.gzy_slider" style "zoom_slider"
widget "*.panel_button" style "zoom_slider"
style "fft_dialog" = "default"
{
# bg[NORMAL] = { 0.90, 0.90, 0.85 }
bg[NORMAL] = { 0.85, 0.85, 0.80 }
}
# class "GtkDialog" style "default_dialog"
widget "fft_dialog" style "fft_dialog"
style "prefs_scale" = "default_slider"
{
GtkScale::slider-length = 24
}
widget "*.prefs_color_scale" style "prefs_scale"
style "listener" = "default"
{
# font_name = "Monospace 10"
base[NORMAL] = { 0.94, 0.97, 1.0 }
text[NORMAL] = { 0.0, 0.0, 0.0 }
}
widget "*.listener_text" style "listener"
style "dialog_button" = "default_button"
{
bg[NORMAL] = { 1.0, 1.0, 0.94 }
bg[PRELIGHT] = { 1.0, 1.0, 0.94 }
}
widget "*.dialog_button" style "dialog_button"
widget "*.the_unpane" style "default"
style "recorder" = "default"
{
xthickness = 8
ythickness = 8
}
widget "*.record_frame" style "recorder"
style "white_button" = "default_button"
{
bg[NORMAL] = { 1.0, 1.0, 1.0 }
bg[PRELIGHT] = { 0.94, 0.97, 1.0 }
fg[PRELIGHT] = { 0.0, 0.0, 0.0}
GtkButton::default_border = { 0, 0, 0, 0 }
GtkButton::default_outside_border = { 0, 0, 0, 0 }
GtkButton::inner_border = { 0, 0, 0, 0 }
xthickness = 0
ythickness = 0
}
widget "*.white_button" style "white_button"
style "label_button" = "default_button"
{
bg[NORMAL] = { 1.0, 1.0, 0.94 }
bg[PRELIGHT] = { 1.0, 1.0, 0.94 }
fg[PRELIGHT] = { 0.0, 0.0, 0.0}
GtkButton::default_border = { 0, 0, 0, 0 }
GtkButton::default_outside_border = { 0, 0, 0, 0 }
GtkButton::inner_border = { 0, 0, 0, 0 }
xthickness = 0
ythickness = 0
}
widget "*.label_button" style "label_button"
/* from gtk/gtkrc.key.emacs */
binding "gtk-emacs-text-entry"
{
bind "<ctrl>b" { "move-cursor" (logical-positions, -1, 0) }
bind "<shift><ctrl>b" { "move-cursor" (logical-positions, -1, 1) }
bind "<ctrl>f" { "move-cursor" (logical-positions, 1, 0) }
bind "<shift><ctrl>f" { "move-cursor" (logical-positions, 1, 1) }
bind "<alt>b" { "move-cursor" (words, -1, 0) }
bind "<shift><alt>b" { "move-cursor" (words, -1, 1) }
bind "<alt>f" { "move-cursor" (words, 1, 0) }
bind "<shift><alt>f" { "move-cursor" (words, 1, 1) }
bind "<ctrl>a" { "move-cursor" (paragraph-ends, -1, 0) }
bind "<shift><ctrl>a" { "move-cursor" (paragraph-ends, -1, 1) }
bind "<ctrl>e" { "move-cursor" (paragraph-ends, 1, 0) }
bind "<shift><ctrl>e" { "move-cursor" (paragraph-ends, 1, 1) }
bind "<ctrl>w" { "cut-clipboard" () }
bind "<ctrl>y" { "paste-clipboard" () }
bind "<ctrl>d" { "delete-from-cursor" (chars, 1) }
bind "<alt>d" { "delete-from-cursor" (word-ends, 1) }
bind "<ctrl>k" { "delete-from-cursor" (paragraph-ends, 1) }
bind "<alt>backslash" { "delete-from-cursor" (whitespace, 1) }
bind "<alt>space" { "delete-from-cursor" (whitespace, 1)
"insert-at-cursor" (" ") }
bind "<alt>KP_Space" { "delete-from-cursor" (whitespace, 1)
"insert-at-cursor" (" ") }
bind "<ctrl>u" {
"move-cursor" (paragraph-ends, -1, 0)
"delete-from-cursor" (paragraph-ends, 1)
}
bind "<ctrl>h" { "delete-from-cursor" (chars, -1) }
bind "<ctrl>w" { "delete-from-cursor" (word-ends, -1) }
}
binding "gtk-emacs-text-view"
{
bind "<ctrl>p" { "move-cursor" (display-lines, -1, 0) }
bind "<shift><ctrl>p" { "move-cursor" (display-lines, -1, 1) }
bind "<ctrl>n" { "move-cursor" (display-lines, 1, 0) }
bind "<shift><ctrl>n" { "move-cursor" (display-lines, 1, 1) }
bind "<ctrl>space" { "set-anchor" () }
bind "<ctrl>KP_Space" { "set-anchor" () }
}
class "GtkEntry" binding "gtk-emacs-text-entry"
class "GtkTextView" binding "gtk-emacs-text-entry"
class "GtkTextView" binding "gtk-emacs-text-view"
......@@ -328,12 +328,12 @@ extern "C" {
MUS_EXPORT int mus_error(int error, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
MUS_EXPORT void mus_print(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
MUS_EXPORT char *mus_format(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
MUS_EXPORT int mus_snprintf(char *buffer, int buffer_len, const char *format, ...) __attribute__ ((format (printf, 3, 4)));
MUS_EXPORT void mus_snprintf(char *buffer, int buffer_len, const char *format, ...) __attribute__ ((format (printf, 3, 4)));
#else
MUS_EXPORT int mus_error(int error, const char *format, ...);
MUS_EXPORT void mus_print(const char *format, ...);
MUS_EXPORT char *mus_format(const char *format, ...);
MUS_EXPORT int mus_snprintf(char *buffer, int buffer_len, const char *format, ...);
MUS_EXPORT void mus_snprintf(char *buffer, int buffer_len, const char *format, ...);
#endif
typedef void mus_error_handler_t(int type, char *msg);
......
......@@ -2,7 +2,7 @@
# Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Tue Aug 01 22:58:31 CEST 2006
# Changed: Wed Oct 14 23:10:21 CEST 2009
# Changed: Wed Nov 17 22:07:58 CET 2010
# Commentary:
#
......@@ -37,7 +37,6 @@
# Code:
require "complex"
require "clm"
require "dsp"
......
......@@ -239,11 +239,7 @@
(define (clean-string e)
;; make the envelope lists look prettier
(string-concatenate (append (list "(")
(map (lambda (n)
(format #f "~,3F " n))
e)
(list ")"))))
(format #f "(~{~,3F~^ ~})" e))
(define (seldur)
(list (/ (selection-frames) 44100.0)
......@@ -267,8 +263,8 @@
;;; otherwise if the file is long (like most bird recordings), play what's in the current window.
;;; This is mainly to cut out the ubiquitous and useless announcer.
(if (hook-empty? start-playing-hook)
(add-hook! start-playing-hook
(if (null? (hook-functions start-playing-hook))
(hook-push start-playing-hook
(lambda (snd)
(if (sound? snd) ; meaning not 123456 = temp-sound-index from View:Files play button
(if (and (selection?)
......
......@@ -991,6 +991,7 @@ static void yes_no(int condition)
else pprint(" no ");
}
#if SOUND_VERSION < 0x040000
static int set_dsp(int fd, int channels, int bits, int *rate)
{
int val, fmt;
......@@ -1008,6 +1009,7 @@ static int set_dsp(int fd, int channels, int bits, int *rate)
ioctl(fd, MUS_OSS_WRITE_RATE, rate);
return(MUS_NO_ERROR);
}
#endif
static void oss_describe_audio_state_1(void)
{
......@@ -1015,7 +1017,9 @@ static void oss_describe_audio_state_1(void)
/* it is explicitly released under the GPL, so I think I can use it here without elaborate disguises */
int fd;
int status = 0, level, i, recsrc, devmask, recmask, stereodevs, caps;
#if SOUND_VERSION < 0x040000
int rate = 0, channels = 0, blocksize = 0, formats = 0, deffmt = 0, min_rate = 0, max_rate = 0;
#endif
const char *sound_device_names[] = SOUND_DEVICE_LABELS;
char dsp_name[LABEL_BUFFER_SIZE];
char version[LABEL_BUFFER_SIZE];
......@@ -1209,7 +1213,6 @@ AUDIO_INFO:
if (fd == -1) return;
#if SOUND_VERSION < 0x040000
/* Here's Yair K's explanation:
In OSSv4 we can use the same ioctls as the equivalents of the
......@@ -1286,6 +1289,7 @@ AUDIO_INFO:
}
pprint("--------------------------------\n");
#endif
linux_audio_close(fd);
fd = -1;
dsp_num++;
......
......@@ -42,8 +42,8 @@
temp-file)))
(do ((i 0 (+ 1 i)))
((= i (channels snd)))
(if (hook-empty? (edit-hook snd i))
(add-hook! (edit-hook snd i) (upon-edit snd))))
(if (null? (hook-functions (edit-hook snd i)))
(hook-push (edit-hook snd i) (upon-edit snd))))
(clear-unsaved-edits snd)))
(define (auto-save-done snd)
......@@ -65,14 +65,14 @@
(sounds))
(in (* 1000 auto-save-interval) auto-save-func))))
(if (not (member auto-save-done (hook->list close-hook)))
(if (not (member auto-save-done (hook-functions close-hook)))
(begin
(if (not (null? (sounds)))
(for-each auto-save-open-func (sounds)))
(add-hook! after-open-hook auto-save-open-func)
(add-hook! close-hook auto-save-done)
(add-hook! save-hook (lambda (snd name) (auto-save-done snd)))
(add-hook! exit-hook (lambda () (for-each auto-save-done (sounds))))))
(hook-push after-open-hook auto-save-open-func)
(hook-push close-hook auto-save-done)
(hook-push save-hook (lambda (snd name) (auto-save-done snd)))
(hook-push exit-hook (lambda () (for-each auto-save-done (sounds))))))
(set! auto-saving #t)
(in (* 1000 auto-save-interval) auto-save-func))
......
......@@ -63,7 +63,7 @@
(fm-index 1.0)
(amp-env '(0 0 25 1 75 1 100 0)))
"(make-rt-violin dur freq amp (fm-index 1.0) (amp-env '(0 0 25 1 75 1
100 0))) real time simple violin (see snd-11/fm.html)"
100 0))) real time simple violin (see snd-12/fm.html)"
(let* ((frq-scl (hz->radians freq))
(maxdev (* frq-scl fm-index))
(index1 (* maxdev (/ 5.0 (log freq))))
......
......@@ -273,8 +273,6 @@
(write-byte 0))))))
;;; TODO: read/write wav, write aifc
(define (read-aif-header file)
(let ((data-location 0)
(data-size 0)
......
\ bird.fsm -- clm/bird.clm -*- snd-forth -*-
\ bird.fsm -- clm/bird.clm
\ Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Tue Dec 12 03:26:27 CET 2006
\ Changed: Thu Oct 14 20:24:59 CEST 2010
\ Changed: Sat Feb 19 17:28:25 CET 2011
\ Usage: <'> bird-test with-sound
\ or ws-bird-test
......
......@@ -25,7 +25,6 @@
(beg (seconds->samples start))
(len (seconds->samples dur))
(end (+ beg len)))
(ws-interrupt?)
(run
(do ((i beg (+ 1 i)))
((= i end))
......@@ -40,7 +39,6 @@
(len (seconds->samples dur))
(beg (seconds->samples start))
(end (+ beg len)))
(ws-interrupt?)
(run
(do ((i beg (+ 1 i