Skip to content

Dplug Save Compatibility

Guillaume Piolat edited this page Jun 1, 2021 · 16 revisions

Dplug assumes plug-ins are using SemVer as version numbers.

Releasing a major version (version MAJOR.minor.patch)

In major version changes you can do anything, but MUST:

  • update the major number of publicVersion in plugin.json
  • update pluginUniqueID in plugin.json
  • update pluginName in plugin.json to avoid overwriting previous version files on install (this is the public name of the plugin major, for example "Destructatorizer 4").

You can change anything in your plugin now, it's considered a separate plug-in by hosts, and can coexist with previous versions.

Major version are a good time to consider moving out of legacy options, since save compatibility will be broken anyway.

Releasing a minor version (version major.MINOR.patch)

All other versions are minor versions changes. Dplug assumes that you will keep save compatibility across minor/patch version changes.

  • You can't remove a Parameter
  • You can't remap a FloatParameter values, or add an option to an IntegerParameter, since it would break existing sessions. You can't change existing Parameter.
  • You may try to add a Parameter at the end of the list of parameters constructed in buildParams(). It is currently unknown if this keeps compatibility in all DAW. Avoid if you can.
  • You can add presets. You can't remove a preset. This will cause problems in AAX on macOS. Preset file will get merged with the previous version presets in the case of a minor update, and this will break code signing of the bundle. Generally, you shouldn't remove presets between the demo version and full version of your plugins, for the same reason.

Update the minor and/or patch number of publicVersion in plugin.json to reflect the version change. Such a plugin is considered the same than previous versions by hosts. Hence, you are not allowed to change save compatibility.