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