pyaudio, a module to make noise from numpy arrays

David L. Goldsmith David.L.Goldsmith at noaa.gov
Fri Oct 27 13:33:52 EDT 2006


I'm sure some others _might_ regard this as frivolous, so let me just 
say: "Way Cool"!  Thanks!

DG

David Cournapeau wrote:
> Hi,
>    I announce the first release of pyaudio, a module to make noise from 
> numpy arrays (read, write and play audio files with numpy arrays).
>
> * WHAT FOR ?:
>
>    The Goal is to give to a numpy/scipy environmenet some basic audio IO 
> facilities (ala sound, wavread, wavwrite of matlab).
>
>    With pyaudio, you should be able to read and write most common audio 
> files from and to numpy arrays. The underlying IO operations are done 
> using libsndfile from Erik Castro Lopo 
> (http://www.mega-nerd.com/libsndfile/), so he is the one who did the 
> hard work. As libsndfile has support for a vast number of audio files 
> (including wav, aiff, but also htk, ircam, and flac, an open source 
> lossless codec), pyaudio enables the import from and export to a fairly 
> large number of file formats.
>    There is also a really crude player, which uses tempfile to play 
> audio, and which only works for linux-alsa anyway. I intend to add 
> better support at least for linux, and for other platforms if this does 
> not involve too much hassle.
>
>    So basically, if you are lucky enough to use a recent linux system, 
> pyaudio already gives you the equivalent of wavread, wavwrite and sound.
>
> * DOWNLOAD:
>
>    http://www.ar.media.kyoto-u.ac.jp/members/david/pyaudio.tar.gz
>
> * INSTALLATION INSTRUCTIONS:
>
>    Just untar the package and drop it into scipy/Lib/sandbox, and add 
> the two following lines to scipy/Lib/sandbox/setup.py:
>      
>    # Package to make some noise using numpy
>    config.add_subpackage('pyaudio')
>
>    (if libsndfile.so is not in /usr/lib, a fortiori if you are a windows 
> user, you should also change set the right location for libsndfile in 
> pyaudio/pysndfile.py, at the line 
> _snd.cdll.LoadLibrary('/usr/lib/libsndfile.so') )
>
> * EXAMPLE USAGE
>
>    == Reading example ==
>
>    # Reading from '/home/david/blop.flac'
>    from scipy.sandbox.pyaudio import sndfile
>
>    a = sndfile('/home/david/blop.flac')
>    print a
>
>    tmp = a.read_frames_float(1024)
>
>    --> Prints:
>
>    File        : /home/david/blop.flac
>    Sample rate : 44100
>    Channels    : 2
>    Frames      : 9979776
>    Format      : 0x00170002
>    Sections    : 1
>    Seekable    : True
>    Duration    : 00:03:46.298
>
>    And put into tmp the 1024 first frames (a frame is the equivalent of 
> a sample, but taking into account the number of channels: so 1024 frames 
> gives you 2048 samples here).
>
>    == Writing example ==
>    # Writing to a wavfile:
>    from scipy.sandbox.pyaudio import sndfile
>    import numpy as N
>
>    noise     = N.random.randn((44100))
>    a         = sndfile('/home/david/blop.flac', sfm['SFM_WRITE'], 
> sf_format['SF_FORMAT_WAV'] | sf_format['SF_FORMAT_PCM16'],
>        1, 44100)
>
>    a.write_frames(noise, 44100)
>    a.close()
>
>    -> should gives you a lossless compressed white noise !
>
>    This is really a first release, not really tested, not much 
> documentation, I can just say it works for me. I haven't found a good 
> way to emulate enumerations, which libsndfile uses a lot, so I am using 
> dictionaries generated from the library C header to get a relation enum 
> label <=> value. If someone has a better idea, I am open to suggestions !
>
>    Cheers,
>
>    David
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>   


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642




More information about the NumPy-Discussion mailing list