Category Archives: C++

Everything related to the use of the C++ language

Review of Intel Parallel Advisor (part of Parallel Studio 2011)

After my review of Intel Parallel Studio and then my post of Advisor Lite, I had the opportunity of doing the beta of Intel Advisor and then the final version of Parallel Studio.

The review will not be as thorough as the one on Advisor Lite, because Advisor is an update of Advisor Lite. It has some additional features, and that’s what I’d like to focus on.

I won’t dwell into the details of Intel’s new offer, suffice to say that Intel took the opportunity of changing some offers name and of incorporating some parts of Parallel Studio in its other products, and of course on Linux (which was left alone until then).

Continue reading Review of Intel Parallel Advisor (part of Parallel Studio 2011)

Electronic: Simulation of a simple overdrive

There are some effects that are simpler than other. Digital ones are generally easier than analog ones, and purely digital filter are also easier than digitally-transformed analog ones. Linear filters such as passband, cutband, … are easy to digitally design, chorus can be achieved through some spectral computations, delay and reverbation are computationnally expensive but easy to code.

It said that analog devices have a unique sound that digital devices cannot achieve. In fact, much is due to the simplications that occur when digitizing an analog device. One of the most blatant examples is the overdrive, which I took from Simulanalog.
Continue reading Electronic: Simulation of a simple overdrive

Book review: Masterminds of Programming

When twenty or so langage creators are put together to make a book, it can only be interesting. It’s a good revealer of character, as they tend to open their heart. In fact I think that’s exactly what happened in this book.
Continue reading Book review: Masterminds of Programming

Book review: Modern C++ Design: Generic Programming and Design Patterns Applied

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?
Continue reading Book review: Modern C++ Design: Generic Programming and Design Patterns Applied

Fixing the QtAGain plugin

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!

PyVST: another ctypes-based Python VST wrapper

In a previous post, I’ve tried to use Qt for the editor window of a VST plugin. The thing is, I want to do more than just play with a GUI, I also want to see what is done to an audio stream by a plugin.

To do so, I’ve decided to expose the VST interface to Python. There are some implementation I’ve heard of, but they are based on Cython or other wrapping tools. Ctypes has the advantage of not needing a compilation step. There are also every functionality needed, as callback creation (plugins use a callback to ask the host some stuffs), and Python provides the additional mathematical tools to display what the plugin does. It may not be perfect, but it will be enough for a starter.
Continue reading PyVST: another ctypes-based Python VST wrapper

Thinking of good practices when developing with accelerators

Due to the end of the free lunch, manufacturers started to provide differents processing units and developers started to go parallel. It’s kind of back to the future, as accelerators existed before today (the x87 FPU started as a coprocessor, for instance). If those accelerators were integrated into the CPU, their instruction set were also.

Today’s accelerators are not there yet. The tools are not ready yet (code translators) and usual programming practices may not be adequate. All the ecosystem will evolve, accelerators will change (GPUs are the main trend, but they will be different in a few years), so what you will do today needs to be shaped with these changes in mind. How is it possible to do so? Is it even possible?
Continue reading Thinking of good practices when developing with accelerators

Book review: The Art of Concurrency: A Thread Monkey’s Guide to Writing Parallel Applications

Free lunch is over, it’s time to go concurrent. The Art of Concurrency addresses the need for a workflow to develop concurrent/parallel applications.
Continue reading Book review: The Art of Concurrency: A Thread Monkey’s Guide to Writing Parallel Applications

VST plugin AGain reloaded with a Qt GUI

Years ago, I’ve tried to use the GPL version of Qt, but it couldn’t be done without a Qt Solution that was at the time non-free. Now, Nokia has freed and Qt and the appropriate Qt Solution.

I’ve searched if someone has already used this new version to create a VST plugin. The only blog post I’ve found does not use the Qt Solution and is not perfect. According to the documentation what is missing in this solution is precisely what the Solution should do. So let’s try it.
Continue reading VST plugin AGain reloaded with a Qt GUI