Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/arch_src/pyalsaaudio-0.2/recordtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'arch_src/pyalsaaudio-0.2/recordtest.py')
-rw-r--r--arch_src/pyalsaaudio-0.2/recordtest.py45
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)