-
Notifications
You must be signed in to change notification settings - Fork 32
Plug in launch checklist
p0nce edited this page Aug 1, 2024
·
28 revisions
There are many things to do before releasing a brand new plug-in. Here is an example list to help being organized.
- Have you used your own plug-in extensively?
- Has your plug-in useful presets? (See Adding Presets)
- Have you tuned parameters range?
- Are the non-trivial points explained somewhere? (manual, tutorials, videos...)
- Is the feedback helpful or distracting?
- Have you checked on various screens and different lighting conditions?
- Did you test your plug-in in a real song?
- Did you send the plug-in to QAs?
- Would the plug-in be useful to you? To the QAs?
- Did you implement a
tailSizeInSeconds
override yet? Don't leave the default one!
Caution, as it is very easy to grossly underestimate this value. - Have you checked reported latency with the
latency-check
tool? - Does your plug-in work in a sampling-rate as low as 11050 Hz? This is important for
auvaltool
validation. - If you were using live-reload, have you disable Wren live-reload (with filesystem path) for release?
- (for an effect plug-in) Does your plugin support 1-1 or 1-2? Else Logic users may have trouble finding it to instantiate.
- (for a new plug-in) Are you using all the newest
futureXXX
Options? This will help maintenance later. (See Options) - Typical failure point: Not working in macOS 10.12 to 10.14
- Typical failure point: Crashing when augmenting buffer size from 64 to higher.
- Typical failure point: Not launching on Linux
- Typical failure point: Not launching on Rosetta
- Typical failure point: Not launching on arm64
- Typical failure point: Not launching on Windows 32-bit (if needed)
- Have you profiled and optimized your plug-in DSP?
- Have you profiled and optimized your plug-in UI?
- Does your plug-in detect silence to speed up things in DSP? (Warning: this is usually very hard to implement correctly)
- Have you tuned
maxFramesInProcess()
return value? (512 is often a good start)
It changes CPU usage, and memory usage. You can useprocess
orbench
to find your favourite value. In VST3, allows to modulate parameters faster. - Are you sure that no PBR widget is updated on its PBR layer at 60 FPS?
- you can use Raw widgets for fast animation instead (consider
dplug:canvas
) - or widgets that renders to both Raw and PBR layers, but only update the Raw layers with
setDirty(UILayer.rawOnly)
- you can use Raw widgets for fast animation instead (consider
- Have you written a KVR PR?
- Have you written a newsletter entry?
- Have you written a blog entry?
- Have you made a launch video?
- Have you made sound examples?
- Have you reproduced copyright notices that must be redistributed in a binary redistribution? (those can go in the user manual or licence)
- (VST2) Do you have the Steinberg Agreement to release VST2?
- (VST3) Do you have the Steinberg Agreement to release VST3?
- (AAX) Do you have the Avid and PACE authorizaton to release AAX?
- Do you have a CommonMark licence file for inclusion as
"licensePath"
?- Note that
dplug-build
allows the following macros in license files:$VENDORNAME
,$PLUGINNAME
,$PUBLICVERSION
,$CURRENTYEAR
.
- Note that