Compare commits
9 Commits
Author | SHA1 | Date |
---|---|---|
Hubert Pham | a88f867130 | |
Hubert Pham | d89fe5a9ae | |
Hubert Pham | 09fdc77f3a | |
Hubert Pham | d1040e9636 | |
Hubert Pham | a956fd1974 | |
Hubert Pham | 9a4ca96592 | |
Hubert Pham | 7b88f611dd | |
Hubert Pham | 6966b35cea | |
Hubert Pham | c7468753fe |
48
CHANGELOG
48
CHANGELOG
|
@ -1,50 +1,3 @@
|
|||
2017-03-18 Hubert Pham <hubert@mit.edu>
|
||||
|
||||
PyAudio 0.2.11
|
||||
|
||||
- Fix use-after-free memory issue in callback handler.
|
||||
|
||||
Thanks to both Blaise Potard and Matthias Schaff for their patches!
|
||||
|
||||
- Fix docstring for get_output_latency().
|
||||
|
||||
Thanks to Timothy Port for finding the issue!
|
||||
|
||||
2017-01-10 Hubert Pham <hubert@mit.edu>
|
||||
|
||||
PyAudio 0.2.10
|
||||
|
||||
- Release the GIL during PortAudio I/O calls to avoid potential deadlock.
|
||||
|
||||
Thanks to Michael Graczyk for submitting a patch!
|
||||
|
||||
- Add a few automated unit tests.
|
||||
|
||||
2015-10-18 Hubert Pham <hubert@mit.edu>
|
||||
|
||||
PyAudio 0.2.9
|
||||
|
||||
- Fix overflow error handling logic for pa_read_stream.
|
||||
|
||||
Stream.read takes an additional parameter that specifies whether
|
||||
an exception is raised on audio buffer overflow, for parity with
|
||||
Stream.write. Includes relevant bug fixes in the C module logic.
|
||||
|
||||
Thanks to Tony Jacobson for submitting a patch!
|
||||
|
||||
- Fix IOError arguments.
|
||||
|
||||
IOError exceptions previously had values in the strerror and errno fields
|
||||
swapped, which is now corrected.
|
||||
|
||||
Thanks to Sami Liedes for the report!
|
||||
|
||||
- Miscellaneous updates.
|
||||
|
||||
Python library surfaces issues with importing low-level C module.
|
||||
Code formatting update.
|
||||
Updates to examples for Python 3 compatibility.
|
||||
|
||||
2014-02-16 Hubert Pham <hubert@mit.edu>
|
||||
|
||||
PyAudio 0.2.8
|
||||
|
@ -143,3 +96,4 @@
|
|||
2008-02-12 Justin Mazzola Paluska <jmp@mit.edu>
|
||||
|
||||
- Initial version of debian packaging.
|
||||
|
||||
|
|
96
INSTALL
96
INSTALL
|
@ -8,83 +8,81 @@ platforms:
|
|||
* General UNIX Guide: (GNU/Linux, Mac OS X, Cygwin)
|
||||
* Microsoft Windows (native)
|
||||
|
||||
Generally speaking, installation involves building the PortAudio v19
|
||||
library and then building PyAudio.
|
||||
Generally speaking, you must first install the PortAudio v19 library
|
||||
before building PyAudio.
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
General UNIX Guide (GNU/Linux, Mac OS X, Cygwin)
|
||||
----------------------------------------------------------------------
|
||||
|
||||
1. Use a package manager to install PortAudio v19.
|
||||
|
||||
To build PortAudio from source instead, extract the source and run:
|
||||
1. Build and install PortAudio, i.e.:
|
||||
|
||||
% ./configure
|
||||
% make
|
||||
% make install # you may need to be root
|
||||
|
||||
2. Extract PyAudio. To build and install, run:
|
||||
(Or better yet, use your package manager to install PortAudio v19)
|
||||
|
||||
2. Extract PyAudio; to build and install, run:
|
||||
|
||||
% python setup.py install
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Microsoft Windows
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Targeting native Win32 Python will require either Microsoft Visual
|
||||
Studio or MinGW (via Cygwin). Here are compilation hints for using
|
||||
MinGW under the Cygwin build environment.
|
||||
If you are targeting native Win32 Python, you will need either
|
||||
Microsoft Visual Studio or MinGW (via Cygwin). Here are compilation
|
||||
hints for using MinGW under the Cygwin build environment.
|
||||
|
||||
Note: I've only tested this under Cygwin's build environment. Your
|
||||
mileage may vary in other environments (i.e., compiling PortAudio with
|
||||
MinGW's compiler).
|
||||
MinGW's compiler and environment).
|
||||
|
||||
1. Install cygwin's gcc and mingw packages.
|
||||
(If you have instructions for building PyAudio using Visual Studio,
|
||||
I'd love to hear about it.)
|
||||
|
||||
2. Download PortAudio and build. When running configure, be sure to
|
||||
specify the MinGW compiler (via a CC environment variable) to
|
||||
generate native Win32 binaries:
|
||||
1. Download PortAudio to ./portaudio-v19 in this directory
|
||||
and build. When running configure, be sure to use ``-mno-cygwin``
|
||||
(under cygwin) to generate native Win32 binaries:
|
||||
|
||||
% CC=i686-w64-mingw32-gcc ./configure --enable-static --with-pic
|
||||
% make
|
||||
% cd ./portaudio-v19
|
||||
% CFLAGS="-mno-cygwin" LDFLAGS="-mno-cygwin" ./configure
|
||||
% make
|
||||
% cd ..
|
||||
|
||||
3. Before building PyAudio, apply a few necessary modifications:
|
||||
2. To build PyAudio, run (from this directory):
|
||||
|
||||
a. Python distutils calls ``gcc'' to build the C extension, so
|
||||
temporarily move your MinGW compiler to /usr/bin/gcc.
|
||||
|
||||
b. Modify Python's Lib/distutils/cygwincompiler.py so that
|
||||
mscvr900.dll is not included in the build. See:
|
||||
http://bugs.python.org/issue16472.
|
||||
|
||||
Both Python 2.7 and Python 3+ require similar modification.
|
||||
|
||||
c. For some versions of Python (e.g., Python 2.7 32-bit), it is
|
||||
necessary to further modify Python's
|
||||
Lib/distutils/cygwincompiler.py and remove references to
|
||||
-cmingw32, a flag which is no longer supported.
|
||||
See http://hg.python.org/cpython/rev/6b89176f1be5/.
|
||||
|
||||
d. For some versions of 64-bit Python 3 (e.g., Python 3.2, 3.3, 3.4),
|
||||
it is necessary to generate .a archive of the Python DLL.
|
||||
See https://bugs.python.org/issue20785. Example for Python 3.4:
|
||||
|
||||
% cd /path/to/Python34-x64/libs/
|
||||
% gendef /path/to/Windows/System32/python34.dll
|
||||
% dlltool --as-flags=--64 -m i386:x64-64 -k --output-lib libpython34.a \
|
||||
--input-def python34.def
|
||||
|
||||
4. To build PyAudio, run:
|
||||
|
||||
% PORTAUDIO_PATH=/path/to/portaudio_tree /path/to/win/python \
|
||||
setup.py build --static-link -cmingw32
|
||||
% python setup.py build --static-link -cmingw32
|
||||
|
||||
Be sure to invoke the native Win32 python rather than cygwin's
|
||||
python. The --static-link option statically links in the PortAudio
|
||||
library to the PyAudio module.
|
||||
library to the PyAudio module, which is probably the best way to go
|
||||
on Windows.
|
||||
|
||||
5. To install PyAudio:
|
||||
From: http://boodebr.org/main/python/build-windows-extensions
|
||||
|
||||
% python setup.py install --skip-build
|
||||
Update: 2008-09-10
|
||||
|
||||
Or create a Python wheel and install using pip.
|
||||
Recent versions of Cygwin binutils have version numbers that are
|
||||
breaking the version number parsing, resulting in errors like:
|
||||
ValueError: invalid version number '2.18.50.20080625'
|
||||
|
||||
To fix this, edit distutils/version.py. At line 100, replace:
|
||||
|
||||
version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$',
|
||||
re.VERBOSE)
|
||||
|
||||
with
|
||||
|
||||
version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? (\. (\d+))?$',
|
||||
re.VERBOSE)
|
||||
|
||||
3. To install PyAudio:
|
||||
|
||||
% python setup.py install --skip-build
|
||||
|
||||
The --skip-build option prevents Python from searching your system
|
||||
for Visual Studio and the .NET framework.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
include src/*.c src/*.h src/*.py
|
||||
include Makefile CHANGELOG INSTALL MANIFEST.in
|
||||
recursive-include examples *.py
|
||||
recursive-include tests *.py
|
||||
recursive-include test *.py *.c
|
||||
graft docs
|
||||
graft sphinx
|
||||
|
|
9
Makefile
9
Makefile
|
@ -2,7 +2,7 @@
|
|||
|
||||
.PHONY: docs clean build
|
||||
|
||||
VERSION := 0.2.11
|
||||
VERSION := 0.2.8
|
||||
PYTHON ?= python
|
||||
BUILD_ARGS ?=
|
||||
SPHINX ?= sphinx-build
|
||||
|
@ -11,8 +11,7 @@ PYTHON_BUILD_DIR:=$(shell $(PYTHON) -c "import distutils.util; import sys; print
|
|||
BUILD_DIR:=lib.$(PYTHON_BUILD_DIR)
|
||||
BUILD_STAMP:=$(BUILD_DIR)/build
|
||||
SRCFILES := src/*.c src/*.h src/*.py
|
||||
EXAMPLES := examples/*.py
|
||||
TESTS := tests/*.py
|
||||
EXAMPLES := test/*.py
|
||||
|
||||
what:
|
||||
@echo "make targets:"
|
||||
|
@ -44,5 +43,7 @@ docs: build
|
|||
######################################################################
|
||||
# Source Tarball
|
||||
######################################################################
|
||||
tarball: $(SRCFILES) $(EXAMPLES) $(TESTS) MANIFEST.in
|
||||
tarball: docs $(SRCFILES) $(EXAMPLES) MANIFEST.in
|
||||
@$(PYTHON) setup.py sdist
|
||||
|
||||
include bdist.mk
|
||||
|
|
5
README
5
README
|
@ -1,5 +1,5 @@
|
|||
======================================================================
|
||||
PyAudio v0.2.12: Python Bindings for PortAudio.
|
||||
PyAudio v0.2.8: Python Bindings for PortAudio.
|
||||
======================================================================
|
||||
|
||||
See: http://people.csail.mit.edu/hubert/pyaudio/
|
||||
|
@ -14,7 +14,7 @@ See INSTALL for compilation hints.
|
|||
|
||||
PyAudio : Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006 Hubert Pham
|
||||
Copyright (c) 2006-2014 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
@ -36,3 +36,4 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
======================================================================
|
||||
|
||||
|
|
|
@ -0,0 +1,208 @@
|
|||
distclean: clean
|
||||
@rm -rf $(PYAUDIODIR)/PyAudio.egg-info
|
||||
|
||||
######################################################################
|
||||
# Binary Distribution
|
||||
######################################################################
|
||||
|
||||
PYAUDIODIR := src
|
||||
BUILDDIR := build
|
||||
DISTDIR := dist
|
||||
PACKAGINGDIR := packaging
|
||||
OUTPUT := $(DISTDIR)
|
||||
PORTAUDIODIR ?= portaudio-v19
|
||||
|
||||
SRCFILES = $(addprefix $(PYAUDIODIR)/,\
|
||||
_portaudiomodule.c \
|
||||
_portaudiomodule.h \
|
||||
pyaudio.py) \
|
||||
setup.py
|
||||
|
||||
# windows / mingw
|
||||
|
||||
WIN32_PYTHON26 := /cygdrive/c/Python26/python.exe
|
||||
WIN32_PYTHON27 := /cygdrive/c/Python27/python.exe
|
||||
WIN32_PYTHON32 := /cygdrive/c/Python32/python.exe
|
||||
WIN32_PYTHON33 := /cygdrive/c/Python33/python.exe
|
||||
|
||||
# distribution output:
|
||||
WIN32_PKG := PyAudio-$(VERSION).win32.exe
|
||||
WIN32_PYTHON26_PKG := $(OUTPUT)/pyaudio-$(VERSION).py26.exe
|
||||
WIN32_PYTHON27_PKG := $(OUTPUT)/pyaudio-$(VERSION).py27.exe
|
||||
WIN32_PYTHON32_PKG := $(OUTPUT)/pyaudio-$(VERSION).py32.exe
|
||||
WIN32_PYTHON33_PKG := $(OUTPUT)/pyaudio-$(VERSION).py33.exe
|
||||
|
||||
# mac os x:
|
||||
CLEAN_MPKG := $(PACKAGINGDIR)/remove-macosx-mpkg-rules.py
|
||||
|
||||
SYS_PYTHON26_DIR := /System/Library/Frameworks/Python.framework/Versions/2.6/
|
||||
SYS_PYTHON27_DIR := /System/Library/Frameworks/Python.framework/Versions/2.7/
|
||||
MAC_PYTHON27_DIR := /Library/Frameworks/Python.framework/Versions/2.7/
|
||||
MAC_PYTHON32_DIR := /Library/Frameworks/Python.framework/Versions/3.2/
|
||||
MAC_PYTHON33_DIR := /Library/Frameworks/Python.framework/Versions/3.3/
|
||||
|
||||
# targets
|
||||
SYS_PYTHON26_PKG := $(OUTPUT)/PyAudio-$(VERSION)-sys-py2.6-macosx10.9.mpkg
|
||||
SYS_PYTHON27_PKG := $(OUTPUT)/PyAudio-$(VERSION)-sys-py2.7-macosx10.9.mpkg
|
||||
MAC_PYTHON27_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py2.7-macosx10.9.mpkg
|
||||
MAC_PYTHON32_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py3.2-macosx10.9.mpkg
|
||||
MAC_PYTHON33_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py3.3-macosx10.9.mpkg
|
||||
|
||||
# meta package containing all installers
|
||||
MPKG_INSTALLER := $(OUTPUT)/pyaudio-$(VERSION).mpkg
|
||||
|
||||
PACKAGEMAKER := /Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
PACKAGEDOC := packaging/pyaudio-$(VERSION)-mpkg.pmdoc
|
||||
|
||||
VOLNAME_FILENAME := pyaudio-$(VERSION)
|
||||
VOLNAME := PyAudio\ $(VERSION)
|
||||
DS_STORE := DS_Store-$(VERSION)
|
||||
# add 20480 sectors (~10MB) for safety; we'll shrink it later
|
||||
SECTORS = `du -s $(MPKG_INSTALLER) | awk '{print $$1 + 20480}'`
|
||||
HDIUTIL = hdiutil
|
||||
MAC_SNAKEY = snakey.tif
|
||||
|
||||
# final dmg:
|
||||
DMG := $(DISTDIR)/$(VOLNAME_FILENAME).dmg
|
||||
|
||||
######################################################################
|
||||
# Mac OS X
|
||||
######################################################################
|
||||
|
||||
$(MAC_PYTHON27_PKG): PYTHON_DIR=$(MAC_PYTHON27_DIR)
|
||||
$(MAC_PYTHON27_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
|
||||
$(MAC_PYTHON27_PKG): PYTHON=python
|
||||
$(MAC_PYTHON27_PKG): CC=/usr/bin/gcc
|
||||
$(MAC_PYTHON27_PKG):
|
||||
$(call _build_mac_package,$@)
|
||||
|
||||
$(MAC_PYTHON32_PKG): PYTHON_DIR=$(MAC_PYTHON32_DIR)
|
||||
$(MAC_PYTHON32_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
|
||||
$(MAC_PYTHON32_PKG): PYTHON=python3.2
|
||||
$(MAC_PYTHON32_PKG): CC=/usr/bin/gcc
|
||||
$(MAC_PYTHON32_PKG):
|
||||
$(call _build_mac_package,$@)
|
||||
|
||||
$(MAC_PYTHON33_PKG): PYTHON_DIR=$(MAC_PYTHON33_DIR)
|
||||
$(MAC_PYTHON33_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
|
||||
$(MAC_PYTHON33_PKG): PYTHON=python3.3
|
||||
$(MAC_PYTHON33_PKG): CC=/usr/bin/gcc
|
||||
$(MAC_PYTHON33_PKG):
|
||||
$(call _build_mac_package,$@)
|
||||
|
||||
$(SYS_PYTHON26_PKG): PYTHON_DIR=$(SYS_PYTHON26_DIR)
|
||||
$(SYS_PYTHON26_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/Extras/bin/
|
||||
$(SYS_PYTHON26_PKG): CC=/usr/bin/gcc
|
||||
$(SYS_PYTHON26_PKG): PYTHON=python
|
||||
$(SYS_PYTHON26_PKG):
|
||||
$(call _build_mac_package,$@)
|
||||
$(call _fix_bundle_id,$@)
|
||||
|
||||
$(SYS_PYTHON27_PKG): PYTHON_DIR=$(SYS_PYTHON27_DIR)
|
||||
$(SYS_PYTHON27_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/Extras/bin/
|
||||
$(SYS_PYTHON27_PKG): PYTHON=python
|
||||
$(SYS_PYTHON27_PKG): CC=/usr/bin/gcc
|
||||
$(SYS_PYTHON27_PKG):
|
||||
$(call _build_mac_package,$@)
|
||||
$(call _fix_bundle_id,$@)
|
||||
|
||||
_build_mac_package = \
|
||||
SYSROOT_PATH=$(SYSROOT_PATH) \
|
||||
PORTAUDIO_PATH=$(PORTAUDIODIR) \
|
||||
$(PYTHON_DIR)/bin/$(PYTHON) setup.py build --static-link && \
|
||||
$(BDIST_MPKG_DIR)/bdist_mpkg && \
|
||||
sleep 2 && \
|
||||
mv $(DISTDIR)/$(notdir $(subst -mac-,-,$(subst -sys-,-,$(1)))) \
|
||||
$(1) && \
|
||||
$(PYTHON_DIR)/bin/$(PYTHON) $(CLEAN_MPKG) -i \
|
||||
$(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist -o $(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist
|
||||
|
||||
# Change the default system python bundle ID to include .systemdefault
|
||||
# so as to not conflict with the MacPython bundles (they are
|
||||
# identically named). PackageMaker will fail in mysterious ways if
|
||||
# bundle IDs are not unique.
|
||||
|
||||
_fix_bundle_id = \
|
||||
sed -i .backup -e 's/org\.pythonmac/org\.pythonmac\.systemdefault/g' \
|
||||
$(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist
|
||||
|
||||
|
||||
$(MPKG_INSTALLER): $(OUTPUT) $(SYS_PYTHON26_PKG) \
|
||||
$(SYS_PYTHON27_PKG) $(MAC_PYTHON27_PKG) \
|
||||
$(MAC_PYTHON32_PKG) $(MAC_PYTHON33_PKG)
|
||||
@echo "Making Meta Package"
|
||||
@$(PACKAGEMAKER) --doc $(PACKAGEDOC) --out $(MPKG_INSTALLER)
|
||||
|
||||
$(DMG): $(MPKG_INSTALLER)
|
||||
@rm -f $(OUTPUT)/$(VOLNAME_FILENAME).dmg
|
||||
@echo "Creating a DMG with $(SECTORS) sectors"
|
||||
|
||||
@$(HDIUTIL) create -sectors $(SECTORS) -fs HFS+ \
|
||||
-volname $(VOLNAME) $(OUTPUT)/$(VOLNAME_FILENAME).dmg
|
||||
|
||||
@$(HDIUTIL) attach $(OUTPUT)/$(VOLNAME_FILENAME).dmg
|
||||
|
||||
@echo "Copying Data"
|
||||
@mkdir /Volumes/$(VOLNAME)/.packaging
|
||||
@cp $(PACKAGINGDIR)/$(MAC_SNAKEY) \
|
||||
/Volumes/$(VOLNAME)/.packaging/$(MAC_SNAKEY)
|
||||
@cp -r $(MPKG_INSTALLER) /Volumes/$(VOLNAME)/Install\ PyAudio.mpkg
|
||||
@SetFile -a E /Volumes/$(VOLNAME)/Install\ PyAudio.mpkg
|
||||
@cat $(PACKAGINGDIR)/setup_dmg | osascript
|
||||
|
||||
@echo "Done Copying"
|
||||
@$(HDIUTIL) detach /Volumes/$(VOLNAME)
|
||||
|
||||
cp $(OUTPUT)/$(VOLNAME_FILENAME).dmg $(OUTPUT)/$(VOLNAME_FILENAME).rw.dmg
|
||||
|
||||
@echo "Resizing DMG"
|
||||
@$(HDIUTIL) resize -sectors \
|
||||
`$(HDIUTIL) resize $(OUTPUT)/$(VOLNAME_FILENAME).dmg | awk '{print $$1}'` $(OUTPUT)/$(VOLNAME_FILENAME).dmg
|
||||
|
||||
@echo "Compressing DMG"
|
||||
@$(HDIUTIL) convert -imagekey zlib-level=9 -format UDZO \
|
||||
$(OUTPUT)/$(VOLNAME_FILENAME).dmg \
|
||||
-o $(OUTPUT)/$(VOLNAME_FILENAME).tmp.dmg
|
||||
|
||||
@mv $(OUTPUT)/$(VOLNAME_FILENAME).tmp.dmg \
|
||||
$(OUTPUT)/$(VOLNAME_FILENAME).dmg
|
||||
|
||||
macosx: $(DMG)
|
||||
|
||||
######################################################################
|
||||
# Win32
|
||||
######################################################################
|
||||
|
||||
$(WIN32_PYTHON26_PKG): $(SRCFILES)
|
||||
$(WIN32_PYTHON26_PKG): PYTHON=$(WIN32_PYTHON26)
|
||||
$(WIN32_PYTHON26_PKG):
|
||||
$(call _build_win_package,$@)
|
||||
|
||||
$(WIN32_PYTHON27_PKG): $(SRCFILES)
|
||||
$(WIN32_PYTHON27_PKG): PYTHON=$(WIN32_PYTHON27)
|
||||
$(WIN32_PYTHON27_PKG):
|
||||
$(call _build_win_package,$@)
|
||||
|
||||
$(WIN32_PYTHON32_PKG): $(SRCFILES)
|
||||
$(WIN32_PYTHON32_PKG): PYTHON=$(WIN32_PYTHON32)
|
||||
$(WIN32_PYTHON32_PKG):
|
||||
$(call _build_win_package,$@)
|
||||
|
||||
$(WIN32_PYTHON33_PKG): $(SRCFILES)
|
||||
$(WIN32_PYTHON33_PKG): PYTHON=$(WIN32_PYTHON33)
|
||||
$(WIN32_PYTHON33_PKG):
|
||||
$(call _build_win_package,$@)
|
||||
|
||||
_build_win_package = \
|
||||
PACKAGING_PATH=$(PACKAGINGDIR) \
|
||||
PORTAUDIO_PATH=$(PORTAUDIODIR) \
|
||||
$(PYTHON) setup.py build -cmingw32 --static-link && \
|
||||
$(PYTHON) setup.py bdist_wininst --skip-build -t PyAudio \
|
||||
--bitmap=$(PACKAGINGDIR)/win-background.bmp && \
|
||||
mv $(DISTDIR)/$(WIN32_PKG) $(1)
|
||||
|
||||
win32: $(OUTPUT) $(WIN32_PYTHON26_PKG) $(WIN32_PYTHON27_PKG) \
|
||||
$(WIN32_PYTHON32_PKG) $(WIN32_PYTHON33_PKG)
|
||||
|
||||
$(OUTPUT):
|
||||
@mkdir -p $(OUTPUT)
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
print "Installation Completed Successfully."
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="8532508D-DE23-450B-81FD-48CBF54DB99A"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Python/2.5/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-sys-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.5-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="9ECD1352-4655-4CD7-8EAB-64DC197FF285"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105-1.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-mac-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.5-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="CEDEDA2F-4FF3-4E48-8D33-26E2B7026233"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py24macosx105.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-py2.4-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.4-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.4-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1,57 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.0</title><organization>csail.mit.edu</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.0: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2008 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.0 for System Python 2.5" id="choice8" description="System Python 2.5 is installed by default in Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105.pkg"/></choice><choice title="PyAudio 0.2.0 for MacPython 2.5" id="choice11" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/.
|
||||
" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105-1.pkg"/></choice><choice title="PyAudio 0.2.0 for MacPython 2.4" id="choice12" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py24macosx105.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.0: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2008 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><mod>properties.customizeOption</mod><mod>properties.title</mod><mod>description</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.3-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="06B5F833-4169-4987-921F-FC888D569E7F"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py24macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath mod="true">/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.4-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.4-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.4-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"/>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="E6536ADE-3652-4893-9929-7A3FAD8957F2"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>requireAuthorization</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.5-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"/>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="14793237-1CBC-4469-AF98-A1D5B7586FFE"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105-1.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Python/2.5/site-packages/</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-sys-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.5-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"/>
|
|
@ -0,0 +1 @@
|
|||
<pkgref spec="1.12" uuid="30D5A341-97B1-46E5-946A-D62472C212A9"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py26macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.6-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.6-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.6-macosx10.5</title></extra></pkgref>
|
|
@ -0,0 +1,56 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.3</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio 0.2.3.mpkg</build><organization>csail.mit.edu</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.3: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2008 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.3 for MacPython 2.4" id="choice2" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py24macosx105.pkg"/></choice><choice title="PyAudio 0.2.3 for MacPython 2.5" id="choice3" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105.pkg"/></choice><choice title="PyAudio 0.2.3 for System Python 2.5" id="choice1" description="System Python 2.5 is installed by default in Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105-1.pkg"/></choice><choice title="PyAudio 0.2.3 for MacPython 2.6" id="choice4" description="MacPython 2.6 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py26macosx105.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.3: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2008 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><mod>properties.customizeOption</mod><mod>properties.title</mod><mod>description</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/><mod>owner</mod></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"><mod>owner</mod></f><f n="pyaudio.py" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"><mod>owner</mod></f><mod>name</mod><mod>owner</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="D53D1F32-3F4B-4186-9517-59CC7852B3F9"><config><identifier>org.pythonmac.PyAudio-platlib-py2.4-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.4-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.4-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-mac-py2.4-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.4-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.4-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/><mod>owner</mod></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"><mod>owner</mod></f><f n="pyaudio.py" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"><mod>owner</mod></f><mod>name</mod><mod>owner</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="5FDD7FD2-50D0-491A-8B1C-2CD5774A084B"><config><identifier>org.pythonmac.PyAudio-platlib-py2.5-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true" mod="true">../dist/PyAudio-0.2.4-mac-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.5-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="868766F0-6141-4AE8-8E10-FDFA9C1413E4"><config><identifier>org.pythonmac.PyAudio-platlib-py2.6-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true" mod="true">../dist/PyAudio-0.2.4-mac-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="B5E9CC07-7255-42CA-8AFC-A54CF28DF671"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.7-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.7-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-mac-py2.7-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.7-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="97DF981A-2465-4CB8-8B1E-28B4F6EF99A9"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.5-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.5/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.5/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-sys-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-sys-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.5-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="8F8BDBBA-CEA7-4816-8EEE-28C7B8AD7F77"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-sys-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>06pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-sys-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.6</title></extra></pkgref>
|
|
@ -0,0 +1,56 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.4</title><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.4: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2010 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.4 for MacPython 2.4" id="choice14" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.4-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.4</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.5" id="choice15" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.5-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.5</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.6" id="choice16" description="MacPython 2.6 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.6-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.6</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.7" id="choice17" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.7</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for System Python 2.5" id="choice20" description="System Python 2.5 is installed by default in Mac OS X (Snow) Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.5-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/System/Library/Frameworks/Python.framework/Versions/2.5</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for System Python 2.6" id="choice21" description="System Python 2.6 is installed by default in Mac OS X (Snow) Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/System/Library/Frameworks/Python.framework/Versions/2.6</file></requirement></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.4: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2010 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><item type="pkgref">06pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="B0F9229A-B947-42C2-AD99-73BB6F3DF773"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py3.2-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py3.2-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="40ABE8F0-C9E3-4879-8026-68529E7211BB"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="E6650362-E54D-4405-871B-822EAD14D900"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="DFE5FF62-448B-4C08-8DEA-87E81313A4AD"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.6-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.6-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1,57 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.6</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.6.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.6: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2012 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.6 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/.
|
||||
" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1187
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.6: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2012 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="B0F9229A-B947-42C2-AD99-73BB6F3DF773"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.2-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.2-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="40ABE8F0-C9E3-4879-8026-68529E7211BB"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="E6650362-E54D-4405-871B-822EAD14D900"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="DFE5FF62-448B-4C08-8DEA-87E81313A4AD"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.6-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.6-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py3.3.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-33.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-33.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="A282C0E8-28FF-42E8-8AB2-BB08F6A682D7"><config><identifier>org.pythonmac.PyAudio-platlib-py3.3-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>installTo</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py3.3-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.3-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.7-mac-py3.3-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.3-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.3-macosx10.8</title></extra></pkgref>
|
|
@ -0,0 +1,56 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.7</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.7.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.7: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2012 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.7 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for MacPython 3.3" id="choice21" description="MacPython 3.3 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.3-macosx10.8"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.7: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2012 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py3.3.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-33.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-33.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="F2E92B23-3C6D-4D10-B99A-0C0B1E93BF7F"><config><identifier>org.pythonmac.PyAudio-platlib-py3.3-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.3-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.3-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.3-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.3-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py3.3-macosx10.9</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="AAD2F01F-60DA-4429-81C4-97D897B4851E"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.6-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.6-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.6-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.6-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.9</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="257A7430-20E9-4A46-9D6D-70315CBB85FB"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.2-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.2-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.2-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.2-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.9</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="52248D16-32E5-42A2-93D0-3487777E6024"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.9</title></extra></pkgref>
|
|
@ -0,0 +1 @@
|
|||
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>
|
|
@ -0,0 +1,2 @@
|
|||
<pkgref spec="1.12" uuid="00721604-991D-41D3-904C-7A25E30A6962"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
|
||||
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.9</title></extra></pkgref>
|
|
@ -0,0 +1,56 @@
|
|||
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.8</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.8.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.8: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006-2012 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</description><contents><choice title="PyAudio 0.2.8 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for MacPython 3.3" id="choice21" description="MacPython 3.3 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.3-macosx10.9"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1265
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 PyAudio v0.2.8: Python Bindings for PortAudio.\
|
||||
\
|
||||
Copyright (c) 2006-2014 Hubert Pham\
|
||||
\
|
||||
Permission is hereby granted, free of charge, to any person obtaining\
|
||||
a copy of this software and associated documentation files (the\
|
||||
"Software"), to deal in the Software without restriction, including\
|
||||
without limitation the rights to use, copy, modify, merge, publish,\
|
||||
distribute, sublicense, and/or sell copies of the Software, and to\
|
||||
permit persons to whom the Software is furnished to do so, subject to\
|
||||
the following conditions:\
|
||||
\
|
||||
The above copyright notice and this permission notice shall be\
|
||||
included in all copies or substantial portions of the Software.\
|
||||
\
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
|
||||
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND\
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.\
|
||||
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
|
@ -0,0 +1,93 @@
|
|||
"""
|
||||
Remove requirements section in Info.plist for Mac OS X Installer package.
|
||||
|
||||
Background: There is a bug in the command-line version of PackageMaker
|
||||
v3.0.4 (179). When creating a meta-package (bundle of packages), if
|
||||
any of constituent packages specify installation requirements,
|
||||
PackageMaker will crash. The reason is probably that PackageMaker
|
||||
needs to ask the user (via the GUI, which in this case doesn't exist
|
||||
from the command line) how to handle each constituents' requirements.
|
||||
|
||||
The solution is to bake those requirements into the global
|
||||
meta-package template (pmdoc) and then remove the requirements from
|
||||
each constituent package. This script does the latter by removing a
|
||||
known key and value from the specified package's Info.plist file.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from xml.dom.minidom import parse
|
||||
from optparse import OptionParser
|
||||
|
||||
def main():
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="input")
|
||||
parser.add_option("-o", "--output", dest="output")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
if not options.input:
|
||||
print("No input given.")
|
||||
parser.print_help()
|
||||
return -1
|
||||
|
||||
try:
|
||||
dom = parse(options.input)
|
||||
except Exception as err:
|
||||
print("Error: ", err)
|
||||
return -1
|
||||
|
||||
# XML looks something like this:
|
||||
# <plist />
|
||||
# <dict>
|
||||
# <key> ... </key>
|
||||
# <string> ... </string> # this is the value
|
||||
# <key> ... </key>
|
||||
# <string> ... </string>
|
||||
# ...
|
||||
# <key>IFRequirementDicts</key> # REMOVE THIS
|
||||
# <array> # ...AND THIS
|
||||
# <dict>
|
||||
# ...
|
||||
# </dict>
|
||||
# </array>
|
||||
# ...
|
||||
# </dict>
|
||||
# </plist>
|
||||
|
||||
plist = dom.getElementsByTagName("key")
|
||||
for k in plist:
|
||||
if ((k.firstChild.nodeType is k.TEXT_NODE) and
|
||||
(k.firstChild.data.strip() == "IFRequirementDicts")):
|
||||
|
||||
sibling = k.nextSibling
|
||||
|
||||
# Skip all whitespace between this key and the upcoming
|
||||
# <array>
|
||||
while sibling.nodeType is k.TEXT_NODE:
|
||||
sibling = sibling.nextSibling
|
||||
|
||||
assert sibling.tagName == "array", "Could not find <array>"
|
||||
|
||||
# Remove nodes
|
||||
parent = k.parentNode
|
||||
parent.removeChild(k)
|
||||
parent.removeChild(sibling)
|
||||
k.unlink()
|
||||
sibling.unlink()
|
||||
break
|
||||
|
||||
xml = dom.toxml()
|
||||
|
||||
if options.output:
|
||||
try:
|
||||
f = open(options.output, "w")
|
||||
except IOError as err:
|
||||
print("Error: ", err)
|
||||
return -1
|
||||
|
||||
f.write(xml)
|
||||
f.close()
|
||||
else:
|
||||
print(xml)
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
|
@ -0,0 +1,19 @@
|
|||
-- http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools
|
||||
tell application "Finder"
|
||||
tell disk "PyAudio 0.2.8"
|
||||
open
|
||||
set current view of container window to icon view
|
||||
set toolbar visible of container window to false
|
||||
set statusbar visible of container window to false
|
||||
set the bounds of container window to {0, 0, 635, 385}
|
||||
set theViewOptions to the icon view options of container window
|
||||
set arrangement of theViewOptions to not arranged
|
||||
set icon size of theViewOptions to 148
|
||||
set background picture of theViewOptions to file ".packaging:snakey.tif"
|
||||
set position of item "Install PyAudio" of container window to {460, 240}
|
||||
close
|
||||
open
|
||||
update without registering applications
|
||||
delay 5
|
||||
end tell
|
||||
end tell
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
|
@ -1,7 +1,7 @@
|
|||
"""
|
||||
PyAudio v0.2.11: Python Bindings for PortAudio.
|
||||
PyAudio v0.2.8: Python Bindings for PortAudio.
|
||||
|
||||
Copyright (c) 2006 Hubert Pham
|
||||
Copyright (c) 2006-2014 Hubert Pham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
@ -26,25 +26,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
import os
|
||||
import platform
|
||||
from distutils.core import setup, Extension
|
||||
import sys
|
||||
try:
|
||||
from setuptools import setup, Extension
|
||||
except ImportError:
|
||||
from distutils.core import setup, Extension
|
||||
import os
|
||||
|
||||
__version__ = "0.2.12"
|
||||
__version__ = "0.2.8"
|
||||
|
||||
# distutils will try to locate and link dynamically against portaudio.
|
||||
# Note: distutils will try to locate and link dynamically
|
||||
# against portaudio.
|
||||
#
|
||||
# If you would rather statically link in the portaudio library (e.g.,
|
||||
# typically on Microsoft Windows), run:
|
||||
# You probably don't want to statically link in the PortAudio
|
||||
# library unless you're building on Microsoft Windows.
|
||||
#
|
||||
# % python setup.py build --static-link
|
||||
# In any case, if you would rather statically link in libportaudio,
|
||||
# run:
|
||||
#
|
||||
# Specify the environment variable PORTAUDIO_PATH with the build tree
|
||||
# of PortAudio.
|
||||
# % python setup.py build --static-link
|
||||
#
|
||||
# Be sure to specify the location of the libportaudio.a in
|
||||
# the `extra_link_args' variable below.
|
||||
|
||||
STATIC_LINKING = False
|
||||
|
||||
|
@ -53,9 +53,11 @@ if "--static-link" in sys.argv:
|
|||
sys.argv.remove("--static-link")
|
||||
|
||||
portaudio_path = os.environ.get("PORTAUDIO_PATH", "./portaudio-v19")
|
||||
packaging_path = os.environ.get("PACKAGING_PATH", None)
|
||||
mac_sysroot_path = os.environ.get("SYSROOT_PATH", None)
|
||||
|
||||
pyaudio_module_sources = ['src/_portaudiomodule.c']
|
||||
|
||||
include_dirs = []
|
||||
external_libraries = []
|
||||
extra_compile_args = []
|
||||
|
@ -63,24 +65,27 @@ extra_link_args = []
|
|||
scripts = []
|
||||
defines = []
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
defines += [('MACOSX', '1')]
|
||||
if mac_sysroot_path:
|
||||
extra_compile_args += ["-isysroot", mac_sysroot_path]
|
||||
extra_link_args += ["-isysroot", mac_sysroot_path]
|
||||
elif sys.platform == 'win32':
|
||||
bits = platform.architecture()[0]
|
||||
if '64' in bits:
|
||||
defines.append(('MS_WIN64', '1'))
|
||||
|
||||
if not STATIC_LINKING:
|
||||
external_libraries = ['portaudio']
|
||||
extra_link_args = []
|
||||
else:
|
||||
include_dirs = [os.path.join(portaudio_path, 'include/')]
|
||||
if STATIC_LINKING:
|
||||
extra_link_args = [
|
||||
os.path.join(portaudio_path, 'lib/.libs/libportaudio.a')
|
||||
]
|
||||
include_dirs = [os.path.join(portaudio_path, 'include/')]
|
||||
else:
|
||||
# dynamic linking
|
||||
external_libraries = ['portaudio']
|
||||
extra_link_args = []
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
defines += [('MACOSX', '1')]
|
||||
|
||||
extra_compile_args += ["-mmacosx-version-min=10.6"]
|
||||
extra_link_args += ["-mmacosx-version-min=10.6"]
|
||||
|
||||
if mac_sysroot_path:
|
||||
extra_compile_args += ["-isysroot", mac_sysroot_path]
|
||||
extra_link_args += ["-isysroot", mac_sysroot_path]
|
||||
|
||||
if STATIC_LINKING:
|
||||
|
||||
# platform specific configuration
|
||||
if sys.platform == 'darwin':
|
||||
|
@ -88,36 +93,47 @@ else:
|
|||
'-framework', 'AudioToolbox',
|
||||
'-framework', 'AudioUnit',
|
||||
'-framework', 'Carbon']
|
||||
|
||||
elif sys.platform == 'cygwin':
|
||||
external_libraries += ['winmm']
|
||||
extra_link_args += ['-lwinmm']
|
||||
|
||||
elif sys.platform == 'win32':
|
||||
# i.e., Win32 Python with mingw32
|
||||
# run: python setup.py build -cmingw32
|
||||
external_libraries += ['winmm']
|
||||
extra_link_args += ['-lwinmm']
|
||||
if packaging_path:
|
||||
scripts += [os.path.join(packaging_path, 'postinst.py')]
|
||||
|
||||
elif sys.platform == 'linux2':
|
||||
extra_link_args += ['-lrt', '-lm', '-lpthread']
|
||||
# GNU/Linux has several audio systems (backends) available; be
|
||||
# sure to specify the desired ones here. Start with ALSA and
|
||||
# JACK, since that's common today.
|
||||
|
||||
# Since you're insisting on linking statically against
|
||||
# PortAudio on GNU/Linux, be sure to link in whatever sound
|
||||
# backend you used in portaudio (e.g., ALSA, JACK, etc...)
|
||||
|
||||
# I'll start you off with ALSA, since that's the most common
|
||||
# today. If you need JACK support, add it here.
|
||||
|
||||
extra_link_args += ['-lasound', '-ljack']
|
||||
|
||||
setup(name='PyAudio',
|
||||
version=__version__,
|
||||
author="Hubert Pham",
|
||||
url="http://people.csail.mit.edu/hubert/pyaudio/",
|
||||
description='PortAudio Python Bindings',
|
||||
long_description=__doc__.lstrip(),
|
||||
scripts=scripts,
|
||||
py_modules=['pyaudio'],
|
||||
package_dir={'': 'src'},
|
||||
ext_modules=[
|
||||
Extension('_portaudio',
|
||||
sources=pyaudio_module_sources,
|
||||
include_dirs=include_dirs,
|
||||
define_macros=defines,
|
||||
libraries=external_libraries,
|
||||
extra_compile_args=extra_compile_args,
|
||||
extra_link_args=extra_link_args)
|
||||
])
|
||||
|
||||
pyaudio = Extension('_portaudio',
|
||||
sources=pyaudio_module_sources,
|
||||
include_dirs=include_dirs,
|
||||
define_macros=defines,
|
||||
libraries=external_libraries,
|
||||
extra_compile_args=extra_compile_args,
|
||||
extra_link_args=extra_link_args)
|
||||
|
||||
setup(name = 'PyAudio',
|
||||
version = __version__,
|
||||
author = "Hubert Pham",
|
||||
url = "http://people.csail.mit.edu/hubert/pyaudio/",
|
||||
description = 'PortAudio Python Bindings',
|
||||
long_description = __doc__.lstrip(),
|
||||
scripts = scripts,
|
||||
py_modules = ['pyaudio'],
|
||||
package_dir = {'': 'src'},
|
||||
ext_modules = [pyaudio])
|
||||
|
|
|
@ -42,16 +42,16 @@ master_doc = 'index'
|
|||
|
||||
# General information about the project.
|
||||
project = 'PyAudio'
|
||||
copyright = '2006, Hubert Pham'
|
||||
copyright = '2014, Hubert Pham'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.2.11'
|
||||
version = '0.2.8'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.2.11'
|
||||
release = '0.2.8'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Example: Blocking Mode Audio I/O
|
||||
--------------------------------
|
||||
|
||||
.. literalinclude:: ../examples/play_wave.py
|
||||
.. literalinclude:: ../test/play_wave.py
|
||||
|
||||
To use PyAudio, first instantiate PyAudio using
|
||||
:py:func:`pyaudio.PyAudio` (1), which sets up the portaudio system.
|
||||
|
@ -30,7 +30,7 @@ Finally, terminate the portaudio session using
|
|||
Example: Callback Mode Audio I/O
|
||||
--------------------------------
|
||||
|
||||
.. literalinclude:: ../examples/play_wave_callback.py
|
||||
.. literalinclude:: ../test/play_wave_callback.py
|
||||
|
||||
In callback mode, PyAudio will call a specified callback function (2)
|
||||
whenever it needs new audio data (to play) and/or when there is new
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* PyAudio : API Header File
|
||||
*
|
||||
* Copyright (c) 2006 Hubert Pham
|
||||
* Copyright (c) 2006-2012 Hubert Pham
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# PyAudio : Python Bindings for PortAudio.
|
||||
|
||||
# Copyright (c) 2006 Hubert Pham
|
||||
# Copyright (c) 2006-2012 Hubert Pham
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -106,7 +106,7 @@ Overview
|
|||
"""
|
||||
|
||||
__author__ = "Hubert Pham"
|
||||
__version__ = "0.2.11"
|
||||
__version__ = "0.2.8"
|
||||
__docformat__ = "restructuredtext en"
|
||||
|
||||
import sys
|
||||
|
@ -115,8 +115,9 @@ import sys
|
|||
try:
|
||||
import _portaudio as pa
|
||||
except ImportError:
|
||||
print("Could not import the PyAudio C module '_portaudio'.")
|
||||
raise
|
||||
print("Please build and install the PortAudio Python " +
|
||||
"bindings first.")
|
||||
sys.exit(-1)
|
||||
|
||||
############################################################
|
||||
# GLOBALS
|
||||
|
@ -471,7 +472,7 @@ class Stream:
|
|||
|
||||
def get_output_latency(self):
|
||||
"""
|
||||
Return the output latency.
|
||||
Return the input latency.
|
||||
|
||||
:rtype: float
|
||||
"""
|
||||
|
@ -561,7 +562,7 @@ class Stream:
|
|||
Defaults to None, in which this value will be
|
||||
automatically computed.
|
||||
:param exception_on_underflow:
|
||||
Specifies whether an IOError exception should be thrown
|
||||
Specifies whether an exception should be thrown
|
||||
(or silently ignored) on buffer underflow. Defaults
|
||||
to False for improved performance, especially on
|
||||
slower platforms.
|
||||
|
@ -586,16 +587,12 @@ class Stream:
|
|||
exception_on_underflow)
|
||||
|
||||
|
||||
def read(self, num_frames, exception_on_overflow=True):
|
||||
def read(self, num_frames):
|
||||
"""
|
||||
Read samples from the stream. Do not call when using
|
||||
*non-blocking* mode.
|
||||
|
||||
:param num_frames: The number of frames to read.
|
||||
:param exception_on_overflow:
|
||||
Specifies whether an IOError exception should be thrown
|
||||
(or silently ignored) on input buffer overflow. Defaults
|
||||
to True.
|
||||
:raises IOError: if stream is not an input stream
|
||||
or if the read operation was unsuccessful.
|
||||
:rtype: string
|
||||
|
@ -605,7 +602,7 @@ class Stream:
|
|||
raise IOError("Not input stream",
|
||||
paCanNotReadFromAnOutputOnlyStream)
|
||||
|
||||
return pa.read_stream(self._stream, num_frames, exception_on_overflow)
|
||||
return pa.read_stream(self._stream, num_frames)
|
||||
|
||||
def get_read_available(self):
|
||||
"""
|
||||
|
|
|
@ -25,7 +25,7 @@ stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
|
|||
data = wf.readframes(CHUNK)
|
||||
|
||||
# play stream (3)
|
||||
while len(data) > 0:
|
||||
while data != '':
|
||||
stream.write(data)
|
||||
data = wf.readframes(CHUNK)
|
||||
|
|
@ -64,7 +64,7 @@ stream = p.open(
|
|||
data = wf.readframes(chunk)
|
||||
|
||||
# play stream
|
||||
while len(data) > 0:
|
||||
while data != '':
|
||||
stream.write(data)
|
||||
data = wf.readframes(chunk)
|
||||
|
|
@ -12,7 +12,6 @@ import sys
|
|||
WIDTH = 2
|
||||
CHANNELS = 2
|
||||
RATE = 44100
|
||||
DURATION = 5
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
CHANNELS = 1
|
||||
|
@ -31,9 +30,7 @@ stream = p.open(format=p.get_format_from_width(WIDTH),
|
|||
|
||||
stream.start_stream()
|
||||
|
||||
start = time.time()
|
||||
|
||||
while stream.is_active() and (time.time() - start) < DURATION:
|
||||
while stream.is_active():
|
||||
time.sleep(0.1)
|
||||
|
||||
stream.stop_stream()
|
|
@ -1,120 +0,0 @@
|
|||
import sys
|
||||
import time
|
||||
import unittest
|
||||
|
||||
import pyaudio
|
||||
|
||||
class PyAudioErrorTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.p = pyaudio.PyAudio()
|
||||
|
||||
def tearDown(self):
|
||||
self.p.terminate()
|
||||
|
||||
def test_invalid_sample_size(self):
|
||||
with self.assertRaises(ValueError):
|
||||
self.p.get_sample_size(10)
|
||||
|
||||
def test_invalid_width(self):
|
||||
with self.assertRaises(ValueError):
|
||||
self.p.get_format_from_width(8)
|
||||
|
||||
def test_invalid_device(self):
|
||||
with self.assertRaises(IOError):
|
||||
self.p.get_host_api_info_by_type(-1)
|
||||
|
||||
def test_invalid_hostapi(self):
|
||||
with self.assertRaises(IOError):
|
||||
self.p.get_host_api_info_by_index(-1)
|
||||
|
||||
def test_invalid_host_api_devinfo(self):
|
||||
with self.assertRaises(IOError):
|
||||
self.p.get_device_info_by_host_api_device_index(0, -1)
|
||||
|
||||
with self.assertRaises(IOError):
|
||||
self.p.get_device_info_by_host_api_device_index(-1, 0)
|
||||
|
||||
def test_invalid_device_devinfo(self):
|
||||
with self.assertRaises(IOError):
|
||||
self.p.get_device_info_by_index(-1)
|
||||
|
||||
def test_error_without_stream_start(self):
|
||||
with self.assertRaises(IOError):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
input=True,
|
||||
start=False) # not starting stream
|
||||
stream.read(2)
|
||||
|
||||
def test_error_writing_to_readonly_stream(self):
|
||||
with self.assertRaises(IOError):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
input=True)
|
||||
stream.write('foo')
|
||||
|
||||
def test_error_negative_frames(self):
|
||||
with self.assertRaises(ValueError):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
input=True)
|
||||
stream.read(-1)
|
||||
|
||||
def test_invalid_attr_on_closed_stream(self):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
input=True)
|
||||
stream.close()
|
||||
with self.assertRaises(IOError):
|
||||
stream.get_input_latency()
|
||||
with self.assertRaises(IOError):
|
||||
stream.read(1)
|
||||
|
||||
def test_invalid_format_supported(self):
|
||||
with self.assertRaises(ValueError):
|
||||
self.p.is_format_supported(8000, -1, 1, pyaudio.paInt16)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
self.p.is_format_supported(8000, 0, -1, pyaudio.paInt16)
|
||||
|
||||
def test_write_underflow_exception(self):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
output=True)
|
||||
time.sleep(0.5)
|
||||
stream.write('\x00\x00\x00\x00', exception_on_underflow=False)
|
||||
|
||||
# It's difficult to invoke an underflow on ALSA, so skip.
|
||||
if sys.platform in ('linux', 'linux2'):
|
||||
return
|
||||
|
||||
with self.assertRaises(IOError) as err:
|
||||
time.sleep(0.5)
|
||||
stream.write('\x00\x00\x00\x00', exception_on_underflow=True)
|
||||
|
||||
self.assertEqual(err.exception.errno, pyaudio.paOutputUnderflowed)
|
||||
self.assertEqual(err.exception.strerror, 'Output underflowed')
|
||||
|
||||
def test_read_overflow_exception(self):
|
||||
stream = self.p.open(channels=1,
|
||||
rate=44100,
|
||||
format=pyaudio.paInt16,
|
||||
input=True)
|
||||
time.sleep(0.5)
|
||||
stream.read(2, exception_on_overflow=False)
|
||||
|
||||
# It's difficult to invoke an underflow on ALSA, so skip.
|
||||
if sys.platform in ('linux', 'linux2'):
|
||||
return
|
||||
|
||||
with self.assertRaises(IOError) as err:
|
||||
time.sleep(0.5)
|
||||
stream.read(2, exception_on_overflow=True)
|
||||
|
||||
self.assertEqual(err.exception.errno, pyaudio.paInputOverflowed)
|
||||
self.assertEqual(err.exception.strerror, 'Input overflowed')
|
|
@ -1,642 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Automated unit tests for testing audio playback and capture.
|
||||
|
||||
These tests require an OS loopback sound device that forwards audio
|
||||
output, generated by PyAudio for playback, and forwards it to an input
|
||||
device, which PyAudio can record and verify against a test signal.
|
||||
|
||||
On Mac OS X, Soundflower can create such a device.
|
||||
|
||||
On GNU/Linux, the snd-aloop kernel module provides a loopback ALSA
|
||||
device. Use examples/system_info.py to identify the name of the loopback
|
||||
device.
|
||||
"""
|
||||
|
||||
import math
|
||||
import struct
|
||||
import time
|
||||
import unittest
|
||||
import wave
|
||||
import sys
|
||||
|
||||
import numpy
|
||||
|
||||
import pyaudio
|
||||
|
||||
DUMP_CAPTURE=False
|
||||
|
||||
class PyAudioTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.p = pyaudio.PyAudio()
|
||||
(self.loopback_input_idx,
|
||||
self.loopback_output_idx) = self.get_audio_loopback()
|
||||
assert (self.loopback_input_idx is None
|
||||
or self.loopback_input_idx >= 0), "No loopback device found"
|
||||
assert (self.loopback_output_idx is None
|
||||
or self.loopback_output_idx >= 0), "No loopback device found"
|
||||
|
||||
def tearDown(self):
|
||||
self.p.terminate()
|
||||
|
||||
def get_audio_loopback(self):
|
||||
if sys.platform == 'darwin':
|
||||
return self._find_audio_loopback(
|
||||
'Soundflower (2ch)', 'Soundflower (2ch)')
|
||||
if sys.platform in ('linux', 'linux2'):
|
||||
return self._find_audio_loopback(
|
||||
'Loopback: PCM (hw:1,0)', 'Loopback: PCM (hw:1,1)')
|
||||
if sys.platform == 'win32':
|
||||
# Assumes running in a VM, in which the hypervisor can
|
||||
# set up a loopback device to back the "default" audio devices.
|
||||
# Here, None indicates default device.
|
||||
return None, None
|
||||
|
||||
return -1, -1
|
||||
|
||||
def _find_audio_loopback(self, indev, outdev):
|
||||
"""Utility to find audio loopback device."""
|
||||
input_idx, output_idx = -1, -1
|
||||
for device_idx in range(self.p.get_device_count()):
|
||||
devinfo = self.p.get_device_info_by_index(device_idx)
|
||||
if (outdev == devinfo.get('name') and
|
||||
devinfo.get('maxOutputChannels', 0) > 0):
|
||||
output_idx = device_idx
|
||||
|
||||
if (indev == devinfo.get('name') and
|
||||
devinfo.get('maxInputChannels', 0) > 0):
|
||||
input_idx = device_idx
|
||||
|
||||
if output_idx > -1 and input_idx > -1:
|
||||
break
|
||||
|
||||
return input_idx, output_idx
|
||||
|
||||
def test_system_info(self):
|
||||
"""Basic system info tests"""
|
||||
self.assertTrue(self.p.get_host_api_count() > 0)
|
||||
self.assertTrue(self.p.get_device_count() > 0)
|
||||
api_info = self.p.get_host_api_info_by_index(0)
|
||||
self.assertTrue(len(api_info.items()) > 0)
|
||||
|
||||
def test_input_output_blocking(self):
|
||||
"""Test blocking-based record and playback."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
# Blocking-mode might add some initial choppiness on some
|
||||
# platforms/loopback devices, so set a longer duration.
|
||||
duration = 3 # seconds
|
||||
frames_per_chunk = 1024
|
||||
|
||||
freqs = [130.81, 329.63, 440.0, 466.16, 587.33, 739.99]
|
||||
test_signal = self.create_reference_signal(freqs, rate, width, duration)
|
||||
audio_chunks = self.signal_to_chunks(
|
||||
test_signal, frames_per_chunk, channels)
|
||||
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx)
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx)
|
||||
|
||||
captured = []
|
||||
for chunk in audio_chunks:
|
||||
out_stream.write(chunk)
|
||||
captured.append(in_stream.read(frames_per_chunk))
|
||||
# Capture a few more frames, since there is some lag.
|
||||
for i in range(8):
|
||||
captured.append(in_stream.read(frames_per_chunk))
|
||||
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
if DUMP_CAPTURE:
|
||||
self.write_wav('test_blocking.wav', b''.join(captured),
|
||||
width, channels, rate)
|
||||
|
||||
captured_signal = self.pcm16_to_numpy(b''.join(captured))
|
||||
captured_left_channel = captured_signal[::2]
|
||||
captured_right_channel = captured_signal[1::2]
|
||||
|
||||
self.assert_pcm16_spectrum_nearly_equal(
|
||||
rate,
|
||||
captured_left_channel,
|
||||
test_signal,
|
||||
len(freqs))
|
||||
self.assert_pcm16_spectrum_nearly_equal(
|
||||
rate,
|
||||
captured_right_channel,
|
||||
test_signal,
|
||||
len(freqs))
|
||||
|
||||
def test_input_output_callback(self):
|
||||
"""Test callback-based record and playback."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
duration = 1 # second
|
||||
frames_per_chunk = 1024
|
||||
|
||||
freqs = [130.81, 329.63, 440.0, 466.16, 587.33, 739.99]
|
||||
test_signal = self.create_reference_signal(freqs, rate, width, duration)
|
||||
audio_chunks = self.signal_to_chunks(
|
||||
test_signal, frames_per_chunk, channels)
|
||||
|
||||
state = {'count': 0}
|
||||
def out_callback(_, frame_count, time_info, status):
|
||||
if state['count'] >= len(audio_chunks):
|
||||
return ('', pyaudio.paComplete)
|
||||
rval = (audio_chunks[state['count']], pyaudio.paContinue)
|
||||
state['count'] += 1
|
||||
return rval
|
||||
|
||||
captured = []
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
captured.append(in_data)
|
||||
return (None, pyaudio.paContinue)
|
||||
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
|
||||
in_stream.start_stream()
|
||||
out_stream.start_stream()
|
||||
time.sleep(duration + 1)
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
if DUMP_CAPTURE:
|
||||
self.write_wav('test_callback.wav', b''.join(captured),
|
||||
width, channels, rate)
|
||||
|
||||
captured_signal = self.pcm16_to_numpy(b''.join(captured))
|
||||
captured_left_channel = captured_signal[::2]
|
||||
captured_right_channel = captured_signal[1::2]
|
||||
|
||||
self.assert_pcm16_spectrum_nearly_equal(
|
||||
rate,
|
||||
captured_left_channel,
|
||||
test_signal,
|
||||
len(freqs))
|
||||
self.assert_pcm16_spectrum_nearly_equal(
|
||||
rate,
|
||||
captured_right_channel,
|
||||
test_signal,
|
||||
len(freqs))
|
||||
|
||||
def test_device_lock_gil_order(self):
|
||||
"""Ensure no deadlock between Pa_{Open,Start,Stop}Stream and GIL."""
|
||||
# This test targets OSX/macOS CoreAudio, which seems to use
|
||||
# audio device locks. On ALSA and Win32 MME, this problem
|
||||
# doesn't seem to appear despite not releasing the GIL when
|
||||
# calling into PortAudio.
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(_, frame_count, time_info, status):
|
||||
return ('', pyaudio.paComplete)
|
||||
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
in_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Opening a stream and starting it MUST
|
||||
# release the GIL before attempting to acquire the device
|
||||
# lock. Otherwise, the following code will wait for the device
|
||||
# lock (while holding the GIL), while the in_callback thread
|
||||
# will be waiting for the GIL once time.sleep completes (while
|
||||
# holding the device lock), leading to deadlock.
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
out_stream.start_stream()
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
def test_stream_state_gil(self):
|
||||
"""Ensure no deadlock between Pa_IsStream{Active,Stopped} and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(_, frame_count, time_info, status):
|
||||
return ('', pyaudio.paComplete)
|
||||
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
in_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Checking the state of the stream MUST
|
||||
# not require the device lock, but if it does, it must release the GIL
|
||||
# before attempting to acquire the device
|
||||
# lock. Otherwise, the following code will wait for the device
|
||||
# lock (while holding the GIL), while the in_callback thread
|
||||
# will be waiting for the GIL once time.sleep completes (while
|
||||
# holding the device lock), leading to deadlock.
|
||||
self.assertTrue(in_stream.is_active())
|
||||
self.assertFalse(in_stream.is_stopped())
|
||||
|
||||
self.assertTrue(out_stream.is_stopped())
|
||||
self.assertFalse(out_stream.is_active())
|
||||
out_stream.start_stream()
|
||||
self.assertFalse(out_stream.is_stopped())
|
||||
self.assertTrue(out_stream.is_active())
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
def test_get_stream_time_gil(self):
|
||||
"""Ensure no deadlock between PA_GetStreamTime and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(_, frame_count, time_info, status):
|
||||
return ('', pyaudio.paComplete)
|
||||
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
in_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Getting the stream time MUST not
|
||||
# require the device lock, but if it does, it must release the
|
||||
# GIL before attempting to acquire the device lock. Otherwise,
|
||||
# the following code will wait for the device lock (while
|
||||
# holding the GIL), while the in_callback thread will be
|
||||
# waiting for the GIL once time.sleep completes (while holding
|
||||
# the device lock), leading to deadlock.
|
||||
self.assertGreater(in_stream.get_time(), -1)
|
||||
self.assertGreater(out_stream.get_time(), 1)
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
def test_get_stream_cpuload_gil(self):
|
||||
"""Ensure no deadlock between Pa_GetStreamCpuLoad and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(_, frame_count, time_info, status):
|
||||
return ('', pyaudio.paComplete)
|
||||
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
in_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Getting the stream cpuload MUST not
|
||||
# require the device lock, but if it does, it must release the
|
||||
# GIL before attempting to acquire the device lock. Otherwise,
|
||||
# the following code will wait for the device lock (while
|
||||
# holding the GIL), while the in_callback thread will be
|
||||
# waiting for the GIL once time.sleep completes (while holding
|
||||
# the device lock), leading to deadlock.
|
||||
self.assertGreater(in_stream.get_cpu_load(), -1)
|
||||
self.assertGreater(out_stream.get_cpu_load(), -1)
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
out_stream.stop_stream()
|
||||
|
||||
def test_get_stream_write_available_gil(self):
|
||||
"""Ensure no deadlock between Pa_GetStreamWriteAvailable and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def in_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx,
|
||||
stream_callback=in_callback)
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
in_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Getting the stream write available MUST not
|
||||
# require the device lock, but if it does, it must release the
|
||||
# GIL before attempting to acquire the device lock. Otherwise,
|
||||
# the following code will wait for the device lock (while
|
||||
# holding the GIL), while the in_callback thread will be
|
||||
# waiting for the GIL once time.sleep completes (while holding
|
||||
# the device lock), leading to deadlock.
|
||||
self.assertGreater(out_stream.get_write_available(), -1)
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
|
||||
def test_get_stream_read_available_gil(self):
|
||||
"""Ensure no deadlock between Pa_GetStreamReadAvailable and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
in_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
input=True,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
input_device_index=self.loopback_input_idx)
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
out_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Getting the stream read available MUST not
|
||||
# require the device lock, but if it does, it must release the
|
||||
# GIL before attempting to acquire the device lock. Otherwise,
|
||||
# the following code will wait for the device lock (while
|
||||
# holding the GIL), while the in_callback thread will be
|
||||
# waiting for the GIL once time.sleep completes (while holding
|
||||
# the device lock), leading to deadlock.
|
||||
self.assertGreater(in_stream.get_read_available(), -1)
|
||||
|
||||
time.sleep(0.1)
|
||||
in_stream.stop_stream()
|
||||
|
||||
def test_terminate_gil(self):
|
||||
"""Ensure no deadlock between Pa_Terminate and GIL."""
|
||||
rate = 44100 # frames per second
|
||||
width = 2 # bytes per sample
|
||||
channels = 2
|
||||
frames_per_chunk = 1024
|
||||
|
||||
def out_callback(in_data, frame_count, time_info, status):
|
||||
# Release the GIL for a bit
|
||||
time.sleep(2)
|
||||
return (None, pyaudio.paComplete)
|
||||
|
||||
out_stream = self.p.open(
|
||||
format=self.p.get_format_from_width(width),
|
||||
channels=channels,
|
||||
rate=rate,
|
||||
output=True,
|
||||
start=False,
|
||||
frames_per_buffer=frames_per_chunk,
|
||||
output_device_index=self.loopback_output_idx,
|
||||
stream_callback=out_callback)
|
||||
# In a separate (C) thread, portaudio/driver will grab the device lock,
|
||||
# then the GIL to call in_callback.
|
||||
out_stream.start_stream()
|
||||
# Wait a bit to let that callback thread start.
|
||||
time.sleep(1)
|
||||
# in_callback will eventually drop the GIL when executing
|
||||
# time.sleep (while retaining the device lock), allowing the
|
||||
# following code to run. Terminating PyAudio MUST not
|
||||
# require the device lock, but if it does, it must release the
|
||||
# GIL before attempting to acquire the device lock. Otherwise,
|
||||
# the following code will wait for the device lock (while
|
||||
# holding the GIL), while the in_callback thread will be
|
||||
# waiting for the GIL once time.sleep completes (while holding
|
||||
# the device lock), leading to deadlock.
|
||||
self.p.terminate()
|
||||
|
||||
@staticmethod
|
||||
def create_reference_signal(freqs, sampling_rate, width, duration):
|
||||
"""Return reference signal with several sinuoids with frequencies
|
||||
specified by freqs."""
|
||||
total_frames = int(sampling_rate * duration)
|
||||
max_amp = float(2**(width * 8 - 1) - 1)
|
||||
avg_amp = max_amp / len(freqs)
|
||||
return [
|
||||
int(sum(avg_amp * math.sin(2*math.pi*freq*(k/float(sampling_rate)))
|
||||
for freq in freqs))
|
||||
for k in range(total_frames)]
|
||||
|
||||
@staticmethod
|
||||
def signal_to_chunks(frame_data, frames_per_chunk, channels):
|
||||
"""Given an array of values comprising the signal, return an iterable
|
||||
of binary chunks, with each chunk containing frames_per_chunk
|
||||
frames. Each frame represents a single value from the signal,
|
||||
duplicated for each channel specified by channels.
|
||||
"""
|
||||
frames = [struct.pack('h', x) * channels for x in frame_data]
|
||||
# Chop up frames into chunks
|
||||
return [b''.join(chunk_frames) for chunk_frames in
|
||||
tuple(frames[i:i+frames_per_chunk]
|
||||
for i in range(0, len(frames), frames_per_chunk))]
|
||||
|
||||
@staticmethod
|
||||
def pcm16_to_numpy(bytestring):
|
||||
"""From PCM 16-bit bytes, return an equivalent numpy array of values."""
|
||||
return struct.unpack('%dh' % (len(bytestring) / 2), bytestring)
|
||||
|
||||
@staticmethod
|
||||
def write_wav(filename, data, width, channels, rate):
|
||||
"""Write PCM data to wave file."""
|
||||
wf = wave.open(filename, 'wb')
|
||||
wf.setnchannels(channels)
|
||||
wf.setsampwidth(width)
|
||||
wf.setframerate(rate)
|
||||
wf.writeframes(data)
|
||||
wf.close()
|
||||
|
||||
def assert_pcm16_spectrum_nearly_equal(self, sampling_rate, cap, ref,
|
||||
num_freq_peaks_expected):
|
||||
"""Compares the discrete fourier transform of a captured signal
|
||||
against the reference signal and ensures that the frequency peaks
|
||||
match."""
|
||||
# When passing a reference signal through the loopback device,
|
||||
# the captured signal may include additional noise, as well as
|
||||
# time lag, so testing that the captured signal is "similar
|
||||
# enough" to the reference using bit-wise equality won't work
|
||||
# well. Instead, the approach here a) assumes the reference
|
||||
# signal is a sum of sinusoids and b) computes the discrete
|
||||
# fourier transform of the reference and captured signals, and
|
||||
# ensures that the frequencies of the top
|
||||
# num_freq_peaks_expected frequency peaks are close.
|
||||
cap_fft = numpy.absolute(numpy.fft.rfft(cap))
|
||||
ref_fft = numpy.absolute(numpy.fft.rfft(ref))
|
||||
# Find the indices of the peaks:
|
||||
cap_peak_indices = sorted(numpy.argpartition(
|
||||
cap_fft, -num_freq_peaks_expected)[-num_freq_peaks_expected:])
|
||||
ref_peak_indices = sorted(numpy.argpartition(
|
||||
ref_fft, -num_freq_peaks_expected)[-num_freq_peaks_expected:])
|
||||
# Ensure that the corresponding frequencies of the peaks are close:
|
||||
for cap_freq_index, ref_freq_index in zip(cap_peak_indices,
|
||||
ref_peak_indices):
|
||||
cap_freq = cap_freq_index / float(len(cap)) * (sampling_rate / 2)
|
||||
ref_freq = ref_freq_index / float(len(ref)) * (sampling_rate / 2)
|
||||
diff = abs(cap_freq - ref_freq)
|
||||
self.assertLess(diff, 1.0)
|
||||
|
||||
# As an additional test, verify that the spectrum (not just
|
||||
# the peaks) of the reference and captured signal are similar
|
||||
# by computing the cross-correlation of the spectra. Assuming they
|
||||
# are nearly identical, the cross-correlation should contain a large
|
||||
# peak when the spectra overlap and mostly 0s elsewhere. Verify that
|
||||
# using a histogram of the cross-correlation:
|
||||
freq_corr_hist, _ = numpy.histogram(
|
||||
numpy.correlate(cap_fft, ref_fft, mode='full'),
|
||||
bins=10)
|
||||
self.assertLess(sum(freq_corr_hist[2:])/sum(freq_corr_hist), 1e-2)
|
Loading…
Reference in New Issue