Date: Tue, 26 Mar 1996 07:16:01 -0500 (EST) From: rhh@ct.picker.com (Randall Hopper) To: speak-freely@fourmilab.ch Cc: haver@harding.et.tudelft.nl, freebsd-multimedia@freebsd.org, linux-sound@vger.rutgers.edu Subject: Speak Freely v6.0 on VoxWare/FreeBSD/Linux (was speak-freely-digest V1 #16) Message-ID: <199603261216.HAA27753@elmer.picker.com> In-Reply-To: <199603252311.AAA20952@throop.fourmilab.ch> from "owner-speak-freely-digest@fourmilab.ch" at Mar 26, 96 00:11:13 am
next in thread | previous in thread | raw e-mail | index | archive | help
>From: Bert Haverkamp <haver@harding.et.tudelft.nl> >Date: Wed, 20 Mar 1996 09:26:44 +0100 >Subject: Re: speak-freely-digest V1 #16 > >Hello SF-users, > >I'm a starting SF'er and am running speakfreely 6.0 both under windows >3.1 and Linux 1.2.13. The linux part is giving me some trouble. I have >compiled the files succesfully, but sfspeaker isn't able to give me >any sound. I tried it a few times with an echostation, using the debug >option -d I saw sound comming in (It didn't get to the speaker >though!), only once. After that, sfspeaker didn't recieve any more messages. > >I'm using a soundblaster compatible card, that works fine with the >voxware 3.0.1 sounddriver I installed. >Does anyone know what I'm doing wrong? suggestions are welcome. >The output of sfspeaker -d is the folowing: > >>sfspeaker -d >sfspeaker: opening audio device. >sfspeaker: playing 332 GSM compressed bytes from throop.fourmilab.ch. >Tick: 10.00... >sfspeaker: releasing audio device. >Tick: 10.00... >Tick: 10.00... >Tick: 10.00... >Tick: 10.00... I had similar problems on FreeBSD 2.1.0 (VoxWare 3.0-beta-950506) with a Sound Blaster 32. These are the two main patches I had to make to Speak Freely to get it to work for me (from memory as I'm not on my PC now): 1) Comment out the setting to put the device in non-blocking mode (soundbyte.c): if (ioctl(audiof, SNDCTL_DSP_NONBLOCK, NULL) < 0) { perror("SNDCTL_DSP_NONBLOCK"); return FALSE; This was causing soundbyte.c:soundplay to hang trying to write the first buffer to the audio device. It appears that the DMA transfer to the card isn't even being initiated in non-blocking mode, and the write() request returns having written 0 bytes of the buffer to the sound card, resulting in an infinite loop. The "Tick" message is just caused by the signal handler, and your sfspeaker is essentially hung. 2) As I recall, the other problem I had was caused by the first hack. soundbyte.c:soundflush's read() was blocking. Commented that out and wasn't any the worse for it. Seemed to work fine. One other strange problem I observed though. The last DMA transfer to the card wasn't being flushed until the close() to the audio device was issued when the release timer expired. Not being real familiar with Voxware workings, I don't know what the right fix for this is. I shortened the timer to 2 seconds which helps but of course doesn't fix it. I'll go back to looking at better solutions to the Speak Freely/Voxware hacks once I get the UDP-over-proxy-TCP tunnel utility I'm writing done (hate this idea, but I'll take what I can get). I'd be interested in hearing from the FreeBSD/Linux mailing lists whether there are more reasonable fixes given the 3.0beta and the current Voxware drivers. Randall Hopper rhh@ct.picker.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603261216.HAA27753>