Snd

Snd is a sound editor.  It currently runs on Linux, Sun, SGI,
HPUX, LinuxPPC, FreeBSD, Mac OSX, BSD, and Cygwin systems. 


To build Snd, get the sources from

  ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-7.tar.gz

  gzip -d snd-7.tar.gz
  tar xf snd-7.tar
  cd snd-7
  ./configure
  make
  make install

The configure program has several Snd-related arguments:

   --with-motif          use Motif (the default)
     --with-static-motif same, but load Motif statically (for RPM)
     --with-motif-prefix set Motif location (will append lib and include)
   --with-gtk            use Gtk+
     --with-builtin-gtkrc  include built-in gtkrc fallbacks (default=yes)
   --with-no-gui         make Snd without any graphics support

   --with-alsa           use ALSA if possible (default is OSS in Linux)
     --with-static-alsa  use ALSA statically loaded (for RPM generation)
   --with-esd            use the enlightened sound daemon, if possible
   --with-jack           use the Jack library (can be used in conjunction
                           with --with-alsa)

   --with-doubles        use doubles throughout (default is floats)
   --with-float-samples  represent samples internally as floats (default: ints)
   --with-sample-width=N use N bits of samples (default: 24). N = 32 or so is 
                           not recommended because it does not leave you any 
                           "head room" during mixes. N < 16 isn't supported.

   --with-gl             include support for OpenGL (default: no)
     --with-just-gl      same but omit Guile bindings in gl.c (default: no)
                           The gl module is only useful if you want to write
                           Scheme code to add your own OpenGL graphics to Snd.
                           --with-just-gl will give you the GL spectrograms
                           without any extras.

   --with-ladspa         include LADSPA plugin support (default: yes in Linux)

   --with-static-xm      include the xm module (rather than loading it dynamically)
			   this option affects xm.c for Motif, xg.c for Gtk.
                           You'll need this (or need to make xm and load xm.so
                           at runtime) if you want to use Dave Phillips'
                           extensions described in the tutorial.
         
   --with-static-gsl     try to load GSL statically
                           GSL is loaded in any case, if it is available, and the
			   ISO C99 complex trig support is not available.
                           This affects only the Dolph-Chebyshev window.  FFT's 
                           are currently handled by FFTW, if it is available, otherwise
                           by built-in code.

   --with-snd-as-widget  make Snd a loadable widget, not a standalone program

   --with-ruby           try to use Ruby as the extension language
     --with-ruby-prefix  set location of Ruby
   --with-guile          use Guile, not Ruby (the default); the path to guile-config
                           can be set via GUILE_CONFIG_path (see examples below).

			 To build Snd without any extension language, use
			 --without-ruby --without-guile
     --with-hobbit       include hobbit-style function arity checking

   --with-temp-dir       directory to use for temp files (default: ".")
   --with-save-dir       directory to use for saved-state files (default: ".")
   --with-doc-dir        directory to search for documentation

   --with-shared-sndlib  try to use libsndlib.so (default: no).  The path to
                           sndlib-config can be specified via SNDLIB_CONFIG_path.
			   Normally, sndlib is built into Snd at compile time.
     --with-midi         include sndlib midi module (default: no)

   --disable-nls         the gettext (internationalization) support is on
                           by default; this turns it off.

   --without-gsl, --without-fftw 
                         these turn off the default inclusion of FFTW and the
                         possible inclusion of GSL.

If the configure/make process fails, please send me
(bil@ccrma.stanford.edu) the files config.h, config.log, and makefile,
created (or updated) by configure.

If you don't have Guile or Ruby, Snd can still be built, but it's
severely limited in what it can do.  Snd can also be built without
any graphics toolkit.  Without either the GUI or the extension
language, however, there's nothing it can do.

Here at CCRMA, we use this configure invocation:

  ./configure --with-alsa --with-temp-dir=/zap --with-static-xm --with-gl

but I'd recommend --with-just-gl elsewhere (the various GL implementations
are different enough that gl.c can be a pain to build).


----------------------------------------------------------------
The customization/extension languages are either Guile or Ruby.
Guile is available in the Gnu distributions:

  ftp://ftp.gnu.org/gnu/guile/guile-1.6.4.tar.gz

