This post is more a note to myself than a post of general interest. It is also to let people know that I’m still fiddling with pyVST now and then. I’ve been looking at how to build C extensions to python when using numpy using the following link. I’ve got these extensions working in windows by downloading the tarball and compiling the examples using codeblocks.
The examples are C extensions for a python script but what I’m aiming to do with pyVST, is get the plugin dll to start up the python engine and then pass each frame of the data buffer to a python script for processing. The C extension code will make a useful starting point for passing the data between the plugin dll and python. The aim is to make the plugin aware of its file name and then call a python script with the same filename to do the processing. This will eventually alow a user to make plugins without having to touch any C code. I’ve got a bit of time off at the end of this month, so maybe pyVST will get moving a bit more.
There is no documentation on the numpy extensions page for building on a Windows platform, so here is what I did:
- Download the tarball and extract
- Include the C source and header in your poject
- Include the numpy headers directory
- Link to the python library
- Add this missing line to the header file “static PyObject *rowx2_v2(PyObject *self, PyObject *args);”
- In the main source file, ptrvector() allocates n*sizeof(double), but should really allocate pointers to double; so: n*sizeof(double *)
- Set your compiler to build a dll
- Name the output file “_C_arraytest.pyd
- Put the output file in the same dir as C_arraytest.py and run
Hope this helps anyone googling C extensions for numpy under Windows 🙂
I recently found this fantastic tutorial website which teaches the reader the basics of creating video games using the SDL library. This may have only a vague relevance to VST programming, however, the tutorials are incredibly clear and use C++ (rather than straight C used in many other tutorials) throughout. If you’re having trouble learning C++ by reading books with the standard dull “now we shall make an employee class for our payroll system zzzzzZzzzzZzzz” then I strongly suggest that you check this out. The author does not expect any prior knowledge of C++ programming, and it is a great way of learning by doing. The comments of the readers say it all for me.
The author of this tutorial recommends that you use the code::blocks IDE. I too have more recently become an advocate of using code::blocks due to its fantastic debugging capabilities and plugin support for profiling with gprof. Code::Blocks uses the same open source GNU c++ compiler which I use in the tutorials here but has its own build system built in rather than using SCons. The only reason I show the reader how to use SCons is for educational purposes, so that they have a really good idea of what they are doing with the source files in each example I present. It is just as easy to use code::blocks for VST plugin development once you want debugging and profiling support.