diff options
Diffstat (limited to 'arch_src/pyalsaaudio-0.2/recordtest.py')
-rw-r--r-- | arch_src/pyalsaaudio-0.2/recordtest.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch_src/pyalsaaudio-0.2/recordtest.py b/arch_src/pyalsaaudio-0.2/recordtest.py new file mode 100644 index 0000000..216d627 --- /dev/null +++ b/arch_src/pyalsaaudio-0.2/recordtest.py @@ -0,0 +1,45 @@ +## recordtest.py +## +## This is an example of a simple sound capture script. +## +## The script opens an ALSA pcm forsound capture. Set +## various attributes of the capture, and reads in a loop, +## writing the data to standard out. +## +## To test it out do the following: +## python recordtest.py > out.raw # talk to the microphone +## aplay -r 8000 -f S16_LE -c 1 out.raw + +import alsaaudio +import sys +import time + +# Open the device in nonblocking capture mode. The last argument could +# just as well have been zero for blocking mode. Then we could have +# left out the sleep call in the bottom of the loop +inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE,alsaaudio.PCM_NONBLOCK) + +# Set attributes: Mono, 8000 Hz, 16 bit little endian samples +inp.setchannels(1) +inp.setrate(8000) +inp.setformat(alsaaudio.PCM_FORMAT_S16_LE) + +# The period size controls the internal number of frames per period. +# The significance of this parameter is documented in the ALSA api. +# For our purposes, it is suficcient to know that reads from the device +# will return this many frames. Each frame being 2 bytes long. +# This means that the reads below will return either 320 bytes of data +# or 0 bytes of data. The latter is possible because we are in nonblocking +# mode. +inp.setperiodsize(160) + +loops = 1000000 +while loops > 0: + loops -= 1 + # Read data from device + l,data = inp.read() + + if l: + # actual data read. Write it to stdout + sys.stdout.write(data) + time.sleep(.001) |