To include guile in Snd, either use the configure script (which should
be able to find the guile library automatically), or go to the
relevant makefile, set the CFLAGS variable to include 'guile-config
compile', and set the LIBS variable to include 'guile-config link'.
Only guile 1.3.4 or later is supported.

Just as a quick example:

  (set! (transform-size) 4096)

sets the transform size to 4096, and

  (scale-by 2.0)

scales the current sound's volume by 2.0 -- the syntax is Scheme,
a variant of Lisp; see the urls below for some Scheme tutorials.
The details of Snd customization are discussed in extsnd.html
and grfsnd.html.

To use Ruby rather than Guile use the --with-ruby configure
switch.


There are RPM packages of Snd available at the ccrma-ftp site
mentioned above: snd-7-8.i386.rpm and snd-7-8.src.rpm.  These RPM
files have been superseded by Fernando Lopez-Lezcano's set available
at http://ccrma.stanford.edu/planetccrma/software/


----------------------------------------------------------------
Included with Snd are five command-line programs that might
be of interest: sndplay, sndrecord, sndinfo, sndsine, and audinfo:

  make sndplay

sndsine is slightly special: the makefile assumes it has been
configured --without-guile --without-ruby.


----------------------------------------------------------------
The documentation is in snd.html, extsnd.html, grfsnd.html, sndscm.html,
sndlib.html, clm.html, fm.html, and libxm.html.  There's also a fancier 
wrapper for the documentation: snd1.html.  A brief change log is in HISTORY.Snd.
Dave Phillips has written a tutorial: see the tutorial directory.


The mailing list for Snd is the same as that for Common Music:
cmdist@ccrma.stanford.edu.  To subscribe, visit

http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

The mailing list has been auto-archived since Apr 2002;
the previous posts (going back to late 1993) are in
ftp://ccrma-ftp.stanford.edu/pub/Lisp/old-cmdist.html.


----------------------------------------------------------------
This software is available to anyone who is interested, free gratis
for nothing, without warranties of any kind (see the file COPYING for
legalese).  Send bug reports or suggestions to bil@ccrma.stanford.edu.
----------------------------------------------------------------


Authors:
Bill Schottstaedt
Michael Scholz: the German translation, the Ruby code, inf-snd.el, sndins, and the Forth version of sndlib.
Dave Phillips: the tutorial, new-effects.scm, and many other files.
Kjetil S. Matheussen: snd_conffile.scm, ladspa.scm, gui.scm, snd-hobbit.scm, and the Jack audio support.
Fernando Lopez-Lezcano: the current ALSA support.
Richard W.E. Furse: the original LADSPA support.
Nick Bailey: the ESD support.
Volker Kuhlmann and Seppo Ingalsuo: the Solaris port.
Seppo Ingalsuo: the HPUX port.
Juan Reyes: the DEC Alpha port.
Guenter Geiger and Stefan Schwandter: the Linux Alpha port.
Paul Davis: the original ALSA support.
Gerd Rausch: the Sam 9407 support.
Steven Schultz: the BSD port.
Ludger Brummer and Charles Nichols: the Mac-OSX port.
Plus many other contributions from
  Dave Phillips, 
  Fernando Lopez-Lezcano, 
  Tom Roth,
  Michael Scholz, 
  Fabio Furlanete,
  Kjetil S. Matheussen,
  Rick Taube,
  Anders Vinjar.


In terms of number of lines, the languages used in Snd/Sndlib are:
C, Scheme, Ruby, Forth, m4, Common Lisp, Emacs Lisp, javascript,
expect, and postscript.


To get the German version at run-time, (setlocale LC_ALL "de_DE").

----------------------------------------------------------------
TROUBLES:


---- Linux audio: ----

In Linux, Snd sometimes can't seem to play or record when other
applications are happy -- if this happens, please run the function
mus-audio-describe (via M-x) and send me whatever it prints out.

If you're using the Sonorus Studio card and getting interruptions,
try (set-oss-buffers 64 16).  I think the RME Digi96 card's defaults
are 32 and 12 (just a guess). 

If you're running esd, you need to build Snd with the configuration
switch --with-esd.  Otherwise, it's likely you'll get an error
from the 'play' button complaining about data formats, probably
that it can't play big-endian shorts.


