Massively parallel processors are in the mood today. We had small parallel processors with a few cores and the ability to launch serevral threads on one core, we have now many cores on one processor and at the other end of the spectrum, we have GPUs. CPUs vendors are now going in this direction with Larabee and Fusion, and GPUs will still have more cores/threads/… It’s thus mandatory to understand this shift now.
Month: March 2010
Debugging software is one of the complex actions in software development. It’s not just about using a debugger, it’s about how do you manage bugs. This book has a pragmatic (amazing, don’t you think?) approach on this matter.
This book may be a little bit old (2001), but it’s still very relevant today. A lot of the material in the book is still not applied in C++ development, it may be time to apply it, doesn’t it?
I am pleased to announce the first release of PyVST.
PyVST is a ctypes-based wrapper for the (open) VST standard developed by Steinberg for audio processing.
Version 0.1 provides basic access to the VST interface, as well as a script to analyze and display the audio process of a plugin. It can be easy-installed or downloaded on its Launchpad page.
Changelog for 0.1:
- Uses the VST dispatcher for several functions:
- processReplacing
- processDoubleReplacing
- open/close the plugin
- open/close the GUI editor
- returns the GUI rectangle
- set the sample rate
- set the block size
- get name/vendor/product
- handle programs
- handle parameters
- suspend/resume
- set/get a parameter
- get number of programs
- get number of inputs
- get number of outputs
- display.py script
- can load any plugin
- displays the editor, if it exists
- uses a stereo sine-sweep
- displays a spectrogram of the process of the stereo sine-sweep
- dumps properties information
Some months ago, I’ve modified the AGain plugin sample from the VST SDK to add a Qt window. At that time, I encountered an issue with Vsthost, which is a common VST host. The issue was that in windowed mode, the plugin’s UI wasn’t displayed. With Traktion, I didn’t have this problem, but the minihost (a sample from the SDK) also didn’t use the UI size.
When developing pyvst, I has to implement the retrieval of the size of the plugin, and I’ve decided to add this to QtAGain. I was surprised to see that it actually work with just giving back the UI size (so fixing this was less than 5 lines).
So now, I know that to impelment an UI for a VST plugin, I have to implement:
- open()
- close()
- but also getRect()
Don’t make the same mistake as I did, do implement all three of them, even if your favorite VST host can live without getRect().
P.S.: Mixing Qt for VST UIs and wxPython for pyvst works really fine!