Package: sox Version: 14.0.0-5 Severity: normal Hi,
When I play a wav file using play(1), it doesn't work and shows following error. $ play /usr/share/sounds/startup3.wav play soxio: Failed writing `default': unknown file type `ao' According to source code of sox, $ play foo is almost same as $ sox foo -t ao default So that, above command will be treated as following command. $ sox /usr/share/sounds/startup3.wav -t ao default sox soxio: Failed writing `default': unknown file type `ao' On my system, aptitude says libsox-fmt-alsa is installed, but libsox-fmt-ao is not installed. I have confirmed that wav file can be played correctly with this command (I changed "ao" to "alsa"): $ sox /usr/share/sounds/startup3.wav -t alsa default It seems the problem is that libsox-fmt-ao is not installed. I have installed libsox-fmt-ao, $ aptitude install libsox-fmt-ao and play(1) works fine. $ play /usr/share/sounds/startup3.wav .... and, Here is my opinion about this problem. I think the problem is, when installing sox package, libsox-fmt-alsa will be installed instead of libsox-fmt-ao. Actually, sox recommends libsox-fmt-alsa | libsox-fmt-ao | libsox-fmt-oss, therefore libsox-fmt-alsa seems get higher priority than libsox-fmt-ao. Hmmm... rather important thing is that the audio device play(1) use is determined at compiled-time. It cannot be changed at run-time. Look at this code (defined in sox-14.0.0/src/sox.c): static void set_device(file_t f, sox_bool recording UNUSED) { #ifdef HAVE_LIBAO if (!recording) { f->filetype = "ao"; f->filename = xstrdup("default"); return; } #endif #if defined(HAVE_ALSA) f->filetype = "alsa"; f->filename = xstrdup("default"); #elif defined(HAVE_SYS_SOUNDCARD_H) || defined(HAVE_MACHINE_SOUNDCARD_H) f->filetype = "ossdsp"; f->filename = xstrdup("/dev/dsp"); #elif defined(HAVE_SYS_AUDIOIO_H) || defined(HAVE_SUN_AUDIOIO_H) char *device = getenv("AUDIODEV"); f->filetype = "sunau"; f->filename = xstrdup(device ? device : "/dev/audio"); #else sox_fail("Sorry, there is no default audio device configured"); exit(1); #endif } This code determines which audio device play(1) use. I think it would be nice if play(1) determines dynamically the audio device they use at run-time. Regards, Morita Sho -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.22-3-k7 (SMP w/1 CPU core) Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages sox depends on: ii libc6 2.7-5 GNU C Library: Shared libraries ii libltdl3 1.5.24-2 A system independent dlopen wrappe ii libsamplerate0 0.1.2-5 audio rate conversion library ii libsox0 14.0.0-5 SoX library Versions of packages sox recommends: ii libsox-fmt-alsa 14.0.0-5 SoX alsa format I/O library ii libsox-fmt-ao 14.0.0-5 SoX Libao format I/O library ii libsox-fmt-base 14.0.0-5 Minimal set of SoX format librarie -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]