Category Archives: Tools

Tools used for development (construction, profile, monitor, …)

Audio ToolKit: modules for the JUCE framework

As some may know, I’ve switched from wdl-ol to JUCE 5 for my free plugins. In the past, I had to modify by hand all the projects created by the Projucer. And each time JUCE is updated, I need to add these changes to the generated project.

Not anymore.

On the develop branch, and in the next minor release ATK 2.1.2, modules for the Projucer will be available. This will enable an easier integration of ATK in your project, as you will “just” need to add these modules to the Projucer (and some additional include files to make ATK compliant with JUCE hierarchy).

There are currently 11 new modules (shameless comparison, that’s far more than the new DSP module, even if there are some filters than I’m missing, but feel free to propose a pull request with new features!).

See the explanation on the release branch and let me know what you think: https://github.com/mbrucher/AudioTK/tree/develop/modules/JUCE

Buy Me a Coffee!
Other Amount:
Your Email Address:

Using Audio ToolKit with JUCE 5

As some may have seen online, ROLI released a new version of JUCE. The nice thing is that they added a new tier for people like me who don’t sell plugins but who don’t want to release their code under the GPL license for diverse reasons (for me, it was formerly incompatibility between VST3 license and the GPL).

With JUCE 5, you have support for all major APIS, from VST2 to Audio Unit v3 and also AAX or VST3. And you can develop your own plugins. The caveat with this tier is that you have a splash screen and a tracking of your users… (actually, there is a flag to remove both). the advantage is that on MacOS, there is no more SDK conflicts, and I have Audio Unit 3 support

So I’ve started playing with Projucer and built a barebone ATK plugin that doesn’t do anything. What I can say is that the worst part is handling universal binaries, support 32bits plugins, as the JUCE project builder overwrites all my changes. Even adding ATK is painful with the project manager.

So instead, I’m going the WDL-OL here, and keeping this ATKJUCE plugin as the simple plugin I’ll duplicate by changing the names and its content. I have my builders that build the plugins and creates the installers, all that while keeping the same JUCE core code (it is shared by all plugins).

The next step is trying to make sense of the API to build a nicer GUI than what I currently have (probably something flat). Indeed, the tutorials on the GUI are small and too basic, but WDL-OL was no better in that aspect, but with more examples.

Audio Toolkit: Recursive Least Square Filter (Adaptive module)

I’ve started working on adaptive filtering a long time ago, but could never figure out why my simple implementation of the RLS algorithm failed. Well, there was a typo in the reference book!

Now that this is fixed, let’s see what this guy does.
Continue reading Audio Toolkit: Recursive Least Square Filter (Adaptive module)

Review of Intel Parallel Studio 2017: Advisor

Recently, I got access to the latest release of Parallel Studio with an update version of Advisor. 6 years after my last review, let’s dive into it again!
Continue reading Review of Intel Parallel Studio 2017: Advisor

Sorting source files and projects in folders with CMake and Visual Studio/Xcode

Sometimes Visual Studio and Xcode projects just get out of hand. The private project I’m working on has 130 subprojects, all in a single solution, that’s just too much to display in one window. And then I learnt that projects can actually be moved to folders, just like what is possible for files in a project (so you don’t have Source Files and Header Files, but something custom, for instance following the file hierarchy).

They are activated differently, and it’s sometimes not as straightforward, but it works great once it is set up. And as this works for Xcode projects and Visual Studio projects, I was really eager to sort out my Audio Toolkit main project, so it will be the basis of the tests here.

Continue reading Sorting source files and projects in folders with CMake and Visual Studio/Xcode

Announcement: Audio TK 0.7.0

Focus on this release was on performance. As such the core functions were optimized, as well as some tools and EQ.

A new filter dedicated to fast convolution (using a fixed-size partition with a mix of FFT convolution and explicit FIR filter) with 0 latency was added.

Continue reading Announcement: Audio TK 0.7.0

Convert HPCToolkit files to callgrind format

After my post on HPCToolkit, I felt that I prefered QCacheGrind as a GUI to explore profiling results. So here is a gist with a Python script to convert XML HPCToolkit experiments to callgrind format: https://gist.github.com/mbrucher/6cad31e38beca770523b

For instance, this is a display of an Audio Toolkit test of L2 cache misses:

ATK L2 cache misses profile
ATK L2 cache misses profile

Enjoy!

Profiling with HPC Toolkit

I’ve started working with the HPC Toolkit, especially the part where it can use PAPI to read hardware counters and display the result in a nice GUI.

Continue reading Profiling with HPC Toolkit

Audio Toolkit: Zero Latency Efficient Convolution

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.

Continue reading Audio Toolkit: Zero Latency Efficient Convolution