-
Notifications
You must be signed in to change notification settings - Fork 32
Release notes
-
Dplug v14.7 (15th Nov 2024) Supported LDC >= 1.28 and <= 1.36
- Speed-up all image resize by 2.2x with
stb_image_resize2-d
package. No visual changes. Resizing a plug-in window is now visibly faster. See Issue 848 for details. -
NEW
dplug-build
now features--redub
and--reggae
flags, to build with other build systems thandub
. It can lead to faster iteration times.
- Speed-up all image resize by 2.2x with
-
Dplug v14.6 (6th Nov 2024) Supported LDC >= 1.28 and <= 1.36
-
NEW CLAP support with
dplug:clap
.
-
NEW CLAP support with
-
Dplug v14.5 (15th Oct 2024) Supported LDC >= 1.28 and <= 1.36
-
NEW Package
canvasity
provides a new canvas option in addition todplug:canvas
. See Issue 860 for development details.-
distort
example updated to show usage of eitherdplug:canvas
orcanvasity
. -
turtle
has an example comparingdplug:canvas
andcanvasity
output. - Read this Wiki page to see how to use either of the canvases.
-
-
NEW Package
-
Dplug v14.4 (22th Jul 2024) Supported LDC >= 1.28 and <= 1.36
-
NEW Option
futureVST3FolderWindows
has been introduced. This follows the VST3 specification better. See Options for details.
-
NEW Option
-
Dplug v14.2 (5th Dec 2023) Supported LDC >= 1.28 and <= 1.36
- NEW The macOS Compatibility Advice page has been introduced. This is a summing up of the various constraints for optimal customer coverage.
-
NEW
dplug-build
can use a different compiler for x86_64 builds with the--compiler-x86_64
flag.
That allows mixed compilers in Universal Builds.
-
Dplug v14.1 (21th Nov 2023) Supported LDC >= 1.28 and <= 1.34
-
NEW Option
futurePBREmissive
has been introduced. This allows better graphics in PBR. See Options for details. -
NEW Support for the FL Studio plug-in format (aka
FLP
).- Currently a x86_64-only, Windows-only format.
- NSIS installer can install and uninstall a plug-in inside FLStudio install directory.
- See Distort and Clip It examples for how to use the
FLP
format.
In short:- Add
"dplug:flp"
in your"dependencies"
indub.json
- Add a new configuration whose name begin with
"FLP"
with the version identifier"FLP"
- Update your dplug-build to the latest, use
dplug-build -c <confname>
to build a FLP bundle.
- Add
- Some read: FLP Implementation Notes.
-
NEW
canvas.fillRule(FillRule.evenOdd);
andcanvas.fillRule(FillRule.nonZero);
(default). -
NEW
canvas.globalCompositeOperation = CompositeOperation.{sourceOver|add|subtract|lighter|lighten|darken};
.
Default blend mode issourceOver
, also the fastest and only option available before. Other blend modes won't skip holes in paths.
-
NEW Option
-
Dplug v14.0 (1st Nov 2023) Supported LDC >= 1.28 and <= 1.34 1.28 strongly recommended to avoid Issue #801
-
NEW Updated notarization method to use
notarytool
. -
NEW Option
futureVST3MIDICC
has been introduced. This allows proper support of MIDI CC, Channel Pressure and Pitch Bend messages in VST3. See Options for details. -
NEW Option
futureBinState
has been introduced. It allows saving arbitrary state in sessions, with a lot of caveats. See Options for details. -
NEW Vec!T allocation scheme smarter, more like
std::vector
. New methods.capacity
and.shrinkToFit
forVec!T
. -
BREAKING
dplug:host
API had to change to benothrow @nogc
like the rest of Dplug. See this commit for details.
Onlydplug:host
users are affected. -
BREAKING Parsing or emitting bytes with
dplug.core.binrange
is now done with error codes rather than throwing exceptions. Dplug is now free of exceptions (except intools/
). Ancient signatures will fail to compile, but won't silently fail. -
BREAKING All deprecated things removed, such as:
- Rare
dplug.graphics.draw
functions have been removed. -
dplug.dsp.smooth
has been removed. - Runtime Sections has been removed, it never really worked anyway.
-
dplug.core.stackallocator
has been removed, it wasn't used anywhere.
- Rare
-
NEW Updated notarization method to use
Tools aside, the main Dplug libraries are now devoid of exceptions (no more throw mallocNew!Exception
), and are now fully nothrow @nogc
. In the light of portability, please try to not throw exceptions yourself.
-
Dplug v13.8 (23th Oct 2023) Supported LDC >= 1.28 and <= 1.34 1.28 strongly recommended to avoid Issue #801
-
NEW
notarytool
-based notarization that replaces the legacy deprecated notarization withaltool
. The old notarization method is still available with a newdplug-build --legacy-notarization
flag, but this method will be deprecated on 1st Nov 2023 by Apple. Please update yourdplug-build
to use the newer method.
-
NEW
-
Dplug v13.7 (21th June 2023) Supported LDC >= 1.28 and <= 1.34
-
NEW
UIImageKnob
now supports another format for textured PBR knobs. The legacy format continues to exist for now, but the newer one should allow easier authoring and more efficient draw, for nicer knobs. Seeimageknob.d
for details.
-
NEW
-
Dplug v13.6 (26th May 2023) Supported LDC >= 1.28 and <= 1.32
-
NEW
dplug-build
now supports bothdub.json
anddub.sdl
recipe files for your plug-in projects.
-
NEW
-
Dplug v13.5 (30th Mar 2023) Supported LDC >= 1.28 and <= 1.31
-
NEW Support for programmatic .QB voxel export of the PBR buffers and final render.
This allows to get a 3D model of your PBR plug-in, out of the 2D G-buffers.
See the
distort
example for usage example. Programmatic PNG screenshot also possible.
-
NEW Support for programmatic .QB voxel export of the PBR buffers and final render.
This allows to get a 3D model of your PBR plug-in, out of the 2D G-buffers.
See the
-
Dplug v13.4 (6th Jan 2023) Supported LDC >= 1.28 and <= 1.31
-
NEW Support for LDC 1.31. With the new DUB it embeds, you cannot build plugins DLL just with
dub
on Windows anymore. For this use case, use a newerdplug-build
which will set the rightDFLAGS
. You also need to remove"$schema"
and"comment"
fromdub.json
. -
NEW Support for QOIX file format.
dplug:graphics
is now relying ongamut
package. Only used for file loading, for now. -
NEW Ability for widgets to signal they should not be drawn in parallel with other widgets. Allows them to invoke the graphics threadpool in
onDrawRaw
/onDrawPBR
, see commit for details. For example, the PBR backgrounds are now resized in parallel. -
The graphics threadpool now has 3 threads maximum, instead of 2 maximum. This improves visual latency at the cost of total CPU usage.
-
NEW
dplug-build
can build and package plugins from any directory now with the new--root
flag.
You don't need to be in the same directory anymore!Example:
$ dplug-build --root /my/path/to/product
builds the plug-in in/my/path/to/product
.However, you will need to update your paths passed to the linker in
dub.json
as you'll see:
ld: can't open -exported_symbols_list file: source/module-vst2.lst
In that case, replace that path by:"$PACKAGE_DIR/source/module-vst2.lst"
in yourdub.json
.
Those pathes exist for symbol stripping (important for binary size). See examples in doubt.
-
-
Dplug v13.3 (14th Dec 2022)
-
NEW Fixed Z Order API: The
setZOrder()
call is being replaced by the equivalent.zOrder
property.myUIElement.zOrder = 9; // Equivalent to myUIElement.setZOrder(9); both syntax available for now
-
.zOrder
is now available from Wren. -
setDirtyWhole
is called, if the Z order of a widget changes.
Reminder: Z order defines priority for being drawn on top, receiving mouse clicks, etc. . The higher, the higher the priority.
(Warning: This priority is only parent-local for mouse. Also Raw widget are always on top of PBR widgets regardless of Z.)
AllUIElement
start their life with a zOrder of value 0.
When Z order is left unspecified, widgets are drawn inaddChild
order. -
-
-
Dplug v13.2 (12th Dec 2022)
-
NEW Dplug now support infinite plugin tail sizes, and
float.infinity
is the new default return value fortailSizeInSeconds()
.
It is the only correct value for synths, and effects that can generate sound. The previous default of 2 seconds was a trap.
As said in the Plug-in Launch Checklist, it is highly advised to choose a deliberate value for yourtailSizeInSecond()
override.
-
NEW Dplug now support infinite plugin tail sizes, and
-
Dplug v13.1 (6th Dec 2022)
-
NEW Dplug can now profile its UI performance and output a JSON in Trace Event Format. The implementation uses thread-locals for less synchronization.
Follow this tutorial to know how to use
Dplug_ProfileUI
.
-
NEW Dplug can now profile its UI performance and output a JSON in Trace Event Format. The implementation uses thread-locals for less synchronization.
Follow this tutorial to know how to use
-
Dplug v13.0 (24th Oct 2022) Supported LDC >= 1.28 and <= 1.30, recommended to go v13.0.4+ directly
-
NEW macOS Ventura support. Plug-ins made with Dplug v12 will, for the time being, work on Ventura, but this received one additional "future-proof" fix with AU validation.
-
NEW AAX Universal Binary 2 support. You can now produce AAX UB2 with a x86_64
dplug-build
and EDEN SDK 5.6+.- BREAKING It is unclear if this M1-compatible EDEN works in earlier Protools or Rosetta Protools.
- If Protools has scanning problems, remove the AAX from
/Library/Application\ Support/Avid/Audio/Plug-Ins
and reinstall it.
-
BREAKING
UIElement.onMouseClick
returns aClick
enum instead of abool
./// Result of `onMouseClick`, was the mouse click handled? enum Click { handled, /// click handled, no drag. startDrag, /// click handled AND it start new drag. (previously: true) unhandled /// click not handeld, pass it around. (previously: false) }
To keep the exact same behaviour:
- replace
return true;
byreturn Click.startDrag;
in your own widgetsonMouseOver
callback. - replace
return false;
byreturn Click.unhandled;
in your own widgetsonMouseOver
callback. -
Do not use
Click.handled
when just porting to v13, this may break existing widget logic sinceonStartDrag
/onStopDrag
won't be called.
Prefer safe mechanical translation withClick.startDrag
andClick.unhandled
only, for now.
- replace
-
NEW and BREAKING
IParameterListener
has changed to be able to display parameter hints without clicking.override void onBeginParameterHover(Parameter sender){} // This parameter is newly hovered by mouse (mouseOver). override void onEndParameterHover(Parameter sender){} // This parameter stopped being hovered by mouse (mouseOver).
This breaks ALL widgets implementing
IParameterListener
directly.Additionally, widgets that want to tell a parameter can be modified MAY implement this with balanced calls to:
Parameter.beginParamHover() Parameter.endParamHover()
This is similar to
beginParamEdit
/endParamEdit
but for parameter hovering.
Typically the best place for this isonMouseEnter
/onMouseExit
, such as:override void onMouseEnter() { _param.beginParamHover(); } override void onMouseExit() { _param.endParamHover(); }
But you can do it later, depending on your hover display needs. (Using the
futureMouseDrag
option is recommended in this case, to avoid the "mouseover" element changing while dragging.)However if you do not plan to ever use
onBeginParameterHover
/onEndParameterHover
for displaying parameters values in your plug-in, this stuff is not useful. -
BREAKING Option
futureVST2Chunks
is now default. UselegacyVST2Chunks
version identifier to revert to the old behaviour. Please read Options for details. This breaks user sessions, BE CAREFUL. -
BREAKING Option
futureZOrder
is now default. UselegacyZOrder
version identifier to revert to the old behaviour. Please read Options for details. -
BREAKING No more need to build a FFT if your plugin doesn't use one. Everything related to FFT is now in
dplug:fft
.-
dplug:dsp
doesn't depend upondplug:fft
anymore, butdplug:fft
now depends upondplug:dsp
. -
minimumPhaseImpulse
andtempBufferSizeForMinPhase
moved todplug:fft
, since it uses a FFT to do so. -
fft.d
moved todplug:fft
-
FIR!T.makeMinimumPhase()
has been removed
-
-
BREAKING Option
legacyMouseOver
removed. Read Options for details. -
BREAKING Option
legacyBlinnPhong
removed. Read Options for details. -
Name
BuiltinComplex!T
is deprecated, importstd.complex
and use nameComplex!T
, which is the same. -
Parameter dragging is likely to be smoother thanks to the #718 fix.
-
A bit sharper and faster image resizing, with "Magic Kernel Sharp 2013 86%" kernel instead of Lanczos3. This improves the quality of resized things, especially PBR and at 0.5x size.
-
-
Dplug v12.8 (4th Oct 2022)
-
NEW Support for codesigning "in the cloud" on Windows, including choosing the timestamp server URL.
New
plugin.json
keys:-
"developerIdentity-windows"
selects a certificate from its name, overrides"keyFile-windows"
. (only when cloud signing) -
"certThumbprint-windows"
selects certificate from its footprint, overrides"keyFile-windows"
. (only for AAX when cloud signing) -
"timestampServerURL-windows"
uses a given RFC3161 timestamp server URL. (recommended)
-
- Better behaviour of
onMouseWheel
on macOS: only ever send -1 or 1 as wheel offset, which fares better in an app.
-
NEW Support for codesigning "in the cloud" on Windows, including choosing the timestamp server URL.
New
-
Dplug v12.7 (27th May 2022)
- NEW Read support for the QOI image format. This can be helpful when large transparent PNG are too expensive.
-
Dplug v12.5 (14th Apr 2022)
-
NEW Fixed visibility API, replacing the now-deprecated
setVisible
call:
myUIElement.visibility = true; // Make UI sub-tree visible, including dirty rects myUIElement.visibility = false; // Make UI sub-tree hidden, including dirty rects
Now the element is properly redrawn, making it the preferred way to have multiples pages in a plug-in UI.
AllUIElement
start their life with a visibility flag set to true.
Visibility is inherited from parent widget: if a parent is hidden, then the whole UI sub-tree is hidden.
An invisible widget can't get clicked, hovered, or mouse-wheeled. -
NEW Fixed visibility API, replacing the now-deprecated
-
Dplug v12.4 (8th Feb 2022)
- NEW MIDI output support (WIP, it works except Audio Unit).
-
Dplug v12.3 (6th Jan 2022)
- NEW Add a limited form of Wren scripting support. Read Making a Scriptable UI for details. Use v12.8+ for Wren arm64 support.
-
NEW
wav-compare
can output a spectrogram of an audio difference. -
double
support for the FFT andFFTAnalyzer
.
-
Dplug v12.0 (10th Jul 2021) Supported LDC >= 1.24 / Recommended LDC = 1.28
-
BREAKING if you are upgrading to a LDC >= 1.27, you need to change your
dub.json
plugin files (in order to keep a static D runtime for Windows builds). The line:"dflags-windows-ldc": ["-mscrtlib=libcmt"],
needs to be become:
"dflags-windows-ldc": ["-mscrtlib=libcmt","-fvisibility=hidden", "-link-defaultlib-shared=false"],
-
BREAKING Starting with DMDFE 2.097 builtin complex numbers are deprecated in D.
Dplug now usesstd.complex
instead. In practice this produces no change in performance nor precision. You must replace your usage ofcfloat
andcdouble
byComplex!float
andComplex!double
. -
The
dplug:fft
package is now replacing thepfft
package. -
BREAKING
dplug.graphics.font.fillText
is not a template anymore. Now only works withImageRef!RGBA
and aconst(char)[]
. -
BREAKING Removal of
dplug.core.cpuid.d
. It wasn't used anywhere, normally you aren't affected. Use packagemir-cpuid
if you really need that. -
Lower memory usage, faster PNG and JPEG loading. For a PBR plug-in, backgrounds are now decoded on the fly at each resize.
-
Ability to use a 10-bit PNG as depth in
PBBackgroundGUI
. -
Better-looking and faster normals extraction from depth.
-
Anti-aliased specular highlights in PBR.
-
BREAKING
pace.json
has disappeared in favor ofplugin.json
.
This avoid duplication of 3 codesigning keys in bothpace.json
andplugin.json
, when building AAX.
Asplugin.json
is included in the plugin binary, it is of the utmost importance you use"!PROMPT"
or an envvar for password fields.
See the AAX Guide for more details. -
Support for Windows LV2 (32-bit and 64-bit).
-
Lots of resizing fixes (eg: bad size in macOS, bad size in REAPER and Cubase, glitches).
-
BREAKING Option
legacyPBRNormals
has been removed. You can't have ugly normals anymore. Read Options for details.
-
-
Dplug v11.0 (12th Mar 2021) Recommended Dplug == 11.0.18. Supported LDC >= 1.24 and <= 1.26
-
NEW Support for plugin resizing. There is a full guide in the Wiki: Making a Resizeable UI.
-
BREAKING
gfm:math
has been moved to a new subpackagedplug:math
. The new package provides only vectors, matrices, and boxes (rectangles). This will help reduce build time and maintenance load, asgfm:math
can be abandoned now. You should replaceimport gfm.math.xxxx;
byimport dplug.math.xxxx;
. -
BREAKING all "VST" names are now replaced by "VST2" names. This renaming concern everything related to VST 2.4 in Dplug: subpackage name, module identifiers, configurations... To upgrade your plugins:
- replace your dependencies upon
dplug:vst
intodplug:vst2
in yourdub.json
. - VST 2.4 configurations in your
dub.json
must now start with aVST2
prefix instead of just aVST
prefix. - For convention,
module-vst.lst
was renamed tomodule-vst2.lst
. Same formodule-vst.ver
renamed inmodule-vst2.ver
. These file names must be renamed both in your project tree, and indub.json
. - Update your
dub.json
according to the Dplug VST2 guide for Dplug v11. - Build a newer
dplug-build
based upon Dplug v11.
- replace your dependencies upon
-
BREAKING The semantics of
UIElement.reflow()
method andUIElement.position
setter have changed.- changing the position with the
UIElement.position
setter now invalidates graphics buffers and callreflow()
to compute children placement. - the new goal of the
reflow()
method is to only position children. It can use theposition
getter for that.
Example:
// What this line does: // 1. Update _widget._position field // 2. Call `_widget.setDirtyWhole()` on new and former _position // 3. Call `_widget.reflow()` to recompute `_widget`'s children position. _widget.position = rectangle(20, 20, 60, 60);
Using the
position
setter is the preferred method of moving an object. Do not use_position
directly. - changing the position with the
-
dplug:cocoa
anddplug:carbon
merged into a newdplug:macos
sub-package. Normally you don't have anything to do, as this is an internal Dplug dependency.
-
- Dplug v10.0 (27th Oct 2020) Compilers below LDC 1.24 are now unsupported. Recommended Dplug >= 10.0.5.
-
NEW Now supporting macOS Big Sur, and Apple Silicon architecture (
arm64
).- Use LDC 1.24 (See LDC 1.24 release and installation instructions).
- Rebuild the latest
dplug-build
using a regular$ dub
command (dplug-build
will stay an x86_64 executable). - Use
dplug-build
with-a all
on a macOS setup that can build for the arm64 architecture (Xcode 12). LV2 and AAX are not supported with thearm64
target.dplug-build
will produde Universal Binaries for VST2/VST3/AU, with botharm64
andamd64
binaries.
Note: Universal Binaries can be loaded by both arm64 and x86_64 hosts, so they are necessary for proper Apple Silicon support.
-
BREAKING macOS 10.11 is now unsupported. The minimum supported macOS version is now 10.12.
-
BREAKING Option
futureMouseCursor
is now default. UselegacyMouseCursor
for previous behaviour. Please read Options for upgrade instructions. -
BREAKING Option
futureAUHighResolutionParameters
is now default. UselegacyAUHighResolutionParameters
for previous behaviour. Please read Options for upgrade instructions. ATTENTION unless you produce a new, incompatible version of your plug-in you MUST uselegacyAUHighResolutionParameters
to avoid breaking Logic user sessions. -
BREAKING Option
futurePBRNormals
is now default. UselegacyPBRNormals
for previous behaviour. Please read Options for upgrade instructions. -
BREAKING Option
futureBlinnPhong
is now default. UselegacyBlinnPhong
for previous behaviour. Please read Options for upgrade instructions.
-
-
Dplug v9.3 (20th Sep 2020) Compilers below LDC 1.17 are now unsupported.
-
NEW Now supporting Raspberry Pi as a target.
- Checkout the Dplug repository on Raspberry Pi OS. (>= v9.3.1)
- Install
ldc
anddub
withsudo apt install ldc
andsudo apt install dub
. - Build
dplug-build
with$ dub
and add it to yourPATH
. - Checkout a plug-in and update its
dub.json
in the following way:becomes:"dflags-linux-ldc": ["-link-defaultlib-shared=false", "-fvisibility=hidden"],
"dflags-linux-ldc": ["-link-defaultlib-shared=false"], "dflags-linux-x86_64-ldc": ["-fvisibility=hidden"],
- Build an ARM32 binary with
$ dplug-build -c LV2
or$ dplug-build -c VST
-
Note that
intel-intrinsics
semantics are emulated for ARM32 and ARM64, at a slight performance cost. Until this issue is resolved, plug-ins operate on ARM at a performance penalty.
-
-
Dplug v9.2 (28th Apr 2020) Recommended version is >= v9.2.5 when using the Canvas
-
NEW A wild sub-package appears!
dplug:canvas
provides easy software rendering with a HTML5 Canvas-like API.- Based on a modified cg2d, a very fast software renderer.
dplug:canvas
draws 4 pixels at once. - See ClipIt for usage example.
- See features of the renderer...
Modern audio plug-ins are feedback-heavy. Until now providing real-time graphs in the Raw layer was difficult and manual.
dplug:canvas
makes it much easier and faster, in order to have more audio feedback built into the UI. - Based on a modified cg2d, a very fast software renderer.
-
-
Dplug v9.1 (1st Dec 2019) Recommended version is >= v9.1.8
- NEW The default Compositor can now be replaced by a custom one, see 5 Tips for Customizing Your Dplug Plug-In UI Style.
- Faster PBRCompositor performance (-26% CPU usage and less thread launching), first UI opening is 10% quicker
- Fixed Linux compatibility a version above or equal to v9.1.0 is recommended.
-
Dplug v9.0 (25 Aug 2019): Recommended compiler is LDC 1.17.0
-
NEW Support for macOS 10.15 Catalina, and notarization. See the Notarization Guide for guidelines.
-
dplug-build
now support the--notarize
switch. You must use--notarize --installer
to have macOS 10.15+ compatibility. Naked plug-in builds don't get notarized.
-
-
BREAKING Plug-ins for Linux are now linked with a static Phobos and DRuntime. See the distort or clipit example and check your dub.json against theirs. This should allow safer redistribution.
-
BREAKING Dplug doesn't support 32-bit builds and Universal Binaries on macOS anymore. Because support is removed since Xcode 10 anyway.
=> Hint:
module-au.lst
has changed, update it with the one inexamples/distort
orexamples/clipit
. -
BREAKING LDC must be properly configured now on Windows, see Getting Started. This allow to use the linker of your choosing with LDC.
=> We recommend setting a Windows envvar
LDC_VSDIR
to "non-existing-path". -
BREAKING Option
futureMouseOver
is now default. UselegacyMouseOver
for previous behaviour. Please read Options for upgrade instructions. -
Older names for getting parameter values like
readFloatParamValue()
weredeprecated
. UsegetParam!float
instead. Be careful becausereadParam!EnumType()
must be given anenum
and gives back thatenum
type, whereasreadEnumParamValue()
would return an integer. Same semantics otherwise. -
BREAKING In your
dub.json
, replace"lflags-windows-ldc": [ "libcmt.lib", "/nodefaultlib:msvcrt.lib", "/nodefaultlib:vcruntime.lib" ],
by
"dflags-windows-ldc": ["-mscrtlib=libcmt"],
It does the same thing and will let you use all linkers coming with LDC, instead of only Microsoft's
link.exe
.
-
-
Dplug v8.4 (28th May 2019)
-
dplug-build --installer
support for Windows. See PR #361 for details on how to use it.
-
-
Dplug v8.3 (12th Mar 2019)
- LV2 plug-in format support. See any of the examples to see how to use it.
-
dplug-build
now accepts configurations starting with"LV2"
. - plug-in entry points can be simplified using
mixin(pluginEntryPoints!MyPluginClient);
instead ofversion(VST)
blocks.
-
Dplug v8.2 (16th Dec 2018)
- VST3 plug-in format support. See the
distort
andclipit
example for how to use it. -
dplug-build
now accepts configurations starting with"VST3"
.
Please note that you must sign a VST3 Agreement with Steinberg in order to redistribute VST3 plug-ins made with Dplug. Whether Dplug is GPLv3-compatible is unknown.
- VST3 plug-in format support. See the
-
Dplug v8.0 (7th Oct 2018)
-
Changes to
dplug-build
:- New flag
--final
as a shortcut to--force --combined --build release-nobounds
- (macOS) intermediate builds are hidden in
builds/temp
- Any
--compiler
value accepted, like DUB does - BREAKING no more support for single lib LDC on Windows. Use the multi-lib LDC (both 32-bit and 64-bit in the same package).
-
BREAKING
licensePath
inplugin.json
must now point to a Markdown.md
file or a HTML.html
file. - (macOS) Ability to build a Mac installer
.pkg
package with the new--installer
flag:dplug-build -c VST-FULL -c AU-FULL --installer --final
will build an optimized, signed installer for Mac. You need both an Apple Developer ID "Installer" certificate, and an Apple Developer ID "Application" certificate for this. - If no configuration is selected, the first one in
dub.json
is selected (previously: all). - Error when specifying a configuration that doesn't exist/with no match.
- New flag
-
New rendering architecture: Raw and PBR layers, the Raw layer is drawn on top of a cached PBR layer. Practically this change means about 2x less CPU usage from GUI, for everyone.
Conceptually the updates flow this way:
UIElement.onDrawPBR => mipmapping => ICompositor => UIElement.onDrawRaw => channel swap
-
BREAKING if you have custom widgets:
-
UIElement.onDraw
is now replaced byonDrawPBR
andonDrawRaw
depending on which layer you want to draw. Note: that if the PBR layer changes, bothonDrawPBR
andonDrawRaw
will be called since the Raw layer is always on top of the PBR Layer. -
UIElement
now has UIFlags in its constructor to say whether a widget can be animated and where it renders.
-
-
BREAKING if you previously used 0-physical AND pbr-widgets with manual caching:
-
setDirty
now exists in two versions:setDirty(UILayer.guessFromFlags)
(default) orsetDirty(UILayer.onlyRaw)
. The latter only exists for PBR widgets that render to both layers, and need a fast render path to the composited RGBA buffer. Most of the time you can still keep usingsetDirty()
- removal of the now-useless Physical channel. You can have fast behaviour using
setDirty(UILayer.onlyRaw)
or using widgets withoutflagPBR
-
-
BREAKING if you used color correction from
PBRCompositor
:-
Color correction is now a regular
UIElement
operating on the Raw layer (see examples/distort to implement) Any kind of post-processing effect can be implemented likewise, provided it works on RGBA8 pixels.
-
Color correction is now a regular
-
BREAKING if you used
UIBufferedElement
-
UIBufferedElement
has been split inUIBufferedElementRaw
andUIBufferedElementPBR
depending on which layer you want to bufferize. These widgets allows you to simplify redraw logic and avoid thedirtyRects
rule.
-
-
Note that widgets in
dplug:flat-widgets
anddplug:pbr-widgets
have been updated. -
Less thread launching for graphics, no PBR or Mipmap thread is launched at all if there is nothing to do. Many other graphics optimizations: #270
-
-
Dplug v7.0 (5th Jul 2018)
-
Starting with v7.1.y, the D runtime can be enabled back in so-called "runtime sections" (see
tests/using-runtime
, dangerous feature). Still buggy on Linux. -
BREAKING Dropping compatibility of old compilers. New requirements: LDC >= 1.8 and DMD >= 2.078
-
BREAKING VST2 plugin building now depends on the VST SDK being present on the system. Point a
VST2_SDK
environment variable to the correspondingVST2_SDK
directory in the VST SDK. This requirement trickles down to buildingdplug:host
and related tools.Example:
export VST2_SDK=/Users/MyName/vstsdk3610_11_06_2018_build_37/VST_SDK/VST2_SDK
In order to distribute VST2 plug-ins, you MUST sign an agreement with Steinberg.
-
BREAKING Removed deprecated modules
dplug.core.alignedbuffer
,dplug.pbrwidgets.panel
,dplug.dsp.envelope
and all symbols markeddeprecated
in v6. This shouldn't break anything if your plug-in was building without warning in v6.
-
- Dplug v6.0 (5th Dec 2017)
- AAX Native support for Windows and macOS, 32-bit and 64-bit.
-
plugin.json
needs an additionalcategory
key. See the accepted values indplug.client.daw
. The keyCFBundleIdentifierPrefix
is now mandatory. -
plugin.json
now has a JSON Schema. Use eg. VSCode to have auto-completion on it. - Minimum required Mac OS X version is now 10.8 or later.
- Minimum required LDC version is now 1.2 or later.
- The
release
tool has been renamed todplug-build
. For the architecture switch (-a
), it now only accepts-a x86
and-a x86_64
to match what DUB does.-a x32
,-a x64
and-a x86-64
are now disallowed options. - Much improved Linux stability, with many fixes to
x11window.d
. - New: list of compatible hosts in the Wiki.
-
Dplug v5.0 (22th Aug 2017)
- Linux VST support (64-bit) with X11 windowing.
- No more need for module.def (need LDC >= 1.1 on Windows).
-
plugin.json
now optionally parsed at compile-time (recommended). - PBR widgets seggregated in the new
dplug:pbr-widgets
subpackage.
Known bugs: no MIDI input in Cubase and Bitwig, X11 window backend rarely works. Using v6 recommended.
- Dplug v4.0 (2nd Nov 2016)
- macOS Sierra support fixed (also works in macOS High Sierra).
- To allow that, the D runtime is now linked with but disabled. No GC, no TLS, no global ctor/dtor.
- Dplug v3.0 (9th May 2016):
- 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 aplugin.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 inbuildPluginInfo()
override. An emptyplugin.json
is OK, defaults are in place. This file is consumed by therelease
tool. - The Wiki became a place to visit.
- Dplug v2.0 (6th January 2016)
-
release
tool now expects a VST or AU configuration, see thedistort
example for details - special
dub.json
keyCFBundleIdentifier
becameCFBundleIdentifierPrefix
, see howdistort
works to update your plugins dub.json - 10.6 compatibility dropped.
-
- Dplug v1.0 (26th May 2015)
- initial release, VST support for 32-bit and 64-bit, Windows and Mac