Convolution is an algorithm that is often used for reverberations. If the equation is easy to understand and to implement, the implementation is costly. The other way of doing it is to use Fast Fourier Transform (FFT), but the direct/crude implementation requires latency. If it is possible to optimize the basic convolution code, it is sometimes more interesting to use a different algorithm, as it is the case here.
I’ve explained in earlier posts how to simulate a simple overdrive circuit. I’ve also explained how I implemented this in QtVST (and yes, I should have added labels on those images!), which was more or less the predecessor of Audio TK.
The main problem with simulating non linear circuits is that it costs a lot. Let’s see if I can improve the timings a little bit.
I had the opportunity from Packt Publishing to review the second edition of Numpy Beginner’s Guide. Many thanks to the publisher for this and let’s go to the review.
I’ve looked on github for a good C++ implementation of Cover Trees for nearest-neighbors search, but I didn’t find one. I may have overlooked some repositories, but in the end, implementing it myself wasn’t that difficult.
Continue reading Cover tree for nearest-neighbors
A colleague of mine give me this book, as I use “third generation” VCSs. I decided to check on the author approach on Version Control and his opinion on the matter. The book explores the different approaches of the latest VCS tools, with their advantages and drawbacks. Also, it delves into some algorithmic designs of Distributed VCSs. I’ve already discussed some of these tools, but the book is not a flame war against one DVCS, but more an explanation of all of them.
Continue reading Book review: Version Control by Example
We know now that we won’t have the same serial computing increase we had in the last decades. We have to cope with optimizing serial codes, and programming parallel and concurrent ones, and this means that all coders have to cope with this paradigm shift. If computer scientists are aware of the tools to use, it is not the same for the “average” scientist or engineer. And this is the purpose of this book: educate the average coder.
Continue reading Book review: Introduction to High Performance Computing for Scientists and Engineers
A few days ago, I’ve released my first VST plugin. Now it is time to analyze how it works.
Continue reading QtVST: how QtSimpleOverdrive is implemented
I’m pleased to announce the release of my first VST plugin (Windows 32bits), based on the simple overdrive prototype.
It is a mono filter, with an oversampling of 2 to 32, based on polyphase filters, and the undersampling is done after an 8th order Butterworth lowpass filter with a cut frequency of 22kHz.
The source code will be available (under the GPL) in the future if there is interest in the plugin and its support. The exact way it works will be explained in a future blog post.
The audio plugin is available on Sourceforge: https://sourceforge.net/projects/qtvst/files/QtSimpleOverdrive/
If you find any issue, please submit it on Github: https://github.com/mbrucher/qtvst
Please note that the oversampling can be quite CPU intensive (on my laptop, an Intel Core2 T7200, using an oversampling of 4 at 96kHz uses the full power of one core).
A few months ago, I encountered an issue with Scons and the SubstInFile2 tool. When it is used in a variant dir, when the emitter is called, the variant dir is not yet populated. Unfortunately, the emitter tries to open the file in the variant dir, so this does not work.
The only thing to do is to use the source node in the emitter instead of the variant node. So line 112:
keys = subst_keys(str(s.srcnode()))
And this is it!