dplug 3.0.0

Audio plugins framework. VST client + host, AU client, UI widgets.


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

dplug Build Status

<img alt="logo" src="https://cdn.rawgit.com/p0nce/dplug/master/logo.svg" width="200">

dplug is a library for creating audio plugins. Additionally it comes with music DSP algorithms that might be useful for your next-generation MS converter plugin. Currently support:

  • VST 2.x plugins on Windows and Mac OS X, 32-bit and 64-bit.
  • Audio Unit v2 plugins for Mac OS X, 32-bit and 64-bit

Example screenshot

Tutorial

https://auburnsounds.com/blog/2016-02-08_Making-a-Windows-VST-plugin-with-D.html

Contents

dplug:client

  • Abstract plugin client interface. Currently implemented once for VST.

dplug:host

  • Abstract plugin host interface.

dplug:vst

  • VST SDK D bindings
  • VST plugin client

dplug:au

  • Audio Unit plugin client (WIP)

dplug:window

  • implements windowing for Win32, Cocoa and Carbon

dplug:gui

  • Needed for plugins that do have an UI
  • Toolkit includes common widgets (knob/slider/switch/logo/label)
  • PBR-based renderer for a fully procedural UI (updates are lazy and parallel)

dplug:dsp

  • Basic support for audio processing:
    • FFT and windowing functions (include STFT with tunable overlap and zero-phase windowing)
    • FIR and RJB biquads (no higher order IIR sorry)
    • mipmapped wavetables for antialiased oscillators
    • noise generation including white/pink/demo noise
    • various kinds of smoothers and envelopes
    • delay-line and interpolation

Examples

  • examples/distort: mandatory distortion plugin
  • examples/ms-encode: simplest plugin for tutorial purpose
  • examples/time_stretch: resampling x2 through FFT zero-padding

Tools

  • tools/pbr-sketch: workspace for creating plugin background textures
  • tools/release: DUB frontend to build Mac bundles and use LDC with proper envvars
  • tools/process: test plugin host for testing audio processing speed/reproducibility, in D
  • tools/wav-compare: comparison of WAV files
  • tools/lift-gamma-gain: tool to adjust color correction curves on a "finished" UI

How to build plugins

  • Use the DMD >= 2.067 compiler or the LDC >= 1.0.0
  • Install DUB, the D package manager: http://code.dlang.org/download
  • Compiling for Mac or with LDC? Clone and build DUB master: https://github.com/D-Programming-Language/dub for correct flags
  • go in the examples/distort directory
  • type dub --compiler=dmd or dub --compiler=ldc2 depending on the platform

Licenses

dplug has three different licenses depending on the part you need. For an audio plugin, you would typically need all three. I recommend that you check individual source files for license information.

Plugin format wrapping

Plugin wrapping is heavily inspired by the WDL library (best represented here: https://github.com/olilarkin/wdl-ol).

Some files falls under the Cockos WDL license.

Important contributors to WDL include:

  • Cockos: http://www.cockos.com/
  • Oliver Larkin: http://www.olilarkin.co.uk/

However dplug is far from a translation of WDL:

Pros:

  • No dispatcher-wide mutex lock. All locks are of a short duration, to avoid blocking the audio thread.
  • Plugin parameters implement the Observer pattern.
  • No need to use Xcode whatsoever.
  • Float parameters can have user-defined mapping
  • PBR-style rendering lets you have a good visual quality with less disk space, at the cost of more work
  • No need to deal with resource compilers: D can import("filename.ext") them.

Cons:

  • Less battle-tested in general.
  • Hipster compilers are used, though they get better all the time.
  • API may change without notice (pin the version of dplug you use)
  • AAX and VST3 unimplemented
  • No resizeable UI yet.
  • No HDPI support yet.
  • No modal windows.

VST SDK translation

This sub-package falls under the Steinberg VST license.

VST is a trademark of Steinberg Media Technologies GmbH. Please register the SDK via the 3rd party developper license on Steinberg site.

Before you make VST plugins with dplug, you need to read and agree with the license for the VST3 SDK by Steinberg. If you don't agree with the license, don't make plugins with dplug. Find the VST3 SDK there: http://www.steinberg.net/en/company/developers.html

Misc

Other source files fall under the Boost 1.0 license.

FAQ

  • What is the minimum Windows version supported?

Windows Vista. But users report plugins made with both DMD and LDC work on Windows XP.

  • What is the minimum OSX version supported?

Mac OS X 10.7+ Probably possible to go below in cases, but impractical. To try that modify the "release" tool. D compilers do not support OS X 10.6 anymore.

  • What D compiler can possibly be used?

See .travis.yml for supported compilers.

  • Is dplug stable?

No. The interface tend to change for improvements. Pin the version you use using DUB version specifications.

Rendering

Release notes

  • v3.x.y:
  • Audio Unit compatibility added, with both Cocoa and Carbon UI. What is still missing from AU: Audio Component API, sandboxing, v3. In other words it's on parity with IPlug but not JUCE.
  • The release tool is now much more friendly to use.
  • Special keys in dub.json are now expected in a plugin.json file next to dub.json. In the future it will be the place of autority for information about a plugin, for now this has to be duplicated in buildPluginInfo() override. An empty plugin.json is OK, defaults are in place.
  • The Wiki became a place to visit.
  • no API guarantee yet. Do not expect things not to change.
  • v2.x.y:
  • this is the next release, and API will break without notice
  • supports VST for 32-bit and 64-bit, Windows and Mac
  • release tool now expects a VST or AU configuration, see the distort example for details
  • special dub.json key CFBundleIdentifier became CFBundleIdentifierPrefix, see how distort works to update your plugins dub.json
  • 10.6 compatibility dropped.
  • v1.x.y:
  • initial release, VST support for 32-bit and 64-bit, Windows and Mac
Authors:
  • Guillaume Piolat
  • Andrej Mitrovic
  • Sean M. Costello (Hilbert transformer)
Sub packages:
dplug:core, dplug:dsp, dplug:client, dplug:host, dplug:vst, dplug:au, dplug:window, dplug:gui
Dependencies:
none
Versions:
13.4.6 2023-Jan-30
13.4.5 2023-Jan-17
13.4.4 2023-Jan-16
13.4.3 2023-Jan-16
13.4.2 2023-Jan-14
Show all 613 versions
Download Stats:
  • 24 downloads today

  • 178 downloads this week

  • 943 downloads this month

  • 17915 downloads total

Score:
4.8
Short URL:
dplug.dub.pm