How to play sound in Python?

Bill Dandreta wjdandreta at att.net
Sat Oct 23 18:15:40 CEST 2004


I posted a message ("Help with my 1st Tkinter program") a few days ago 
complaining that Python did not have any built in basic cross platform 
sound capability. I was wrong (at least partly). Python comes with some 
sound playing ability for some platforms.

Since no one responded to my post, I assume the capability is not well 
known so I will post a code snippet from my practice program that 
demonstrates how I play a sound file with Python on both Windows and 
Linux. It may save someone else some time.

The winsound module lets you play .wav files under windows. The 
ossaudiodev module in combination with the wave module lets you play 
.wav files under Linux (and some other nix's as well).

===========================
file='tada.wav'
if platform.startswith('win'):
   from winsound import PlaySound, SND_FILENAME, SND_ASYNC
   PlaySound(file, SND_FILENAME|SND_ASYNC)
elif platform.find('linux')>-1:
   from wave import open as waveOpen
   from ossaudiodev import open as ossOpen
   s = waveOpen('tada.wav','rb')
   (nc,sw,fr,nf,comptype, compname) = s.getparams( )
   dsp = ossOpen('/dev/dsp','w')
   try:
     from ossaudiodev import AFMT_S16_NE
   except ImportError:
     if byteorder == "little":
       AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
     else:
       AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
   dsp.setparameters(AFMT_S16_NE, nc, fr)
   data = s.readframes(nf)
   s.close()
   dsp.write(data)
   dsp.close()
===============================

Bill



More information about the Python-list mailing list