---- Recording: ----

The Record dialog only works in Linux (OSS, perhaps ALSA), Sun, some
SGI systems, and perhaps Mac OSX.


---- Colors: ----

If you're running KDE and the menu labels are invisible, check
the 'theme' you're using.  You normally want black label foregrounds;
you can get these by

    ./snd -xrm '*foreground: Black'


---- Fonts: ----

If you're getting empty boxes where characters should be, or Xt
warnings about missing font characters, check your LANG and
SUPPORTED environment variables.  If they're UTF-8, you should
probably add lines such as:

setenv LANG en_US
setenv SUPPORTED en_US:en

to your .cshrc file to override the bogus settings.  (In RedHat
Linux, the bad settings come either from /etc/profile or from 
the lang.csh file in /etc/profile.d).


---- Compiling: ----

If you get the error:

 snd-x0.h:9 Xm/XmAll: No such file or directory

This probably means you don't have the Motif headers installed -- to
build Snd with a GUI from the sources, you need either Motif or Gtk+.
Motif has been released as open source software: see the url
mentioned below.  If you installed the openmotif library rpm package,
it may not have included the headers (look under
/usr/X11R6/include/Xm); to build Snd from the sources you need the
headers (in the openmotif-devel packages).

In Debian, apt-get install libmotif-dev.

If you have installed Motif in some weird place, use the -I compiler
flag to provide that information to the compiler.  I've added the
-with-motif-prefix argument to the configure script, but don't know if
it works; if, for example, you have Motif in /usr/local/lib and
/usr/local/include, try --with-motif-prefix=/usr/local

If Snd using Lesstif is messed up, that's Lesstif's problem!  I'm
not trying to support this anymore.


---- ALSA: ----

Only versions from 0.9 of ALSA are supported. If you get a compile-time
complaint about snd_pcm_hw_params (ALSA 0.9beta4) you need to get
a newer version of ALSA.

On recording, here's a note from Fernando from cmdist:

    > Recently I installed a sound card with digital in (with cmi8738 chip)
    > in my linux system with alsa. With 'arecord -D hw:0.2' I can succesfully record
    > from my digital input. How can I do the same with with Snd? The
    > digital inputs do not appear on the record window. I compiled Snd with alsa support.
    
    You could try to set up an environment variable before starting snd to 
    point to that particular device. This is the way snd reacts to env 
    variables:
    
    - searched for in the following order:
      SNDLIB_ALSA_PLAYBACK_DEVICE
         defines the name of the playback device
      SNDLIB_ALSA_CAPTURE_DEVICE
         defines the name of the capture device
      SNDLIB_ALSA_DEVICE
         defines the name of the playback and capture device
      use the first two if the playback and capture devices are different or the
      third if they are the same.
    
    So you could try:
      SNDLIB_ALSA_DEVICE="hw:0,2" snd
    if you are using bash as your shell
    
    This should use the digital i/o as the input output device.  It would also
    be possible to concatenate several devices using a definition in the
    .asoundrc file but that would involve understanding its arcane
    configuration language, which I don't. The current snd alss 0.9 code only
    looks at the first device it finds (normally hw:0,0).
    
    -- Fernando

There's also a discussion of RME cards in the cmdist archives.


---- Gtk+: ----

Only Gtk-2 or later is supported.  

If you get an error like:

  Gtk-WARNING **: <much useless mumbling>

you can find where it occurs by:

  gdb snd
  run --g-fatal-warnings
    <now do whatever it takes to hit the warning>
  where


---- GSL: ----

If configure finds GSL, but Snd refuses to load with an error
about missing gsl_complex_cos (or whatever), you need to get the
GSL sources and build it again; apparently the version of libgsl.a
that comes with Redhat 7.0 doesn't include any of the complex
trig package?  If GSL is used at all (it is only needed if your
C compiler/libraries don't support complex trig), the Snd needs 
GSL 0.8 or later.


---- Guile: ---- 

If you get a complaint along the lines of "ice-9/boot-9.scm not
found", it means you're running a version of Snd that has Guile
loaded, but Guile isn't installed locally.  You need to install Guile.
If Guile is installed, try running 'guile-config info' to find out
where it thinks its boot files are.  It's not impossible that running
snd under strace would show you what the actual desired path is.  In
the copious strace output, you should be able to find lines like:
    stat("/usr/local/share/guile/1.4/ice-9/boot-9.scm"...)

If you have installed Guile, but the snd image is looking in the wrong
place, try setting the envinronment variable GUILE_LOAD_PATH to the
correct directory:

  setenv GUILE_LOAD_PATH /home/jimb/guile-snap

  (fink): setenv GUILE_LOAD_PATH /sw/share/guile/1.6

Another possibility is the %load-path variable; in your ~/.snd file try
something like:

    (set! %load-path (cons "/home/bil/test" %load-path)))

