pymad - a Python wrapper for the MPEG Audio Decoder library
pymad is a Python module that allows Python programs to use the MPEG Audio Decoder library. pymad provides a high-level API, similar to the pyogg module, which makes reading PCM data from MPEG audio streams a piece of cake.
MAD is available at http://www.mars.org/home/rob/proj/mpeg/
Access this module via import mad
. To decodean mp3 stream, you'll want to create a mad.MadFile
object and read data fromthat. You can then write the data to a sound device. See the exampleprogram in test/
for a simple mp3 player that uses the python-pyao
wrapper around libao for the sounddevice.
pymad wrapper isn't as low level as the C MAD API is, for example, you don'thave to concern yourself with fixed point conversion -- this was done tomake pymad easy to use.
import sysimport aoimport madmf = mad.MadFile(sys.argv[1])dev = ao.AudioDevice(0, rate=mf.samplerate())while 1: buf = mf.read() if buf is None: # eof break dev.play(buf, len(buf))
To build, you need the distutils package, availible fromhttp://www.python.org/sigs/distutils-sig/download.html (it comes withPython 2.0). Run python setup.py build
to build and then as root runpython setup.py install
.
if you've installed your mad stuff someplace weird you may need to runthe config_unix.py script, passing it a --prefix
value to create asetup.cfg
file with the correct include and link dirs:
# python config_unix.py --prefix /usr/local# python setup.py build# python setup.py install --prefix /usr/local
Remember to make sure /usr/local/python/site-packages/
is in yourPython search path in that example.
Alternately, you can write setup.cfg
yourself. E.g.:
[build_ext]library_dirs=/opt/mad/libinclude_dirs=/opt/mad/includelibraries=name_of_library_mad_might_depend_on