Can't simultaneously read/write from ossaudio dsp device

Tito generic_user25 at
Mon Mar 13 00:50:09 CET 2006

For an internet telephone application, I need to be able to read and
write data to and from /dev/dsp simultaneously.  I wrote some code and
its not working.  Anyone have any working code to do this?  I am
assuming my card is full duplex, it is a built-in sound card on a new
dell 600m laptop, but I am not sure how to tell for sure.  But I think
the problem is not so much my sound card, but that I am making some
fundamentally wrong assumption on the way to do this ;)  Also I am
definitely a newbie when it comes to audio coding, so any corrections
or tips are welcome.

Here is some test code that is failing for me

from twisted.internet.task import LoopingCall
from twisted.internet import reactor
import os, sys, wave, audioop

While playing the contents of test1.wav,  talk into the mic
and have the audio recorded into /tmp/out.wav

def playnlisten_out():
    audio = wavin.readframes(1024)
    stereoaudio = audioop.tostereo(audio, 2, 1, 1)

def playnlisten_in():
    audio =

def both():

dsp ='/dev/dsp', 'rw')

wavin ="test1.wav", "r")
wavout ="/tmp/out.wav", "w")

both_loop = LoopingCall(both)

------------ Actual behavior  ------------------------

It fails with an error:

exceptions.IOError: [Errno 19] No such device

If I comment either playnlisten_out() or playnlisten_in() then the
other function will work.  They just don't work at the same time.

------------ Sys info ------------------------
box:~# lsmod | grep -i audio
i810_audio             30356  1
ac97_codec             16908  1 i810_audio
soundcore               9824  3 snd,i810_audio
box:~# lsmod | grep -i snd
snd_pcm_oss            48168  0
snd_mixer_oss          16640  1 snd_pcm_oss
snd_intel8x0m          18632  0
snd_intel8x0           33068  0
snd_ac97_codec         59268  2 snd_intel8x0m,snd_intel8x0
snd_pcm                85412  3 snd_pcm_oss,snd_intel8x0m,snd_intel8x0
snd_timer              23172  1 snd_pcm
snd_page_alloc         11144  3 snd_intel8x0m,snd_intel8x0,snd_pcm
gameport                4736  1 snd_intel8x0
snd_mpu401_uart         7296  1 snd_intel8x0
snd_rawmidi            23232  1 snd_mpu401_uart
snd_seq_device          7944  1 snd_rawmidi
snd                    50148  10
soundcore               9824  3 snd,i810_audio

box:~# lspci
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)

box:~# uname -a
Linux box 2.6.7-1-386 #1 Thu Jul 8 05:08:04 EDT 2004 i686 GNU/Linux

More information about the Python-list mailing list