#ifdef HAVE_SYS_SOUNDCARD_H
#include <sys/soundcard.h>
#endif
+#ifdef HAVE_SOUNDCARD_H
+#include <sys/ioctl.h>
+#include <soundcard.h>
+#endif
+
+#ifndef DEFAULT_SOUND_DEVICE
+#define DEFAULT_SOUND_DEVICE "/dev/dsp"
+#endif
#define max(X, Y) ((X) > (Y) ? (X) : (Y))
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
{
if (current_sound_device)
{
- current_sound_device->close (current_sound_device);
+ if (current_sound_device->close)
+ current_sound_device->close (current_sound_device);
if (current_sound->fd > 0)
emacs_close (current_sound->fd);
}
DEFUN ("play-sound", Fplay_sound, Splay_sound, 1, 1, 0,
- "Play sound SOUND.")
+ "Play sound SOUND.\n\
+SOUND is a list of the form `(sound KEYWORD VALUE...)'.\n\
+The following keywords are recognized:\n\
+\n\
+ :file FILE.- read sound data from FILE. If FILE Isn't an\n\
+absolute file name, it is searched in `data-directory'.\n\
+\n\
+ :data DATA - read sound data from string DATA.\n\
+\n\
+Exactly one of :file or :data must be present.\n\
+\n\
+ :volume VOL - set volume to VOL. VOL must an integer in the\n\
+range 0..100 or a float in the range 0..1.0. If not specified,\n\
+don't change the volume setting of the sound device.\n\
+\n\
+ :device DEVICE - play sound on DEVICE. If not specified,\n\
+a system-dependent default device name is used.")
(sound)
Lisp_Object sound;
{
args[0] = Qplay_sound_functions;
args[1] = sound;
- Frun_hook_with_args (make_number (2), args);
+ Frun_hook_with_args (2, args);
/* There is only one type of device we currently support, the VOX
sound driver. Set up the device interface functions for that
if (sd->file)
file = sd->file;
else
- file = "/dev/dsp";
+ file = DEFAULT_SOUND_DEVICE;
sd->fd = emacs_open (file, O_WRONLY, 0);
if (sd->fd < 0)