Mercurial > hg > vampy
view README @ 0:e20e214bdfb5
Added VAMP-Python binding project vampy
author | fazekasgy |
---|---|
date | Tue, 11 Mar 2008 19:47:34 +0000 |
parents | |
children | dc88002ce687 |
line wrap: on
line source
* VamPy is a VAMP plugin wrapper for Python Scripts. WHAT IS IT FOR? you can write VAMP plugins in Python which can do the same as the native C++ plugins plus more if you're using advanced Python modules. you might get into VAMP development more easily this way. you can use it for prototyping your plugin before writing in C++ LIMITATIONS: this is really just a proof of concept. The implementation is not the most efficient. only tested on MacOSX, but in theory should work on other platforms with small fixes The Python C/API is not fully thread safe and correct threading is not yet implemented. (This can cause problems resulting in nasty crashes.) Error checking is incomplete. You better not make a mistake in your Python script, although in most cases you can see what the problem is if you start the host (Sonic Visualiser) from the command line. HOW DOES IT WORK: (1) Make sure you have Python installed. (2) Compile the C++ source or ask me for a binary (MacOS). (3) Copy the library in your Vamp plugin directory like any other VAMP plugins: eg. /Library/Audio/Plug-Ins/VAMP (4) Write your python plugins and copy them to the same place. (5) Each plugin must contain a single class with the same name as your script file. e.g. PyZeroCrossing.py -> calss PyZeroCrossing -Scripts with syntax errors in them are ignored. -Scripts not having the same class as the filename are ignored. -Other unknown scripts are likely to cause a nasty crash. (Don't put other python scripts in your VAMP directory.) WHY PYTHON? Python is a general purpose high level scripting language. It is interpreted, so you don't need to compile your plugins It has very high level libraries. e.g. you can stream audio from your VamPy plugin (it works for me...) Supports functional programming COMPILING AND LINKING: (1) include Python.h wherever it is on your machine (2) this plugin needs to be linked against the Python binary: example on on MacOSX: g++ -O2 -Wall -I. -fPIC -c -o pyvamp-main.o pyvamp-main.cpp g++ -dynamiclib -o vamp-pyvamp-plugin.dylib ./PyPlugScanner.o ./PyPlugin.o ./pyvamp-main.o sdk/vamp-sdk/libvamp-sdk.a -u _PyMac_Error /Library/Frameworks/Python.framework/Versions/2.5/Python OR: (3) There is a modified Makefile from the VAMP-SDK that compiles this plugin by default. TODO: needs more complete error checking needs correct implementation of Python threading more efficient data conversion using the buffering interface or ctypes VAMP 'programs' not implemented support multiple classes per script in scanner ensure proper cleanup, (host do a good job though)