No sounds other than console beep; what's wrong? (solved?)

robert delius royar xemacs at frinabulax.org
Sat Jan 5 09:50:34 EST 2008


Mon, 31 Dec 2007 (14:08 -0500 UTC) robert delius royar wrote:

>  I do not know which CVS first exhibited this problem, but it first showed up
>  when I recompiled XEmacs 21.5.28b after upgrading to Mac OS X 10.5.1.  The
>  newest changelog in the tree is dated 2007-12-21, but version.sh is no
>  longer being updated in CVS.
>
>  I have included installation info at the end of this message.
>
>  I can no longer get XEmacs to play sounds through my (working) Enlighten
>  Sound Daemon (v 2.38).  I have verified that ESD is working on the system
>  (launched at startup and plays through 127.0.0.1:16001).  I verified this by
>  playing /usr/local/share/xemacs/xemacs-packages/etc/sounds/boing.wav with
>  esdplay; I also verified that sound-extension-list is ".wav" and that
>  load-default-sounds reports "Loading sounds..." and "Loading sounds...done".
>
>  However, no sounds play in XEmacs other than the system beep.  And
>  device-sound-enabled-p returns nil.

I found the line (110) in XEmacs src/esd.c that was the root of the problem:
  sock = esd_play_stream(flags, speed, NULL, ESD_NAME);
The function in esdlib is prototyped as int esd_play_stream( esd_format_t 
format, int rate, const char *host, const char *name );
Passing the value NULL for the host worked until I recompiled XEmacs for 
Leopard.  esd expects a host name or an octet string (with optional 
port/socketname appended).  But the code in esdlib is supposed to accept !host 
as a signal to use localhost.

However, it doesnot to work because of the new scheme for setting DISPLAY in OS 
X.

If I change the call from XEmacs so that the NULL is replaced by "localhost", 
the sound plays.  If I change the code in esdlib.c so that esd_play_stream 
checks for host==NULL and calls esd_open_sound("localhost") instead of 
esd_open_sound(NULL), then the sounds will also work.  Either "fix" gets the 
sounds back.

I have not tried the third alternative of setting the environment variable 
ESPEAKER to "localhost".  It might also work; however, on the previous OS 
(10.4), setting ESPEAKER caused hangups in XEmacs.  On 10.3, it was the only 
way to get esd to play.

I just wanted to followup in case anyone else using OS X 10.5 found a similar 
problem with sounds.

BTW: Is anyone working on a way to use CoreAudio from within XEmacs--similar to 
the way Windows sound is treated?

-- 
Dr. Robert Delius Royar                   Associate Professor of English
Morehead State University                             Morehead, Kentucky



More information about the XEmacs-Beta mailing list