(assuming you've put the guile files into /home/bil/test).


If the configure script says that your guile doesn't have
scm_make_smob_type, yet you do have guile 1.3.4 (or later) installed,
it's probably because the RedHat installer or someone, installed Guile
1.3 in /usr/bin and /usr/lib, but then the new version got installed
in /usr/local/bin.  The simplest fix is to remove /usr/bin/guile and
/usr/bin/guile-config.  If you get an inconsistent state here (that
is, configure thinks you're loading 1.3, but Snd itself finds 1.3.4),
you will get segfaults when the hooks are accessed (and probably
elsewhere).  If you can run Snd at all, try snd --version -- this will
try to catch and report consistency problems.


If you want to keep several Guile versions around, but use a
particular one for Snd, use the configure variable GUILE_CONFIG_path:

./configure GUILE_CONFIG_path=/home/bil/test/bin

In this case, the configure script looks for /home/bil/test/bin/guile-config
and uses the paths it returns to build Snd.  See also the PATH business below.


> Other thing is that configure doesn't find guile-1.4.
> For some reason it thinks it's an older version and I have to manually edit
> config.h

It's using guile-config to find guile; if you've got more
than one guile-config, it's up to your PATH setting, or
something, which one gets called.  In Redhat, an ancient
version gets installed in /usr/bin, then if you install
your own using the defaults, it ends up in /usr/local/bin,
and in many cases, the new version is not noticed. You
could delete or rename /usr/bin/guile-config or change the
relevant environment variable.  To see what configure sees,
in a shell try guile-config link or guile-config --version.

Fernando Lopez-Lezcano mentioned this possibility:

  If you want to force a different guile do (if you're using bash):

    PATH=/usr/marco/nicepath/bin/:$PATH ./configure --with-alsa --with-gtk

  where /usr/marco/nicepath/bin is the path where the guile-config you want
  is located. Do the same thing when you make:

    PATH=/usr/marco/nicepath/bin:$PATH make


If you're running Guile 1.4 and get:
    Syntax error in fixed argument declaration.
you've hit a use of the newer (Guile 1.5) optargs syntax.  To get around
this, load fix-optargs.scm before anything else.  There are other
similar problems involving "applicable smobs" and the tab-completion
system; if possible, get the latest Guile.


If you're using the CVS Guile (1.7.0), or Forte C on a Sun, and get
some complaint about lt_dlopen (or some name like that), you need to
add -lltdl to the library list.  If that doesn't fix it, add
-lguile-ltdl -- this part of the CVS guile is in flux, so the load
sequence is tricky.



---- SGI/OpenGL ----

OpenGL comes with the SGI, but its drawing area widget seems to be less
than adequate -- I use Mesa on Linux where X drawing commands can be mixed
with OpenGL.  On the SGI when using GL, the colors are all messed up.

Don't run the Motif/GL and the Gtk/GL versions of Snd at the same time.
This can kill the X server!



---- Sun ----

If the make process complains about lt_dlclose and friends, add -lltdl
to the GUILE_LIBS list in makefile.  The --with-gl and --with-just-gl
switches are not recommended on the Sun, though they work; the
colormap of the entire system is hijacked while Snd is running.


---- Mac OSX: ---- 

The Snd configure process is confused by the lack of pkg-config (if
Gtk requested), and for Motif, by a problem with dynamic loading, so
you need to run configure, then fixup some portions of the makefile
before running make.  In Motif, you need to make sure libXt.a is
loaded:

MOTIF_LIBS =  -L/usr/X11R6/lib  -lSM -lICE /usr/local/lib/libXm.a /usr/X11R6/lib/libXp.a /usr/X11R6/lib/libXt.a -lXext -lXpm -lX11
# MOTIF_LIBS =  -L/usr/X11R6/lib  -lSM -lICE -lXm -lXt -lX11  -lXext -lXp -lXpm

or, if you installed libXm.a in /sw/lib (via Fink, or something):

MOTIF_LIBS = -L/usr/X11R6/lib -lSM -lICE /sw/lib/libXm.a /usr/X11R6/lib/libXp.a /usr/X11R6/lib/libXt.a -lXext -lXpm -lX11


And you'll probably need to add some things to the GUILE library list:

GUILE_LIBS = -L/usr/local/lib -lguile -lm -lguile-ltdl -ldl

or, in the fink case:

GUILE_LIBS = -L/sw/lib -lguile -lm /sw/lib/libguile.a
GUILE_CFLAGS = -I/sw/include/


If configure didn't find Gtk or Motif, it's possible the header flags will
also need to be fixed:

# GX_HEADERS = $(NO_GUI_HEADERS)
# GX_FILES = $(NO_GUI_O_FILES)
GX_HEADERS = $(SND_X_HEADERS)
GX_FILES = $(X_O_FILES)


If the openmotif package forgot to include libXm.a, a version is
at ccrma-ftp.  If the Mac loader complains that it it out of date,
run ranlib: ranlib libXm.a (you may need to be root to do this).


I haven't tried Gtk+ in OSX for maybe a year, but back then I made
these changes:

GTK_LIBS = /usr/local/lib/libgmodule.a /usr/local/lib/libglib.a /usr/local/lib/libgdk.a /usr/local/lib/libgtk.a -L/usr/X11R6/lib -lXext -lX11 -lm

	
If C-f (and other such commands) doesn't work, either try toggling
the "w" button, or add the focus-widget related hooks from grfsnd.html
to your initialization file:

(add-hook! mouse-enter-graph-hook 
  (lambda (snd chn) 
    (focus-widget (car (channel-widgets snd chn)))))
(add-hook! mouse-enter-listener-hook 
  (lambda (widget) 
    (focus-widget widget)))
(add-hook! mouse-enter-text-hook
  (lambda (w)
    (focus-widget w)))

See also the cmdist archives for tips from Juan Pampin and others.

Here's some info from Josh Mattoon:

    "It turns out everything required for snd is now in fink! 

     sudo fink install openmotif3 fftw guile guile-dev 

    So... after a loooong compilation process (fftw required g77) I had
    everything in place.  But ./configure couldn't find them, d'oh.  My
    simple solution was to pass in the CFLAGS and LDFLAGS as so:
    
    CFLAGS=-I/sw/include LDFLAGS="-L/sw/lib -lmx -bind_at_load" ./configure \ 
         --with-gl --with-editres --with-static-xm --with-guile
    
    This was after a bit of trial and error.  The linker couldn't find
    some symbols that turned out to be in libmx, so I added that, and the
    linker also suggested the bind_at_load (though I'm not totally sure
    what that means)."

Adam Tinsdale had better luck with this:

    CFLAGS=-I/sw/include LDFLAGS="-L/sw/lib -lmx -bind_at_load" ./configure  \
      --with-motif --with-guile --without-fftw --with-static-xm


Taking that into account, if you installed Guile via fink, you might
try:

    ./configure CFLAGS="-I/sw/include" LDFLAGS="-L/sw/lib -lmx -bind_at_load" \
GUILE_CONFIG_path=/sw/bin GUILE_CONFIG_name=guile-1.6-config GUILE_name=guile-1.6 \
--disable-nls --with-guile --with-motif --with-motif-prefix=/sw


(Just a note that fftw is optional -- if it is omitted, Snd will
fallback on its own (slower) version of the fft).

The ccrma-ftp images osx-10.2-snd and osx-10.3-snd need only guile 1.6.4;
  everything else (well, leaving aside -lm) is loaded statically.  The guile
  libraries are loaded statically, but guile needs its "boot" files in
  its ice-9 directory whenever it starts, so you need it installed.  Set
  the environment variable GUILE_LOAD_PATH to point to your version:

    setenv GUILE_LOAD_PATH /Users/Mozart/Desktop/guile-1.6.4

Loading xm.c (--with-static-xm etc) is problematic on Mac.  If you use
the libXm.dylib from openMotif, you'll probably need the langinfo
library as well (motifzone has this in the package "darwin-extras");
you need to add -llanginfo to the makefile (but -lXm will work in this
case).  If you use libXm.a from ccrma-ftp, you'll need to go to
config.h and set the macro HAVE_XmToolTipGetLabel to 0.

The dac-size variable seems to matter a lot in OSX.  If you're
getting distorted playback, try various powers of 2.  It defaults
to 64.

Rick Taube mentions this for tracing the load process:

  [...]you can set the DYLD_PRINT_LIBRARIES shell variable:

        DYLD_PRINT_LIBRARIES=1
        export DYLD_PRINT_LIBRARIES

  some other useful dylib variables:

        DYLD_FRAMEWORK_PATH
        DYLD_FALLBACK_FRAMEWORK_PATH
        DYLD_LIBRARY_PATH
        DYLD_FALLBACK_LIBRARY_PATH

Also, you can check the "about Snd" option under the Help menu
to find out where Guile is finding its boot files.


So, here's the detailed step-by-step method, thanks to Cris Ewing:

    This build was done on a Mac G4 Powerbook with OS X 10.3 (panther).
    
    The first step (and it is a vital one) is to make sure that your version
    of fink is fully up-to-date.  Start by running
    
    $ fink selfupdate
    $ fink update-all
    
    Next, verify that you have a working version of X11 on your machine.  This
    must include the development libs found in the X11SDK.  If you are using
    apple's version of X11, the SDK package is _not_ installed by default when
    you install X11.  You have to do a custom install from the XCode disk to
    get the package.
    
    Once all this is in place, use fink to install openmotif3
    
    $ fink install openmotif3
    
    Next, install guile16
    
    $ fink install guile16
    
    And you need to add the guile development libraries, they don't get
    installed with the rest of the packages.
    
    $ fink install guile16-dev
    
    You can also use fink to install the fftw package.  It takes a really long
    time to build, but helps to speed up the fft-based functions in snd.
    
    $ fink install fftw
    
    Next, download and untar the latest snd sources from ccrma
    
    Configuration has been aided quite a bit by Bill since I had my problems,
    he's added a number of command-line variables that you can set that will
    help with naming problems in guile16 (the guile binaries are named
    differently than in earlier versions of guile).  If you have trouble with
    the configure process, you may want to check to make sure what the guile
    binaries are named.  All the information you will need to get configure to
    work successfully is in README.Snd inside the snd distribution.  It seems
    important to use the switch --disable-nls.  I'm not sure why, but I
    couldn't get the build to work with nls enabled.  This is the
    configuration command that I used after following the instructions above:
    
    $ ./configure CFLAGS=-I/sw/include LDFLAGS=-L/sw/lib -lmx -bind_at_load \
    GUILE_CONFIG_path=/sw/bin GUILE_CONFIG_name=guile-1.6-config \
    GUILE_name=guile-1.6 --disable-nls --with-guile --with-motif \
    --with-static-xm --with-motif-prefix=/sw
    
    This config was run from a bash shell.  If you are using tcsh (and you
    might be if you upgraded to panther) then you will have to omit the part
    about CFLAGS and LDFLAGS above.  Instead, you can set these through the
    shell by running
    
    % setenv LDFLAGS "-L/sw/lib -lmx -bind_at_load""
    % setenv CFLAGS "-I/sw/include"
    
    After this, you're nearly home:
    
    $ make
    
    $ sudo make install
    
    (you need to sudo make install, because it will install an snd-executable
    in /usr/local/bin)



---- Motif: ----

If you installed OpenMotif, then upgraded to RedHat 7.2, Redhat
probably overwrote Motif with Lesstif.  You need, among other
things, to re-install OpenMotif and make sure /usr/local/lib/libXm.so.2
is the new version, not Lesstif's.  If you use mwm, you need
to get it back as well, which means removing the directory that
Lesstif put in its place.  The error you will get will be
some complaint about undefined xmNotebook class, or worse,
Snd will simply become catatonic. I haven't found a foolproof
way to detect Lesstif at run-time (it is possible to build Snd
with OpenMotif, then accidentally load Lesstif's version of
libXm.a or whatever).  ldd snd will tell you which shared
libraries are being loaded.  In any case, Lesstif should
be deleted:

  rpm -e lesstif-devel
  rpm -e ddd
  rpm -e lesstif
  rpm -i openmotif-<whatever the number is>
  rpm -i openmotif-devel-<whatever the number is>

In RedHat 7.3, you can choose to install openmotif, rather than lesstif.

There appears to be a similar problem in Yellow Dog Linux for the PPC.
You'll need to uninstall Lesstif and install OpenMotif.



So to sum up: 
  if Gtk, then Gtk+ 2.0.0 or later
  Motif 2.n but not Lesstif (I no longer have any way to test Motif 1)
  in Linux, ALSA 0.9beta8 or later (or any version of OSS)
  Guile 1.3.4 or later but Snd's Scheme files need 1.5.0 or later
  Ruby 1.6.4 or later
  if GSL, version 0.8 or later
  if gtkglext, version 1.0 or later

----------------------------------------------------------------
If you hit a bug, don't just sit there weeping -- send me
(bil@ccrma.stanford.edu) a description of it!  If it's something like
a segfault, you have gdb, and you can build Snd from the sources, it
would help me a lot if you could build it with the -g switch, then

gdb snd
run
<here do whatever it takes to get the bug>
where

The 'where' command should print out the current stack trace which
is extremely helpful to me in tracking down the problem.  It can also
be helpful to move to the first Snd-related function in the stack
(via the 'up' command), then type

info locals

This will print out the value of the local variables.  In most cases,
that's all I need to fix the bug immediately.  On the sgi, the debugger
is named dbx, and the local variable command is named dump.  If Snd
appears to be hung, you can 

gdb snd
break exit
run
<now get it to hang, then type control-C to exit>
where



----------------------------------------------------------------
URLS:

CCRMA:
  http://ccrma.stanford.edu/
  http://ccrma.stanford.edu/~jos/
  http://ccrma.stanford.edu/planetccrma/software/
  http://ccrma.stanford.edu/planetccrma/software/soundapps.html#snd
  http://ccrma-mail.stanford.edu/pipermail/cmdist/
  http://ccrma-mail.stanford.edu/mailman/listinfo/planetccrma

Snd:
  ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-7.tar.gz
  http://ccrma.stanford.edu/software/snd/
  http://sourceforge.net/projects/snd/

  http://linux.oreillynet.com/pub/a/linux/2001/10/05/snd_partone.html
  http://linux.oreillynet.com/pub/a/linux/2001/10/18/snd_parttwo.html
  http://www.saunalahti.fi/~mjkoskin/
  http://www.cosy.sbg.ac.at/~gwesp/mma-sound.html (Mathematica)
  http://www.notam02.no/9
  http://www.justlinux.org
  http://www.linuxjournal.com/article.php?sid=7274

Guile/Scheme:
  http://www.gnu.org/software/guile/guile.html
  http://www.cs.indiana.edu/scheme-repository
  http://www.schemers.org/
  http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
  http://www.cs.utexas.edu/users/wilson/schintro/schintro_toc.html
  http://www.swiss.ai.mit.edu/~jaffer/SLIB.html
  http://mitpress.mit.edu/sicp/full-text/book/book.html
  http://cvs.zeit.de/guile-hobbit-latest.tar.gz (Hobbit for Guile 1.6.4)

Motif:
  http://www.motifzone.net

Gtk+:
  http://www.gtk.org
  ftp://ftp.gtk.org/pub/gtk/
  http://sourceforge.net/projects/gtkglext/

OpenGL:
  http://www.mesa3d.org/
  http://mesa3d.sourceforge.net/

Linux audio:
  http://linux-sound.org
  http://www.linuxsound.at

GSL:
  ftp://ftp.gnu.org/gnu/gsl

Ruby:
  comp.lang.ruby
  http://www.ruby-lang.org

fftw:  
  http://www.fftw.org


----------------------------------------------------------------
CVS:

To follow the Snd CVS repository, the first time you need to

       cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/snd login 
       cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/snd co cvs-snd

When prompted for a password for anonymous, press the Enter key. 
After that, you go to your local cvs-snd directory and

       cvs update 
