A Python wrapper for the MPEG Audio Decoder (MAD) library

jaqx0r jaqx0r Last update: Feb 28, 2022

pymad - a Python wrapper for the MPEG Audio Decoder library

cipymad 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
Tags:

Subscribe to our newsletter