Developing VST Plugins for Linux is something that has always been of great interest to me personally. There never seemed to be a framework that was easily portable to Linux aside from JUCE. Why not use JUCE you ask? Don’t get me wrong, JUCE is an excellent framework full of a multitude of useful libraries, but the licensing fees are too high for an independent developer like me. Then there is WDL which I used for a while, but unfortunately, it has been orphaned so future developments are unlikely unless you do them yourself. WDL also doesn’t have support for Linux, and in my experience, it can be a nightmare to manage the projects. I could go on and on comparing JUCE, WDL, and Dplug but I will save that for a later post. In this post, I want to tell my story of why I switched to the new kid on the block: Dplug.
Begin long story…
Sometime about 6 or 7 months ago, I started learning a new language just for fun called D. It was a language that had caught my interest from various blog entries and youtube videos. One of the beautiful things about D is the package manager made for it called Dub. Just out of curiosity I searched the Dub package repository for “vst” and was shocked when “dplug” came up.
So what is Dplug? Dplug is an open source library written entirely in D that can build plugins for Windows and Mac in VST format and Audio Unit format. At first, this seemed too good to be true. I cloned the GitHub repository and followed the instructions in the README for building a sample plugin. I went to the distort example, opened a terminal, and typed in “dub”. Much to my surprise, the plugin built like it was magic. There wasn’t any frustration over using an IDE, no build errors, nothing. Surely something must have gone wrong, it’s never that easy. So I moved the resulting DLL over to my plugins folder and opened my host. Once again I was shocked to see the example plugin open and run beautifully.
At this point I was sold on Dplug, but there was just one thing that still bothered me. Just like WDL, there was no Linux support. After asking the author Guillaume Piolat about the state of Linux support, he mentioned that he had once attempted to add Linux support in the past but ran into problems with x11 and hosts not find the plugins’ entry points (D and the libraries written in it have matured a lot since that time). Guillaume decided to appoint a programmer named Rikki to add support for x11 windowing. Again I was shocked. There was a library for VST/AU plugins that is maintained extremely well and frequently.
Rikki is great when it comes to this sort of task. If you need any work done, especially in D or with windowing, I highly recommend him. http://cattermole.co.nz/
In just a short amount of time, Rikki finished up X11 windowing for Dplug and had a working standalone example. I could hardly contain my excitement to finally see my plugins run on Linux. The plugins didn’t work right off the bat unfortunately. This was due to the plugins not getting a handle on the window to draw to and also not receiving events for the X server. We handled this by having Dplug create its own window and then creating a separate thread to dispatch events and redraw the UI. After a few small changes, we had the plugins opening and properly handling X events.
Finally, there is an open source framework for creating VST plug-ins in Linux. There are no licensing fees to worry about and development is very active.
Dplug is exactly what I was looking for, but I’m not going to say that is the ultimate library for creating audio plugins. The library is still actively being developed so it doesn’t have support for formats like AAX or VST3. Also even though D has a syntax similar to C and C++, it may take a while to adapt to using a different language. If this doesn’t scare you away then I strongly encourage you to give Dplug a chance!
In the following months, if there is enough interest, I may begin a series of tutorials about writing plugins with Dplug. If you are interested in joining our discussion about Dplug, we have a discord server here https://discord.gg/V5xDwFP
The GitHub page for Dplug is here https://github.com/AuburnSounds/dplug
If you are interested in seeing what kind of plugins can be made with Dplug, then you should certainly checkout Auburn Sounds. They use Dplug exclusively. https://www.auburnsounds.com/
As always feel free to contact me at firstname.lastname@example.org