The Dplug audio plug-in framework
# Table of contents
Dplug is an open-source audio plug-in framework existing since 2013.
A plug-in framework is a software library whose aim is to insulate audio plug-in creation from platforms and formats woes.
As such, Dplug is used to target different formats and OSes, for use in popular hosts, such as FLStudio, Logic, Pro Tools, Cubase...
Dplug is developped mainly by Auburn Sounds and is located on GitHub:
# Features of Dplug
Dplug lets you create audio plug-ins products aimed at audio production on the desktop.
- macOS, Windows and Linux.
- VST 2.4, VST3, Audio Unit, AAX, and LV2.
- Lightweight, low-overhead client wrappers.
- Trying to be liberal with licensing. You still have to comply with the VST2 licence agreement, the VST3 licence agreement, and the AAX licence agreement. In particular Avid is a gatekeeper for the DPlug AAX client. Dplug is forkable.
- Sophisticated PBR games-like software renderer, and also a fast 2D rasterizer for real-time controls.
- Script and resizing support.
- Supported DAWs listed here.
Maintaining user sessions compatibility and avoiding breaking it is of paramount importance for audio plug-ins developers.
Often you'll want to update Dplug to a major version, but still retain user sessions compatibility.
Dplug's answer to this is Dplug Options. They let you upgrade Dplug without breaking user sessions. Instead you break user sessions at your own pace, when making major updates to your plug-ins.
# What makes Dplug different?
Dplug has a few peculiarities compared to the other plug-in framework:
- Dplug is written in the D programming language.
- Dplug can provide semi-procedural rendering for interfaces in order to have smaller memory and disk footprint.
This rendering is fully customizable so as to support a wide variety of shading techniques. It doesn't use the GPU, so it's very stable and never cause OpenGL driver issues.
- Dplug can use the Wren programming language as an "imperative CSS" to speed-up authoring.
- Dplug is solely made for professional plug-in developers. It can be used free of charge,
however do not expect any personal support; it's not really a framework for beginners.
- That said, Dplug tries to make authoring plug-ins a pleasant experience.
# Easier life through Dplug
Writing and selling audio plug-ins is a bit like portfolio management,
one must offer value while not getting into product debt, offering more products that one can possibly maintain and update.
Still, having an extensive product portfolio is important for revenue. Therefore, one of Dplug's core principle is to try to create the minimum maintenance load,
so that you don't get unforeseen work without your consent.
So, what does Dplug do to make your life easier?
- UI live-coding throught Wren integration.
- Building plug-ins for a single platform is a single
dplug-build command-line invocation.
- Support for Windows and macOS installers out of the box.
- Support for Apple Notarization and code-signing out of the box.
- A number of plug-in tools to speed up development or regression searching.
- All breaking changes are readily documented in the Release Notes (breaking changes are unavoidable, however Dplug uses SemVer to batch them).
# Easier life through D
The D programming language is a general-purpose programming language with static typing, systems-level access, and C-like syntax. It provides strong improvements over C++ along with uniquely composable new kind of abstractions (though Dplug doesn't make use of such power).
D is often praised for being "low friction".
OK. What does D bring to the table, day to day?
- Get faster builds out of the box without header-only libraries or combined source.
- Use one compiler (LDC) for the 3 desktop platforms. Use the same powerful and recent LLVM backend for all your releases.
- Use the standard D package manager DUB. It handle dependencies, can generate IDE projects, and tests.
- Drop the need to learn C++, or if you're experienced keep up with the changes in C++.
- Keep using Visual Studio with VisualD.
"But D is a GC language so you can't possibly do audio with it, right?"
Dplug plug-in runs with the D runtime left disabled, so the D GC is just not running in a Dplug plug-in. It is disabled, so there is zero GC allocation or GC collection in a Dplug plug-in.
This runtime disabling has to be paid dearly, and Dplug users use a restricted subset of the D language.
# Downsides of Dplug
Dplug is a by-product of existing plugin products, and built for enabling and maintaining revenue.
It is not a product by itself, and it doesn't necessarily have the structure to scale to many users.
Feature development get routinely postponed in favour of product creation, or maintenance tasks such as keeping up with macOS.
Here is a list of missing features:
- Sidechain input
- AUv3 and iOS support
- Non-automatable data that would be stored in chunks (example: stored impulse response)
- Video tutorials
We'd like to do those items, but didn't get the time yet. Check the Release Notes to get an idea of Dplug's velocity.
You can also sponsor Dplug, or even better, get involved in the codebase to make it happen.
# Alternatives to Dplug
Be sure to consider the alternatives before settling on a plug-in framework.
For example, JUCE has implemented every one of the missing features listed above, has more documentation, and is possibly more beginner-friendly.
# Made with Dplug
Check out the products made with Dplug.
You can of course build your own UI style.
# Getting started
#Dplug Tutorials series
A series of tutorials around creating plug-ins with Dplug. Those are created in the context of the Dplug meetings.