Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/arch_src/pyalsaaudio-0.2
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2009-02-20 22:38:56 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2009-02-20 22:38:56 (GMT)
commit70f428f7fee28b1876e905de4c6336ec012f1740 (patch)
tree6fbdf0e6f55d67c5b2dc70a4847047cf7bd83202 /arch_src/pyalsaaudio-0.2
parentdb97cad43c010ce5a1e008cd4c3b5a7f7de47bf1 (diff)
adjustment to pt svgs
Diffstat (limited to 'arch_src/pyalsaaudio-0.2')
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/README.txt2
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/dir-wcprops5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/empty-file0
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/entries101
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/format1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/README.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/TODO.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/alsaaudio.c.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/playbacktest.py.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/recordtest.py.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/prop-base/setup.py.svn-base1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/README.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/TODO.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/alsaaudio.c.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/playbacktest.py.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/recordtest.py.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/props/setup.py.svn-work1
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/CHANGES.svn-base8
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/LICENSE.svn-base54
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/README.svn-base55
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/TODO.svn-base3
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/alsaaudio.c.svn-base1013
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/mixertest.py.svn-base88
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/playbacktest.py.svn-base36
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/recordtest.py.svn-base45
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/text-base/setup.py.svn-base14
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/CHANGES.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/LICENSE.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/README.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/TODO.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/alsaaudio.c.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/mixertest.py.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/playbacktest.py.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/recordtest.py.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/.svn/wcprops/setup.py.svn-work5
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/changelog44
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/compat1
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/control16
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/copyright67
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/docs33
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/examples4
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/pycompat1
-rwxr-xr-xarch_src/pyalsaaudio-0.2/debian/rules55
-rw-r--r--arch_src/pyalsaaudio-0.2/debian/watch2
44 files changed, 0 insertions, 1705 deletions
diff --git a/arch_src/pyalsaaudio-0.2/.svn/README.txt b/arch_src/pyalsaaudio-0.2/.svn/README.txt
deleted file mode 100644
index 271a8ce..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a Subversion working copy administrative directory.
-Visit http://subversion.tigris.org/ for more information.
diff --git a/arch_src/pyalsaaudio-0.2/.svn/dir-wcprops b/arch_src/pyalsaaudio-0.2/.svn/dir-wcprops
deleted file mode 100644
index 3a0f0d0..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/dir-wcprops
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/Shtoom/!svn/ver/1322/trunk/audio/pyalsaaudio
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/empty-file b/arch_src/pyalsaaudio-0.2/.svn/empty-file
deleted file mode 100644
index e69de29..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/empty-file
+++ /dev/null
diff --git a/arch_src/pyalsaaudio-0.2/.svn/entries b/arch_src/pyalsaaudio-0.2/.svn/entries
deleted file mode 100644
index d3f4356..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/entries
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wc-entries
- xmlns="svn:">
-<entry
- committed-rev="1322"
- name=""
- committed-date="2005-03-30T20:44:55.828503Z"
- url="http://casperr@divmod.org/svn/Shtoom/trunk/audio/pyalsaaudio"
- last-author="casper"
- kind="dir"
- uuid="0b994b0e-dcd6-0310-80a8-c5aa5be65e87"
- revision="1584"/>
-<entry
- committed-rev="1585"
- name="LICENSE"
- text-time="2005-07-09T21:02:54.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="1a3b161aa0fcec32a0c8907a2219ad9d"
- last-author="casper"
- kind="file"
- revision="1585"/>
-<entry
- committed-rev="1585"
- name="alsaaudio.c"
- text-time="2005-07-07T13:49:38.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="e72939bb5f268025aff2154d77b96201"
- last-author="casper"
- kind="file"
- prop-time="2005-03-30T19:37:29.000000Z"
- revision="1585"/>
-<entry
- committed-rev="1585"
- name="TODO"
- text-time="2005-07-09T21:13:24.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="4bda164e9f66fbab7b8c102ef5dbcdca"
- last-author="casper"
- kind="file"
- prop-time="2004-10-05T08:43:24.000000Z"
- revision="1585"/>
-<entry
- committed-rev="1585"
- name="recordtest.py"
- text-time="2005-07-09T20:46:17.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="36fd98bef1a4e935dfd404f8896cbc80"
- last-author="casper"
- kind="file"
- prop-time="2004-10-05T08:43:24.000000Z"
- revision="1585"/>
-<entry
- name="doc"
- kind="dir"/>
-<entry
- committed-rev="820"
- name="setup.py"
- text-time="2005-07-07T13:49:38.000000Z"
- committed-date="2004-10-04T13:28:33.537193Z"
- checksum="3a808cedfedf7ee095bf912c4a9dc0c9"
- last-author="anthony"
- kind="file"
- prop-time="2004-10-05T08:43:24.000000Z"/>
-<entry
- committed-rev="1585"
- name="CHANGES"
- text-time="2005-07-09T21:10:57.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="6018069ddf6e383385a283cf25218c1f"
- last-author="casper"
- kind="file"
- revision="1585"/>
-<entry
- committed-rev="835"
- name="mixertest.py"
- text-time="2005-07-07T13:49:38.000000Z"
- committed-date="2004-10-05T21:43:58.007506Z"
- checksum="a7c859a05658506b14bbdb3367c2f490"
- last-author="casper"
- kind="file"/>
-<entry
- committed-rev="1585"
- name="playbacktest.py"
- text-time="2005-07-09T21:23:10.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="9e47bb9e5f3a0d7a00d23f82fce377be"
- last-author="casper"
- kind="file"
- prop-time="2004-10-05T08:43:24.000000Z"
- revision="1585"/>
-<entry
- committed-rev="1585"
- name="README"
- text-time="2005-07-09T21:20:32.000000Z"
- committed-date="2005-07-09T21:26:15.500773Z"
- checksum="2a402227ae1fb28f39d59f143df562dc"
- last-author="casper"
- kind="file"
- prop-time="2004-10-05T08:43:24.000000Z"
- revision="1585"/>
-</wc-entries>
diff --git a/arch_src/pyalsaaudio-0.2/.svn/format b/arch_src/pyalsaaudio-0.2/.svn/format
deleted file mode 100644
index b8626c4..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/format
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/README.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/README.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/README.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/TODO.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/TODO.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/TODO.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/alsaaudio.c.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/alsaaudio.c.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/alsaaudio.c.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/playbacktest.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/playbacktest.py.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/playbacktest.py.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/recordtest.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/recordtest.py.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/recordtest.py.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/prop-base/setup.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/prop-base/setup.py.svn-base
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/prop-base/setup.py.svn-base
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/README.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/README.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/README.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/TODO.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/TODO.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/TODO.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/alsaaudio.c.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/alsaaudio.c.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/alsaaudio.c.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/playbacktest.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/playbacktest.py.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/playbacktest.py.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/recordtest.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/recordtest.py.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/recordtest.py.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/props/setup.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/props/setup.py.svn-work
deleted file mode 100644
index dce2c1d..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/props/setup.py.svn-work
+++ /dev/null
@@ -1 +0,0 @@
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/CHANGES.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/CHANGES.svn-base
deleted file mode 100644
index 6ce8463..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/CHANGES.svn-base
+++ /dev/null
@@ -1,8 +0,0 @@
-VERSION 0.1
-- Initial version
-
-
-VERSION 0.2
-- Many bugfixes related to playback in particular
-- Module documentation in the doc subdirectory
-
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/LICENSE.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/LICENSE.svn-base
deleted file mode 100644
index 8aa69f7..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/LICENSE.svn-base
+++ /dev/null
@@ -1,54 +0,0 @@
-PyAlsaAudio is released under the same conditions as Python itself.
-The original wording of this license can be found below.
-
-
-PSF LICENSE AGREEMENT FOR PYTHON 2.4
-------------------------------------
-
-1. This LICENSE AGREEMENT is between the Python Software Foundation
-("PSF"), and the Individual or Organization ("Licensee") accessing and
-otherwise using Python 2.4 software in source or binary form and its
-associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, PSF
-hereby grants Licensee a nonexclusive, royalty-free, world-wide
-license to reproduce, analyze, test, perform and/or display publicly,
-prepare derivative works, distribute, and otherwise use Python 2.4
-alone or in any derivative version, provided, however, that PSF's
-License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
-2001, 2002, 2003, 2004 Python Software Foundation; All Rights Reserved"
-are retained in Python 2.4 alone or in any derivative version prepared
-by Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python 2.4 or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python 2.4.
-
-4. PSF is making Python 2.4 available to Licensee on an "AS IS"
-basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.4 WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-2.4 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.4,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any
-relationship of agency, partnership, or joint venture between PSF and
-Licensee. This License Agreement does not grant permission to use PSF
-trademarks or trade name in a trademark sense to endorse or promote
-products or services of Licensee, or any third party.
-
-8. By copying, installing or otherwise using Python 2.4, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
-
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/README.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/README.svn-base
deleted file mode 100644
index 179cb79..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/README.svn-base
+++ /dev/null
@@ -1,55 +0,0 @@
-PyAlsaAudio
-===========
-
-Author: Casper Wilstrup (cwi@unispeed.dk)
-
-This package contains wrappers for accessing the ALSA api from Python. It
-is currently fairly complete for PCM devices. My next goal is to have
-complete mixer supports as well. MIDI sequencer support is low on my
-priority list, but volunteers are welcome.
-
-If you find bugs in the wrappers please notify me on email. Please
-don't send bug reports regarding ALSA specifically. There are several
-bugs in this api, and those should be reported to the ALSA team - not
-me.
-
-This software is licensed under the PSF license - the same one used
-by the majority of the python distribution. Basically you can use it
-for anything you wish (even commercial purposes). There is no warranty
-whatsoever.
-
-
-Installation
-============
-
-Note: the wrappers link with the alsasound library alsa (from the alsa-lib
-package). Verify that this is installed by looking for /usr/lib/libasound.so
-before building. The libasound development files are also neccesary. On debian
-and derivatives, this is achieved by installing the alsalib-dev package.
-
-Naturally you also need to use a kernel with proper ALSA
-support. This is the default in Linux kernel 2.6 and later. If you are using
-kernel version 2.4 you may need to install the ALSA patches yourself - although
-most distributions ship with ALSA kernels.
-
-To install, execute the following:
- $ python setup.py build
-
-And then as root:
- # python setup.py install
-
-
-Using the API
-=============
-There is a reasonably usefull API documentation included in the module
-documentation, which can be found in the doc subdirectory of the source
-distribution.
-
-There are also three example programs included with the source:
-'playbacktest.py' which plays back raw sound data read from
-stdin
-
-'recordtest.py' which captures sound from the microphone at writes
-it raw to stdout.
-
-'mixertest.py' which can be used to manipulate the mixers
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/TODO.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/TODO.svn-base
deleted file mode 100644
index 710a8a3..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/TODO.svn-base
+++ /dev/null
@@ -1,3 +0,0 @@
-- Better example code (aplay,arecord,amixer workalike for example)
-- Implement MIDI/sequencer support.
-
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/alsaaudio.c.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/alsaaudio.c.svn-base
deleted file mode 100644
index 1828148..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/alsaaudio.c.svn-base
+++ /dev/null
@@ -1,1013 +0,0 @@
-/*
- * alsaaudio -- Python interface to ALSA (Advanced Linux Sound Architecture).
- * The standard audio API for Linux since kernel 2.6
- *
- * Contributed by Unispeed A/S (http://www.unispeed.com)
- * Author: Casper Wilstup (cwi@unispeed.dk)
- *
- * License: Python Software Foundation License
- *
- */
-
-#include "Python.h"
-#include <alsa/asoundlib.h>
-#include <stdio.h>
-
-PyDoc_STRVAR(alsaaudio_module_doc,
- "This modules provides support for the ALSA audio API.\n"
- "\n"
- "To control the PCM device, use the PCM class, Mixers\n"
- "are controlled using the Mixer class.\n"
- "\n"
- "The following functions are also provided:\n"
- "mixers() -- Return a list of available mixer names\n"
- );
-
-typedef struct {
- PyObject_HEAD;
- int pcmtype;
- int pcmmode;
- char *cardname;
-
- snd_pcm_t *handle;
-
- // Configurable parameters
- int channels;
- int rate;
- int format;
- snd_pcm_uframes_t periodsize;
- int framesize;
-
-} alsapcm_t;
-
-typedef struct {
- PyObject_HEAD;
-
- /* Mixer identification */
- char *cardname;
- char *controlname;
- int controlid;
-
- /* Capabilities */
- unsigned int volume_cap;
- unsigned int switch_cap;
- unsigned int pchannels;
- unsigned int cchannels;
-
- /* min and max values for playback and capture volumes */
- long pmin;
- long pmax;
- long cmin;
- long cmax;
- snd_mixer_t *handle;
-
-} alsamixer_t;
-
-static PyObject *ALSAAudioError;
-
-
-/******************************************/
-/* PCM object wrapper */
-/******************************************/
-
-static PyTypeObject ALSAPCMType;
-
-static int alsapcm_setup(alsapcm_t *self) {
- int res,dir;
- unsigned int val;
- snd_pcm_uframes_t frames;
- snd_pcm_hw_params_t *hwparams;
-
- if (self->handle) {
- snd_pcm_close(self->handle);
- self->handle = 0;
- }
- res = snd_pcm_open(&(self->handle),self->cardname,self->pcmtype,self->pcmmode);
- if (res < 0) return res;
-
- /* Allocate a hwparam structure, and fill it in with configuration space */
- snd_pcm_hw_params_alloca(&hwparams);
- res = snd_pcm_hw_params_any(self->handle, hwparams);
- if (res < 0) return res;
-
- /* Fill it in with default values. */
- snd_pcm_hw_params_any(self->handle, hwparams);
- snd_pcm_hw_params_set_access(self->handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED);
- snd_pcm_hw_params_set_format(self->handle, hwparams, self->format);
- snd_pcm_hw_params_set_channels(self->handle, hwparams, self->channels);
- dir = 0;
- snd_pcm_hw_params_set_rate(self->handle, hwparams, self->rate, dir);
- snd_pcm_hw_params_set_period_size(self->handle, hwparams, self->periodsize, dir);
- snd_pcm_hw_params_set_periods(self->handle,hwparams,4,0);
-
- /* Write it to the device */
- res = snd_pcm_hw_params(self->handle, hwparams);
- if (res) return res;
-
- /* Query current settings. These may differ from the requested values,
- which should therefore be sync'ed with actual values */
- snd_pcm_hw_params_current(self->handle,hwparams);
-
- snd_pcm_hw_params_get_format(hwparams,&val); self->format = val;
- snd_pcm_hw_params_get_channels(hwparams,&val); self->channels = val;
- snd_pcm_hw_params_get_rate(hwparams,&val,&dir); self->rate = val;
- snd_pcm_hw_params_get_period_size(hwparams,&frames,&dir); self->periodsize = (int) frames;
-
- self->framesize = self->channels * snd_pcm_hw_params_get_sbits(hwparams)/8;
- return res;
-}
-
-static PyObject *
-alsapcm_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
- int res;
- alsapcm_t *self;
- int pcmtype=0;
- int pcmmode=0;
- char *cardname = "default";
- if (!PyArg_ParseTuple(args,"|iis",&pcmtype,&pcmmode,&cardname)) return NULL;
- if (!(self = (alsapcm_t *)PyObject_New(alsapcm_t, &ALSAPCMType))) return NULL;
-
- if (pcmtype != SND_PCM_STREAM_PLAYBACK && pcmtype != SND_PCM_STREAM_CAPTURE) {
- PyErr_SetString(ALSAAudioError, "PCM type must be PCM_PLAYBACK (0) or PCM_CAPTUPE (1)");
- return NULL;
- }
- if (pcmmode < 0 || pcmmode > SND_PCM_ASYNC) {
- PyErr_SetString(ALSAAudioError, "Invalid PCM mode");
- return NULL;
- }
- self->pcmtype = pcmtype;
- self->pcmmode = pcmmode;
- self->cardname = strdup(cardname);
-
- self->channels = 2;
- self->rate = 44100;
- self->format = SND_PCM_FORMAT_S16_LE;
- self->periodsize = 32;
-
- self->handle = 0;
- res = alsapcm_setup(self);
-
- if (res < 0) {
- if (self->handle) {
- snd_pcm_close(self->handle);
- self->handle = 0;
- }
- PyErr_SetString(ALSAAudioError, snd_strerror(res));
- return NULL;
- }
- return (PyObject *)self;
-}
-
-static void alsapcm_dealloc(alsapcm_t *self) {
- if (self->handle) {
- snd_pcm_drain(self->handle);
- snd_pcm_close(self->handle);
- }
- free(self->cardname);
- PyObject_Del(self);
-}
-
-static PyObject *
-alsapcm_dumpinfo(alsapcm_t *self, PyObject *args) {
- unsigned int val,val2;
- int dir;
- snd_pcm_uframes_t frames;
- snd_pcm_hw_params_t *hwparams;
- snd_pcm_hw_params_alloca(&hwparams);
- snd_pcm_hw_params_current(self->handle,hwparams);
-
-
- if (!PyArg_ParseTuple(args,"")) return NULL;
-
- printf("PCM handle name = '%s'\n", snd_pcm_name(self->handle));
- printf("PCM state = %s\n", snd_pcm_state_name(snd_pcm_state(self->handle)));
-
- snd_pcm_hw_params_get_access(hwparams, (snd_pcm_access_t *) &val);
- printf("access type = %s\n", snd_pcm_access_name((snd_pcm_access_t)val));
-
- snd_pcm_hw_params_get_format(hwparams, &val);
- printf("format = '%s' (%s)\n",
- snd_pcm_format_name((snd_pcm_format_t)val),
- snd_pcm_format_description((snd_pcm_format_t)val));
-
- snd_pcm_hw_params_get_subformat(hwparams, (snd_pcm_subformat_t *)&val);
- printf("subformat = '%s' (%s)\n",
- snd_pcm_subformat_name((snd_pcm_subformat_t)val),
- snd_pcm_subformat_description((snd_pcm_subformat_t)val));
-
- snd_pcm_hw_params_get_channels(hwparams, &val);
- printf("channels = %d\n", val);
-
- snd_pcm_hw_params_get_rate(hwparams, &val, &dir);
- printf("rate = %d bps\n", val);
-
- snd_pcm_hw_params_get_period_time(hwparams, &val, &dir);
- printf("period time = %d us\n", val);
-
- snd_pcm_hw_params_get_period_size(hwparams, &frames, &dir);
- printf("period size = %d frames\n", (int)frames);
-
- snd_pcm_hw_params_get_buffer_time(hwparams, &val, &dir);
- printf("buffer time = %d us\n", val);
-
- snd_pcm_hw_params_get_buffer_size(hwparams, (snd_pcm_uframes_t *) &val);
- printf("buffer size = %d frames\n", val);
-
- snd_pcm_hw_params_get_periods(hwparams, &val, &dir);
- printf("periods per buffer = %d frames\n", val);
-
- snd_pcm_hw_params_get_rate_numden(hwparams, &val, &val2);
- printf("exact rate = %d/%d bps\n", val, val2);
-
- val = snd_pcm_hw_params_get_sbits(hwparams);
- printf("significant bits = %d\n", val);
-
- snd_pcm_hw_params_get_tick_time(hwparams, &val, &dir);
- printf("tick time = %d us\n", val);
-
- val = snd_pcm_hw_params_is_batch(hwparams);
- printf("is batch = %d\n", val);
-
- val = snd_pcm_hw_params_is_block_transfer(hwparams);
- printf("is block transfer = %d\n", val);
-
- val = snd_pcm_hw_params_is_double(hwparams);
- printf("is double = %d\n", val);
-
- val = snd_pcm_hw_params_is_half_duplex(hwparams);
- printf("is half duplex = %d\n", val);
-
- val = snd_pcm_hw_params_is_joint_duplex(hwparams);
- printf("is joint duplex = %d\n", val);
-
- val = snd_pcm_hw_params_can_overrange(hwparams);
- printf("can overrange = %d\n", val);
-
- val = snd_pcm_hw_params_can_mmap_sample_resolution(hwparams);
- printf("can mmap = %d\n", val);
-
- val = snd_pcm_hw_params_can_pause(hwparams);
- printf("can pause = %d\n", val);
-
- val = snd_pcm_hw_params_can_resume(hwparams);
- printf("can resume = %d\n", val);
-
- val = snd_pcm_hw_params_can_sync_start(hwparams);
- printf("can sync start = %d\n", val);
-
- Py_INCREF(Py_None);
- return Py_None;
-
-}
-
-static PyObject *
-alsapcm_pcmtype(alsapcm_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyInt_FromLong(self->pcmtype);
-}
-
-static PyObject *
-alsapcm_pcmmode(alsapcm_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyInt_FromLong(self->pcmmode);
-}
-
-static PyObject *
-alsapcm_cardname(alsapcm_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyString_FromString(self->cardname);
-}
-
-static PyObject *
-alsapcm_setchannels(alsapcm_t *self, PyObject *args) {
- int channels;
- int res;
- if (!PyArg_ParseTuple(args,"i",&channels)) return NULL;
- self->channels = channels;
- res = alsapcm_setup(self);
- if (res < 0) {
- PyErr_SetString(ALSAAudioError, snd_strerror(res));
- return NULL;
- }
- return PyInt_FromLong(self->channels);
-}
-
-static PyObject *
-alsapcm_setrate(alsapcm_t *self, PyObject *args) {
- int rate;
- int res;
- if (!PyArg_ParseTuple(args,"i",&rate)) return NULL;
- self->rate = rate;
- res = alsapcm_setup(self);
- if (res < 0) {
- PyErr_SetString(ALSAAudioError, snd_strerror(res));
- return NULL;
- }
- return PyInt_FromLong(self->rate);
-}
-
-static PyObject *
-alsapcm_setformat(alsapcm_t *self, PyObject *args) {
- int format;
- int res;
- if (!PyArg_ParseTuple(args,"i",&format)) return NULL;
- self->format = format;
- res = alsapcm_setup(self);
- if (res < 0) {
- PyErr_SetString(ALSAAudioError, snd_strerror(res));
- return NULL;
- }
- return PyInt_FromLong(self->format);
-}
-
-static PyObject *
-alsapcm_setperiodsize(alsapcm_t *self, PyObject *args) {
- int periodsize;
- int res;
- if (!PyArg_ParseTuple(args,"i",&periodsize)) return NULL;
- self->periodsize = periodsize;
- res = alsapcm_setup(self);
- if (res < 0) {
- PyErr_SetString(ALSAAudioError, snd_strerror(res));
- return NULL;
- }
- return PyInt_FromLong(self->periodsize);
-}
-
-
-static PyObject *
-alsapcm_read(alsapcm_t *self, PyObject *args) {
- int res;
- char buffer[8000];
-
- if (self->framesize * self->periodsize > 8000) {
- PyErr_SetString(ALSAAudioError,"Capture data too large. Try decreasing period size");
- return NULL;
- }
-
- if (!PyArg_ParseTuple(args,"")) return NULL;
- if (self->pcmtype != SND_PCM_STREAM_CAPTURE) {
- PyErr_SetString(ALSAAudioError,"Cannot read from playback PCM");
- return NULL;
- }
-
- res = snd_pcm_readi(self->handle, buffer, self->periodsize);
- if (res == -EPIPE) {
- /* EPIPE means overrun */
- snd_pcm_prepare(self->handle);
- }
- else if (res == -EAGAIN) {
- res = 0;
- }
- else if (res < 0) {
- PyErr_SetString(ALSAAudioError,snd_strerror(res));
- return NULL;
- }
-
- return Py_BuildValue("is#",res,buffer,res*self->framesize);
-}
-
-static PyObject *alsapcm_write(alsapcm_t *self, PyObject *args) {
- char *data;
- int datalen;
- int res;
- if (!PyArg_ParseTuple(args,"s#",&data,&datalen)) return NULL;
- if (datalen%self->framesize) {
- PyErr_SetString(ALSAAudioError,"Data size must be a multiple of framesize");
- return NULL;
- }
- res = snd_pcm_writei(self->handle, data, datalen/self->framesize);
- if (res == -EPIPE) {
- /* EPIPE means underrun */
- snd_pcm_prepare(self->handle);
- snd_pcm_writei(self->handle, data, datalen/self->framesize);
- snd_pcm_writei(self->handle, data, datalen/self->framesize);
- }
- else if (res == -EAGAIN) {
- return PyInt_FromLong(0);
- }
- else if (res < 0) {
- PyErr_SetString(ALSAAudioError,snd_strerror(res));
- return NULL;
- }
- return PyInt_FromLong(res);
-}
-
-
-/* ALSA PCM Object Bureaucracy */
-
-static PyMethodDef alsapcm_methods[] = {
- {"pcmtype", (PyCFunction)alsapcm_pcmtype, METH_VARARGS},
- {"pcmmode", (PyCFunction)alsapcm_pcmmode, METH_VARARGS},
- {"cardname", (PyCFunction)alsapcm_cardname, METH_VARARGS},
- {"setchannels", (PyCFunction)alsapcm_setchannels, METH_VARARGS},
- {"setrate", (PyCFunction)alsapcm_setrate, METH_VARARGS},
- {"setformat", (PyCFunction)alsapcm_setformat, METH_VARARGS},
- {"setperiodsize", (PyCFunction)alsapcm_setperiodsize, METH_VARARGS},
-
- {"dumpinfo", (PyCFunction)alsapcm_dumpinfo, METH_VARARGS},
-
- {"read", (PyCFunction)alsapcm_read, METH_VARARGS},
- {"write", (PyCFunction)alsapcm_write, METH_VARARGS},
-
- {NULL, NULL}
-};
-
-static PyObject *
-alsapcm_getattr(alsapcm_t *self, char *name) {
- return Py_FindMethod(alsapcm_methods, (PyObject *)self, name);
-}
-
-static PyTypeObject ALSAPCMType = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0, /*ob_size*/
- "alsaaudio.pcm", /*tp_name*/
- sizeof(alsapcm_t), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- /* methods */
- (destructor) alsapcm_dealloc, /*tp_dealloc*/
- 0, /*print*/
- (getattrfunc)alsapcm_getattr, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT, /*tp_flags*/
- "ALSA PCM device", /*tp_doc*/
-};
-
-
-/******************************************/
-/* Mixer object wrapper */
-/******************************************/
-
-static PyTypeObject ALSAMixerType;
-
-#define MIXER_CAP_VOLUME 0x0001
-#define MIXER_CAP_VOLUME_JOINED 0x0002
-#define MIXER_CAP_PVOLUME 0x0004
-#define MIXER_CAP_PVOLUME_JOINED 0x0008
-#define MIXER_CAP_CVOLUME 0x0010
-#define MIXER_CAP_CVOLUME_JOINED 0x0020
-
-#define MIXER_CAP_SWITCH 0x0001
-#define MIXER_CAP_SWITCH_JOINED 0x0002
-#define MIXER_CAP_PSWITCH 0x0004
-#define MIXER_CAP_PSWITCH_JOINED 0x0008
-#define MIXER_CAP_CSWITCH 0x0010
-#define MIXER_CAP_CSWITCH_JOINED 0x0020
-#define MIXER_CAP_CSWITCH_EXCLUSIVE 0x0040
-
-#define MIXER_CHANNEL_ALL -1
-
-int
-alsamixer_gethandle(char *cardname, snd_mixer_t **handle) {
- int err;
- if ((err = snd_mixer_open(handle, 0)) < 0) return err;
- if ((err = snd_mixer_attach(*handle, cardname)) < 0) return err;
- if ((err = snd_mixer_selem_register(*handle, NULL, NULL)) < 0) return err;
- if ((err = snd_mixer_load(*handle)) < 0) return err;
-
- return 0;
-}
-
-static PyObject *
-alsamixer_list(PyObject *self, PyObject *args) {
- snd_mixer_t *handle;
- snd_mixer_selem_id_t *sid;
- snd_mixer_elem_t *elem;
- int err;
- char *cardname = "default";
- PyObject *result = PyList_New(0);
-
- if (!PyArg_ParseTuple(args,"|s",&cardname)) return NULL;
-
- snd_mixer_selem_id_alloca(&sid);
- err = alsamixer_gethandle(cardname,&handle);
- if (err < 0) {
- PyErr_SetString(ALSAAudioError,snd_strerror(err));
- snd_mixer_close(handle);
- return NULL;
- }
- for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) {
- PyObject *mixer;
- snd_mixer_selem_get_id(elem, sid);
- mixer = PyString_FromString(snd_mixer_selem_id_get_name(sid));
- PyList_Append(result,mixer);
- Py_DECREF(mixer);
- }
- snd_mixer_close(handle);
-
- return result;
-}
-
-static snd_mixer_elem_t *
-alsamixer_find_elem(snd_mixer_t *handle, char *control, int id) {
- snd_mixer_selem_id_t *sid;
-
- snd_mixer_selem_id_alloca(&sid);
- snd_mixer_selem_id_set_index(sid, id);
- snd_mixer_selem_id_set_name(sid, control);
- return snd_mixer_find_selem(handle, sid);
-}
-
-static PyObject *
-alsamixer_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
- alsamixer_t *self;
- int err;
- char *cardname = "default";
- char *control = "Master";
- int id = 0;
- snd_mixer_elem_t *elem;
- int channel;
-
- if (!PyArg_ParseTuple(args,"|sis",&control,&id,&cardname)) return NULL;
- if (!(self = (alsamixer_t *)PyObject_New(alsamixer_t, &ALSAMixerType))) return NULL;
-
- err = alsamixer_gethandle(cardname,&self->handle);
- if (err<0) {
- PyErr_SetString(ALSAAudioError,snd_strerror(err));
- return NULL;
- }
- self->cardname = strdup(cardname);
- self->controlname = strdup(control);
- self->controlid = id;
-
- elem = alsamixer_find_elem(self->handle,control,id);
- if (!elem) {
- char errtext[128];
- sprintf(errtext,"Unable to find mixer control '%s',%i",self->controlname,self->controlid);
- snd_mixer_close(self->handle);
- PyErr_SetString(ALSAAudioError,errtext);
- return NULL;
- }
- /* Determine mixer capabilities */
- self->volume_cap = self->switch_cap = 0;
- if (snd_mixer_selem_has_common_volume(elem)) {
- self->volume_cap |= MIXER_CAP_VOLUME;
- if (snd_mixer_selem_has_playback_volume_joined(elem)) self->volume_cap |= MIXER_CAP_VOLUME_JOINED;
- }
- else {
- if (snd_mixer_selem_has_playback_volume(elem)) {
- self->volume_cap |= MIXER_CAP_PVOLUME;
- if (snd_mixer_selem_has_playback_volume_joined(elem)) self->volume_cap |= MIXER_CAP_PVOLUME_JOINED;
- }
- if (snd_mixer_selem_has_capture_volume(elem)) {
- self->volume_cap |= MIXER_CAP_CVOLUME;
- if (snd_mixer_selem_has_capture_volume_joined(elem)) self->volume_cap |= MIXER_CAP_CVOLUME_JOINED;
- }
- }
-
- if (snd_mixer_selem_has_common_switch(elem)) {
- self->switch_cap |= MIXER_CAP_SWITCH;
- if (snd_mixer_selem_has_playback_switch_joined(elem)) self->switch_cap |= MIXER_CAP_SWITCH_JOINED;
- }
- else {
- if (snd_mixer_selem_has_playback_switch(elem)) {
- self->switch_cap |= MIXER_CAP_PSWITCH;
- if (snd_mixer_selem_has_playback_switch_joined(elem)) self->switch_cap |= MIXER_CAP_PSWITCH_JOINED;
- }
- if (snd_mixer_selem_has_capture_switch(elem)) {
- self->switch_cap |= MIXER_CAP_CSWITCH;
- if (snd_mixer_selem_has_capture_switch_joined(elem)) self->switch_cap |= MIXER_CAP_CSWITCH_JOINED;
- if (snd_mixer_selem_has_capture_switch_exclusive(elem)) self->switch_cap |= MIXER_CAP_CSWITCH_EXCLUSIVE;
- }
- }
- self->pchannels = 0;
- if (self->volume_cap | MIXER_CAP_PVOLUME || self->switch_cap | MIXER_CAP_PSWITCH) {
- if (snd_mixer_selem_is_playback_mono(elem)) self->pchannels = 1;
- else {
- for (channel=0; channel <= SND_MIXER_SCHN_LAST; channel++) {
- if (snd_mixer_selem_has_playback_channel(elem, channel)) self->pchannels++;
- else break;
- }
- }
- }
- self->cchannels = 0;
- if (self->volume_cap | MIXER_CAP_CVOLUME || self->switch_cap | MIXER_CAP_CSWITCH) {
- if (snd_mixer_selem_is_capture_mono(elem)) self->cchannels = 1;
- else {
- for (channel=0; channel <= SND_MIXER_SCHN_LAST; channel++) {
- if (snd_mixer_selem_has_capture_channel(elem, channel)) self->cchannels++;
- else break;
- }
- }
- }
- snd_mixer_selem_get_playback_volume_range(elem, &self->pmin, &self->pmax);
- snd_mixer_selem_get_capture_volume_range(elem, &self->cmin, &self->cmax);
- return (PyObject *)self;
-}
-
-static void alsamixer_dealloc(alsamixer_t *self) {
- if (self->handle) {
- snd_mixer_close(self->handle);
- free(self->cardname);
- free(self->controlname);
- self->handle = 0;
- }
- PyObject_Del(self);
-}
-
-static PyObject *
-alsamixer_cardname(alsamixer_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyString_FromString(self->cardname);
-}
-
-static PyObject *
-alsamixer_mixer(alsamixer_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyString_FromString(self->controlname);
-}
-
-static PyObject *
-alsamixer_mixerid(alsamixer_t *self, PyObject *args) {
- if (!PyArg_ParseTuple(args,"")) return NULL;
- return PyInt_FromLong(self->controlid);
-}
-
-static PyObject *
-alsamixer_volumecap(alsamixer_t *self, PyObject *args) {
- PyObject *result;
- if (!PyArg_ParseTuple(args,"")) return NULL;
- result = PyList_New(0);
- if (self->volume_cap&MIXER_CAP_VOLUME)
- PyList_Append(result,PyString_FromString("Volume"));
- if (self->volume_cap&MIXER_CAP_VOLUME_JOINED)
- PyList_Append(result,PyString_FromString("Joined Volume"));
- if (self->volume_cap&MIXER_CAP_PVOLUME)
- PyList_Append(result,PyString_FromString("Playback Volume"));
- if (self->volume_cap&MIXER_CAP_PVOLUME_JOINED)
- PyList_Append(result,PyString_FromString("Joined Playback Volume"));
- if (self->volume_cap&MIXER_CAP_CVOLUME)
- PyList_Append(result,PyString_FromString("Capture Volume"));
- if (self->volume_cap&MIXER_CAP_CVOLUME_JOINED)
- PyList_Append(result,PyString_FromString("Joined Capture Volume"));
-
- return result;
-}
-static PyObject *
-alsamixer_switchcap(alsamixer_t *self, PyObject *args) {
- PyObject *result;
- if (!PyArg_ParseTuple(args,"")) return NULL;
- result = PyList_New(0);
- if (self->volume_cap&MIXER_CAP_SWITCH)
- PyList_Append(result,PyString_FromString("Mute"));
- if (self->volume_cap&MIXER_CAP_SWITCH_JOINED)
- PyList_Append(result,PyString_FromString("Joined Mute"));
- if (self->volume_cap&MIXER_CAP_PSWITCH)
- PyList_Append(result,PyString_FromString("Playback Mute"));
- if (self->volume_cap&MIXER_CAP_PSWITCH_JOINED)
- PyList_Append(result,PyString_FromString("Joined Playback Mute"));
- if (self->volume_cap&MIXER_CAP_CSWITCH)
- PyList_Append(result,PyString_FromString("Capture Mute"));
- if (self->volume_cap&MIXER_CAP_CSWITCH_JOINED)
- PyList_Append(result,PyString_FromString("Joined Capture Mute"));
- if (self->volume_cap&MIXER_CAP_CSWITCH_EXCLUSIVE)
- PyList_Append(result,PyString_FromString("Capture Exclusive"));
- return result;
-}
-
-static int alsamixer_getpercentage(long min, long max, long value) {
- /* Convert from number in range to percentage */
- int range = max - min;
- int tmp;
-
- if (range == 0) return 0;
- value -= min;
- tmp = rint((double)value/(double)range * 100);
- return tmp;
-
-}
-
-static long alsamixer_getphysvolume(long min, long max, int percentage) {
- /* Convert from percentage to number in range */
- int range = max - min;
- int tmp;
-
- if (range == 0) return 0;
- tmp = rint((double)range * ((double)percentage*.01)) + min;
- return tmp;
-}
-
-static PyObject *
-alsamixer_getvolume(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int direction;
- int channel;
- long ival;
- char *dirstr = 0;
- PyObject *result;
-
- if (!PyArg_ParseTuple(args,"|s",&dirstr)) return NULL;
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
-
- if (!dirstr) {
- if (self->pchannels) direction = 0;
- else direction = 1;
- }
- else if (strcasecmp(dirstr,"playback")==0) direction = 0;
- else if (strcasecmp(dirstr,"capture")==0) direction = 1;
- else {
- PyErr_SetString(ALSAAudioError,"Invalid direction argument for mixer");
- return NULL;
- }
- result = PyList_New(0);
- for (channel = 0; channel <= SND_MIXER_SCHN_LAST; channel++) {
- if (direction == 0 && snd_mixer_selem_has_playback_channel(elem, channel)) {
- snd_mixer_selem_get_playback_volume(elem, channel, &ival);
- PyList_Append(result,PyInt_FromLong(alsamixer_getpercentage(self->pmin,self->pmax,ival)));
- }
- else if (direction == 1 && snd_mixer_selem_has_capture_channel(elem, channel)
- && snd_mixer_selem_has_capture_volume(elem)) {
- snd_mixer_selem_get_capture_volume(elem, channel, &ival);
- PyList_Append(result,PyInt_FromLong(alsamixer_getpercentage(self->cmin,self->cmax,ival)));
- }
- }
- return result;
-}
-
-static PyObject *
-alsamixer_getmute(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int i;
- int ival;
- PyObject *result;
- if (!PyArg_ParseTuple(args,"")) return NULL;
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
- if (!snd_mixer_selem_has_playback_switch(elem)) {
- PyErr_SetString(ALSAAudioError,"Mixer has no mute switch");
- return NULL;
- }
- result = PyList_New(0);
- for (i = 0; i <= SND_MIXER_SCHN_LAST; i++) {
- if (snd_mixer_selem_has_playback_channel(elem, i)) {
- snd_mixer_selem_get_playback_switch(elem, i, &ival);
- PyList_Append(result,PyInt_FromLong(!ival));
- }
- }
- return result;
-}
-
-static PyObject *
-alsamixer_getrec(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int i;
- int ival;
- PyObject *result;
- if (!PyArg_ParseTuple(args,"")) return NULL;
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
- if (!snd_mixer_selem_has_capture_switch(elem)) {
- PyErr_SetString(ALSAAudioError,"Mixer has no record switch");
- return NULL;
- }
- result = PyList_New(0);
- for (i = 0; i <= SND_MIXER_SCHN_LAST; i++) {
- if (snd_mixer_selem_has_capture_channel(elem, i)) {
- snd_mixer_selem_get_capture_switch(elem, i, &ival);
- PyList_Append(result,PyInt_FromLong(!ival));
- }
- }
- return result;
-}
-
-static PyObject *
-alsamixer_setvolume(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int direction;
- int i;
- long volume;
- int physvolume;
- char *dirstr = 0;
- int channel = MIXER_CHANNEL_ALL;
- int done = 0;
-
- if (!PyArg_ParseTuple(args,"l|is",&volume,&channel,&dirstr)) return NULL;
- if (volume < 0 || volume > 100) {
- PyErr_SetString(ALSAAudioError,"Volume must be between 0 and 100");
- return NULL;
- }
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
-
- if (!dirstr) {
- if (self->pchannels) direction = 0;
- else direction = 1;
- }
- else if (strcasecmp(dirstr,"playback")==0) direction = 0;
- else if (strcasecmp(dirstr,"capture")==0) direction = 1;
- else {
- PyErr_SetString(ALSAAudioError,"Invalid direction argument. Use 'playback' or 'capture'");
- return NULL;
- }
- for (i = 0; i <= SND_MIXER_SCHN_LAST; i++) {
- if (channel == -1 || channel == i) {
- if (direction == 0 && snd_mixer_selem_has_playback_channel(elem, i)) {
- physvolume = alsamixer_getphysvolume(self->pmin,self->pmax,volume);
- snd_mixer_selem_set_playback_volume(elem, i, physvolume);
- done++;
- }
- else if (direction == 1 && snd_mixer_selem_has_capture_channel(elem, channel)
- && snd_mixer_selem_has_capture_volume(elem)) {
- physvolume = alsamixer_getphysvolume(self->cmin,self->cmax,volume);
- snd_mixer_selem_set_capture_volume(elem, i, physvolume);
- done++;
- }
- }
- }
- if(!done) {
- PyErr_SetString(ALSAAudioError,"No such channel");
- return NULL;
- }
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-static PyObject *
-alsamixer_setmute(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int i;
- int mute = 0;
- int done = 0;
- int channel = MIXER_CHANNEL_ALL;
- if (!PyArg_ParseTuple(args,"i|i",&mute,&channel)) return NULL;
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
- if (!snd_mixer_selem_has_playback_switch(elem)) {
- PyErr_SetString(ALSAAudioError,"Mixer has no mute switch");
- return NULL;
- }
- for (i = 0; i <= SND_MIXER_SCHN_LAST; i++) {
- if (channel == MIXER_CHANNEL_ALL || channel == i) {
- if (snd_mixer_selem_has_playback_channel(elem, i)) {
- snd_mixer_selem_set_playback_switch(elem, i, !mute);
- done++;
- }
- }
- }
- if (!done) {
- PyErr_SetString(ALSAAudioError,"Invalid channel number");
- return NULL;
- }
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-static PyObject *
-alsamixer_setrec(alsamixer_t *self, PyObject *args) {
- snd_mixer_elem_t *elem;
- int i;
- int rec = 0;
- int done = 0;
- int channel = MIXER_CHANNEL_ALL;
- if (!PyArg_ParseTuple(args,"i|i",&rec,&channel)) return NULL;
-
- elem = alsamixer_find_elem(self->handle,self->controlname,self->controlid);
- if (!snd_mixer_selem_has_capture_switch(elem)) {
- PyErr_SetString(ALSAAudioError,"Mixer has no record switch");
- return NULL;
- }
- for (i = 0; i <= SND_MIXER_SCHN_LAST; i++) {
- if (channel == MIXER_CHANNEL_ALL || channel == i) {
- if (snd_mixer_selem_has_capture_channel(elem, i)) {
- snd_mixer_selem_set_playback_switch(elem, i, rec);
- done++;
- }
- }
- }
- if (!done) {
- PyErr_SetString(ALSAAudioError,"Invalid channel number");
- return NULL;
- }
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-static PyMethodDef alsamixer_methods[] = {
- {"cardname", (PyCFunction)alsamixer_cardname, METH_VARARGS},
- {"mixer", (PyCFunction)alsamixer_mixer, METH_VARARGS},
- {"mixerid", (PyCFunction)alsamixer_mixerid, METH_VARARGS},
- {"switchcap", (PyCFunction)alsamixer_switchcap, METH_VARARGS},
- {"volumecap", (PyCFunction)alsamixer_volumecap, METH_VARARGS},
- {"getvolume", (PyCFunction)alsamixer_getvolume, METH_VARARGS},
- {"getmute", (PyCFunction)alsamixer_getmute, METH_VARARGS},
- {"getrec", (PyCFunction)alsamixer_getrec, METH_VARARGS},
- {"setvolume", (PyCFunction)alsamixer_setvolume, METH_VARARGS},
- {"setmute", (PyCFunction)alsamixer_setmute, METH_VARARGS},
- {"setrec", (PyCFunction)alsamixer_setrec, METH_VARARGS},
- {NULL, NULL}
-};
-
-
-static PyObject *
-alsamixer_getattr(alsapcm_t *self, char *name) {
- return Py_FindMethod(alsamixer_methods, (PyObject *)self, name);
-}
-
-static PyTypeObject ALSAMixerType = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0, /*ob_size*/
- "alsaaudio.mixer", /*tp_name*/
- sizeof(alsamixer_t), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- /* methods */
- (destructor) alsamixer_dealloc, /*tp_dealloc*/
- 0, /*print*/
- (getattrfunc)alsamixer_getattr, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT, /*tp_flags*/
- "ALSA Mixer Control", /*tp_doc*/
-};
-
-
-/******************************************/
-/* Module initialization */
-/******************************************/
-
-static PyMethodDef alsaaudio_methods[] = {
- { "mixers", alsamixer_list, METH_VARARGS },
- { 0, 0 },
-};
-
-#define _EXPORT_INT(mod, name, value) \
- if (PyModule_AddIntConstant(mod, name, (long) value) == -1) return;
-
-void initalsaaudio(void) {
- PyObject *m;
- ALSAPCMType.tp_new = alsapcm_new;
- ALSAMixerType.tp_new = alsamixer_new;
- m = Py_InitModule3("alsaaudio",alsaaudio_methods,alsaaudio_module_doc);
-
- ALSAAudioError = PyErr_NewException("alsaaudio.ALSAAudioError", NULL, NULL);
- if (ALSAAudioError) {
- /* Each call to PyModule_AddObject decrefs it; compensate: */
-
- Py_INCREF(&ALSAPCMType);
- PyModule_AddObject(m,"PCM",(PyObject *)&ALSAPCMType);
-
- Py_INCREF(&ALSAMixerType);
- PyModule_AddObject(m,"Mixer",(PyObject *)&ALSAMixerType);
-
- Py_INCREF(ALSAAudioError);
- PyModule_AddObject(m, "ALSAAudioError", ALSAAudioError);
- }
-
-
- _EXPORT_INT(m,"PCM_PLAYBACK",SND_PCM_STREAM_PLAYBACK);
- _EXPORT_INT(m,"PCM_CAPTURE",SND_PCM_STREAM_CAPTURE);
-
- _EXPORT_INT(m,"PCM_NORMAL",0);
- _EXPORT_INT(m,"PCM_NONBLOCK",SND_PCM_NONBLOCK);
- _EXPORT_INT(m,"PCM_ASYNC",SND_PCM_ASYNC);
-
- /* PCM Formats */
- _EXPORT_INT(m,"PCM_FORMAT_S8",SND_PCM_FORMAT_S8);
- _EXPORT_INT(m,"PCM_FORMAT_U8",SND_PCM_FORMAT_U8);
- _EXPORT_INT(m,"PCM_FORMAT_S16_LE",SND_PCM_FORMAT_S16_LE);
- _EXPORT_INT(m,"PCM_FORMAT_S16_BE",SND_PCM_FORMAT_S16_BE);
- _EXPORT_INT(m,"PCM_FORMAT_U16_LE",SND_PCM_FORMAT_U16_LE);
- _EXPORT_INT(m,"PCM_FORMAT_U16_BE",SND_PCM_FORMAT_U16_BE);
- _EXPORT_INT(m,"PCM_FORMAT_S24_LE",SND_PCM_FORMAT_S24_LE);
- _EXPORT_INT(m,"PCM_FORMAT_S24_BE",SND_PCM_FORMAT_S24_BE);
- _EXPORT_INT(m,"PCM_FORMAT_U24_LE",SND_PCM_FORMAT_U24_LE);
- _EXPORT_INT(m,"PCM_FORMAT_U24_BE",SND_PCM_FORMAT_U24_BE);
- _EXPORT_INT(m,"PCM_FORMAT_S32_LE",SND_PCM_FORMAT_S32_LE);
- _EXPORT_INT(m,"PCM_FORMAT_S32_BE",SND_PCM_FORMAT_S32_BE);
- _EXPORT_INT(m,"PCM_FORMAT_U32_LE",SND_PCM_FORMAT_U32_LE);
- _EXPORT_INT(m,"PCM_FORMAT_U32_BE",SND_PCM_FORMAT_U32_BE);
- _EXPORT_INT(m,"PCM_FORMAT_FLOAT_LE",SND_PCM_FORMAT_FLOAT_LE);
- _EXPORT_INT(m,"PCM_FORMAT_FLOAT_BE",SND_PCM_FORMAT_FLOAT_BE);
- _EXPORT_INT(m,"PCM_FORMAT_FLOAT64_LE",SND_PCM_FORMAT_FLOAT64_LE);
- _EXPORT_INT(m,"PCM_FORMAT_FLOAT64_BE",SND_PCM_FORMAT_FLOAT64_BE);
- _EXPORT_INT(m,"PCM_FORMAT_MU_LAW",SND_PCM_FORMAT_MU_LAW);
- _EXPORT_INT(m,"PCM_FORMAT_A_LAW",SND_PCM_FORMAT_A_LAW);
- _EXPORT_INT(m,"PCM_FORMAT_IMA_ADPCM",SND_PCM_FORMAT_IMA_ADPCM);
- _EXPORT_INT(m,"PCM_FORMAT_MPEG",SND_PCM_FORMAT_MPEG);
- _EXPORT_INT(m,"PCM_FORMAT_GSM",SND_PCM_FORMAT_GSM);
-
- /* Mixer stuff */
- _EXPORT_INT(m,"MIXER_CHANNEL_ALL",MIXER_CHANNEL_ALL);
-
-}
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/mixertest.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/mixertest.py.svn-base
deleted file mode 100644
index 642ae10..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/mixertest.py.svn-base
+++ /dev/null
@@ -1,88 +0,0 @@
-## mixertest.py
-##
-## This is an example of using the ALSA mixer API
-##
-## The script will set the volume or mute switch of the specified Mixer
-## depending on command line options.
-##
-## Examples:
-## python mixertest.py # list available mixers
-## python mixertest.py Master # show Master mixer settings
-## python mixertest.py Master 80 # set the master volume to 80%
-## python mixertest.py Master 1,90 # set channel 1 volume to 90%
-## python mixertest.py Master mute # mute the master mixer
-## python mixertest.py Master unmute # unmute the master mixer
-
-import alsaaudio
-import sys
-
-if len(sys.argv) == 1:
- # Demonstrates how to read the available mixers
- print "Available mixer controls:"
- for m in alsaaudio.mixers():
- print " '%s'" % m
-
-if len(sys.argv) == 2:
- # Demonstrates how mixer settings are queried.
- name = sys.argv[1]
- try:
- mixer = alsaaudio.Mixer(name)
- except alsaaudio.ALSAAudioError:
- print "No such mixer"
- sys.exit(1)
-
- print "Mixer name: '%s'"%mixer.mixer()
- print "Capabilities",mixer.volumecap()+mixer.switchcap()
- volumes = mixer.getvolume()
- for i in range(len(volumes)):
- print "Channel %i volume: %i%%"%(i,volumes[i])
-
- try:
- mutes = mixer.getmute()
- for i in range(len(mutes)):
- if mutes[i]: print "Channel %i is muted"%i
- except alsaaudio.ALSAAudioError:
- # May not support muting
- pass
-
- try:
- recs = mixer.getrec()
- for i in range(len(recs)):
- if recs[i]: print "Channel %i is recording"%i
- except alsaaudio.ALSAAudioError:
- # May not support recording
- pass
-
-if (len(sys.argv)) == 3:
- # Demonstrates how to set mixer settings
- name = sys.argv[1]
- try:
- mixer = alsaaudio.Mixer(name)
- except alsaaudio.ALSAAudioError:
- print "No such mixer"
- sys.exit(1)
-
- args = sys.argv[2]
- if args in ['mute','unmute']:
- # Mute/unmute the mixer
- if args == 'mute': mixer.setmute(1)
- else: mixer.setmute(0)
- sys.exit(0)
- if args in ['rec','unrec']:
- # Enable/disable recording
- if args == 'rec': mixer.setrec(1)
- else: mixer.setrec(0)
- sys.exit(0)
-
-
- if args.find(',')!=-1:
- channel,volume = map(int,args.split(','))
- else:
- channel = alsaaudio.MIXER_CHANNEL_ALL
- volume = int(args)
- # Set volume for specified channel. MIXER_CHANNEL_ALL means set
- # volume for all channels
- mixer.setvolume(volume,channel)
-
-
-
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/playbacktest.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/playbacktest.py.svn-base
deleted file mode 100644
index 06e0fe9..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/playbacktest.py.svn-base
+++ /dev/null
@@ -1,36 +0,0 @@
-## recordtest.py
-##
-## This is an example of a simple sound playback script.
-##
-## The script opens an ALSA pcm for sound playback. Set
-## various attributes of the device. It then reads data
-## from stdin and writes it to the device.
-##
-## To test it out do the following:
-## python recordtest.py > out.raw # talk to the microphone
-## python playbacktest.py < out.raw
-##
-## If you have Gnome, you could also just test by doing something like:
-## python playbacktest.py < /usr/share/sounds/gnibbles/laughter.wav
-import alsaaudio
-import sys
-import time
-
-# Open the device in playback mode.
-out = alsaaudio.PCM(alsaaudio.PCM_PLAYBACK)
-
-# Set attributes: Mono, 8000 Hz, 16 bit little endian frames
-out.setchannels(1)
-out.setrate(8000)
-out.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.
-out.setperiodsize(160)
-
-loops = 10000
-while loops > 0:
- loops -= 1
- # Read data from stdin
- data = sys.stdin.read(320)
- out.write(data)
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/recordtest.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/recordtest.py.svn-base
deleted file mode 100644
index 216d627..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/recordtest.py.svn-base
+++ /dev/null
@@ -1,45 +0,0 @@
-## 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)
diff --git a/arch_src/pyalsaaudio-0.2/.svn/text-base/setup.py.svn-base b/arch_src/pyalsaaudio-0.2/.svn/text-base/setup.py.svn-base
deleted file mode 100644
index d2534a7..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/text-base/setup.py.svn-base
+++ /dev/null
@@ -1,14 +0,0 @@
-from distutils.core import setup
-from distutils.extension import Extension
-
-setup(
- name = "alsaaudio",
- version = "0.1",
- description = "alsa bindings",
- author = "Casper Wilstrup",
- author_email="cwi@unispeed.com",
- ext_modules=[Extension("alsaaudio",["alsaaudio.c"],libraries=['asound'])
- ]
- )
-
-
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/CHANGES.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/CHANGES.svn-work
deleted file mode 100644
index 6859ec8..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/CHANGES.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/CHANGES
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/LICENSE.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/LICENSE.svn-work
deleted file mode 100644
index ca474ba..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/LICENSE.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/LICENSE
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/README.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/README.svn-work
deleted file mode 100644
index 31f6d9b..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/README.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/README
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/TODO.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/TODO.svn-work
deleted file mode 100644
index 5182281..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/TODO.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/TODO
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/alsaaudio.c.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/alsaaudio.c.svn-work
deleted file mode 100644
index 00079a1..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/alsaaudio.c.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/alsaaudio.c
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/mixertest.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/mixertest.py.svn-work
deleted file mode 100644
index 45321b3..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/mixertest.py.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/Shtoom/!svn/ver/835/trunk/audio/pyalsaaudio/mixertest.py
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/playbacktest.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/playbacktest.py.svn-work
deleted file mode 100644
index 5ca8d71..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/playbacktest.py.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 65
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/playbacktest.py
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/recordtest.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/recordtest.py.svn-work
deleted file mode 100644
index 53db42e..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/recordtest.py.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/Shtoom/!svn/ver/1585/trunk/audio/pyalsaaudio/recordtest.py
-END
diff --git a/arch_src/pyalsaaudio-0.2/.svn/wcprops/setup.py.svn-work b/arch_src/pyalsaaudio-0.2/.svn/wcprops/setup.py.svn-work
deleted file mode 100644
index f428267..0000000
--- a/arch_src/pyalsaaudio-0.2/.svn/wcprops/setup.py.svn-work
+++ /dev/null
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/Shtoom/!svn/ver/820/trunk/audio/pyalsaaudio/setup.py
-END
diff --git a/arch_src/pyalsaaudio-0.2/debian/changelog b/arch_src/pyalsaaudio-0.2/debian/changelog
deleted file mode 100644
index 3d68d40..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/changelog
+++ /dev/null
@@ -1,44 +0,0 @@
-pyalsaaudio (0.2-1ubuntu1) feisty; urgency=low
-
- [ Cesare Tirabassi ]
- * Include documentation in package (LP: #81347)
-
- [ Michael Bienia ]
- * debian/control: Change Maintainer/XSBC-Original-Maintainer field.
-
- -- Michael Bienia <geser@ubuntu.com> Fri, 23 Mar 2007 00:18:10 +0100
-
-pyalsaaudio (0.2-1build1) edgy; urgency=low
-
- * Rebuild to add support for python2.5.
-
- -- Matthias Klose <doko@ubuntu.com> Fri, 8 Sep 2006 18:26:30 +0000
-
-pyalsaaudio (0.2-1) unstable; urgency=low
-
- * New upstream release
- * Add a watch file
- * Use debian/examples and debian/docs
- * Merge changelog with ubuntu
- * Add myself to uploaders field
- * Upload to debian (closes: #382796)
-
- -- Paul Brossier <piem@debian.org> Sun, 13 Aug 2006 17:08:01 +0200
-
-pyalsaaudio (0.1-1) unstable; urgency=low
-
- * Initial release.
-
- -- Florian Ragwitz <rafl@debian.org> Wed, 9 Aug 2006 00:18:33 +0200
-
-pyalsaaudio (0.1-1ubuntu1) hoary; urgency=low
-
- * Upload to hoary with python2.4 support
-
- -- Thom May <thom@ubuntu.com> Sat, 29 Jan 2005 12:47:04 +0000
-
-pyalsaaudio (0.1-1) unstable; urgency=low
-
- * First upload.
-
- -- Thom May <thom@debian.org> Fri, 07 Jan 2005 19:19:49 +0000
diff --git a/arch_src/pyalsaaudio-0.2/debian/compat b/arch_src/pyalsaaudio-0.2/debian/compat
deleted file mode 100644
index 7ed6ff8..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/arch_src/pyalsaaudio-0.2/debian/control b/arch_src/pyalsaaudio-0.2/debian/control
deleted file mode 100644
index 4472b72..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/control
+++ /dev/null
@@ -1,16 +0,0 @@
-Source: pyalsaaudio
-Section: sound
-Priority: optional
-Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
-XSBC-Original-Maintainer: Florian Ragwitz <rafl@debian.org>
-Uploaders: Paul Brossier <piem@debian.org>
-Build-Depends: debhelper (>= 5.0.37.2), python-all-dev (>= 2.3.5-11), python-support (>= 0.3), libasound2-dev
-XS-Python-Version: all
-Standards-Version: 3.7.2
-
-Package: python-alsaaudio
-Architecture: any
-Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends}
-XB-Python-Version: ${python:Versions}
-Description: Alsa bindings for Python
- The PyAlsaAudio package contains bindings for the ALSA sound api.
diff --git a/arch_src/pyalsaaudio-0.2/debian/copyright b/arch_src/pyalsaaudio-0.2/debian/copyright
deleted file mode 100644
index d4459e9..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/copyright
+++ /dev/null
@@ -1,67 +0,0 @@
-This package was first debianized by Thom May <thom@debian.org> on Fri, 07 Jan
-2005 19:19:49 +0000.
-
-This package was refactored to the new python policy by Florian Ragwitz
-<rafl@debian.org> on Wed, 09 Aug 2006 01:00:49 +0200.
-
-Copyright holder: Casper Wilstrup <cwi@unispeed.dk>
-
-Upstream author: Casper Wilstrup <cwi@unispeed.dk>
-
-License:
-
-From the README:
-This software is licensed under the PSF license - the same one used
-by the majority of the python distribution. Basically you can use it
-for anything you wish (even commercial purposes). There is no warranty
-whatsoever.
-
-PSF LICENSE AGREEMENT FOR PYTHON 2.3
-------------------------------------
-
-1. This LICENSE AGREEMENT is between the Python Software Foundation
-("PSF"), and the Individual or Organization ("Licensee") accessing and
-otherwise using Python 2.3 software in source or binary form and its
-associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, PSF
-hereby grants Licensee a nonexclusive, royalty-free, world-wide
-license to reproduce, analyze, test, perform and/or display publicly,
-prepare derivative works, distribute, and otherwise use Python 2.3
-alone or in any derivative version, provided, however, that PSF's
-License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
-2001, 2002 Python Software Foundation; All Rights Reserved" are
-retained in Python 2.3 alone or in any derivative version prepared by
-Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python 2.3 or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python 2.3.
-
-4. PSF is making Python 2.3 available to Licensee on an "AS IS"
-basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.3 WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-2.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any
-relationship of agency, partnership, or joint venture between PSF and
-Licensee. This License Agreement does not grant permission to use PSF
-trademarks or trade name in a trademark sense to endorse or promote
-products or services of Licensee, or any third party.
-
-8. By copying, installing or otherwise using Python 2.3, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
diff --git a/arch_src/pyalsaaudio-0.2/debian/docs b/arch_src/pyalsaaudio-0.2/debian/docs
deleted file mode 100644
index dc83c22..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/docs
+++ /dev/null
@@ -1,33 +0,0 @@
-README
-TODO
-doc/about.html
-doc/blank.gif
-doc/blank.png
-doc/contents.gif
-doc/contents.html
-doc/contents.png
-doc/front.html
-doc/index.dat
-doc/index.gif
-doc/index.html
-doc/index.png
-doc/mixer-objects.html
-doc/module-alsaaudio.html
-doc/modules.gif
-doc/modules.png
-doc/next.gif
-doc/next.png
-doc/node3.html
-doc/node4.html
-doc/node5.html
-doc/node7.html
-doc/pcm-example.html
-doc/pcm-objects.html
-doc/previous.gif
-doc/previous.png
-doc/pyalsaaudio.css
-doc/pyalsaaudio.html
-doc/pyfav.gif
-doc/pyfav.png
-doc/up.gif
-doc/up.png
diff --git a/arch_src/pyalsaaudio-0.2/debian/examples b/arch_src/pyalsaaudio-0.2/debian/examples
deleted file mode 100644
index 2cc55bb..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/examples
+++ /dev/null
@@ -1,4 +0,0 @@
-mixertest.py
-playbacktest.py
-recordtest.py
-test.py
diff --git a/arch_src/pyalsaaudio-0.2/debian/pycompat b/arch_src/pyalsaaudio-0.2/debian/pycompat
deleted file mode 100644
index 0cfbf08..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/pycompat
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/arch_src/pyalsaaudio-0.2/debian/rules b/arch_src/pyalsaaudio-0.2/debian/rules
deleted file mode 100755
index e7c42c8..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/rules
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /usr/bin/make -f
-
-PYDEF=$(shell pyversions -d)
-PYVERS=$(shell pyversions -r)
-
-build: build-stamp
-build-stamp:
- dh_testdir
- set -e; \
- for python in $(PYVERS); do \
- python=$$(echo $$python | sed "s/$(PYDEF)/python/"); \
- $$python setup.py build; \
- done
- touch build-stamp
-
-clean:
- dh_testdir
- for python in $(PYVERS); do \
- python=$$(echo $$python | sed "s/$(PYDEF)/python/"); \
- $$python setup.py clean; \
- done
- rm -rf build build-stamp
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- set -e; \
- for python in $(PYVERS); do \
- python=$$(echo $$python | sed "s/$(PYDEF)/python/"); \
- $$python setup.py install --root=$(CURDIR)/debian/python-alsaaudio --no-compile; \
- done
-
-binary-indep: build install
- # nothing to do here
-
-binary-arch: build install
- dh_testdir
- dh_testroot
- dh_installdocs
- dh_installchangelogs
- dh_installexamples
- dh_strip
- dh_compress
- dh_fixperms
- dh_pysupport
- dh_python
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-arch binary-indep
diff --git a/arch_src/pyalsaaudio-0.2/debian/watch b/arch_src/pyalsaaudio-0.2/debian/watch
deleted file mode 100644
index 63fdc1d..0000000
--- a/arch_src/pyalsaaudio-0.2/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://sf.net/pyalsaaudio/pyalsaaudio-(.*)\.tgz debian uupdate