A cookiecutter project template for DISTRHO Plugin Framework (DPF) audio effect plugins.
To create a DPF effect plugin using this template, install cookiecutter (see the installation instructions) and then run:
$ cookiecutter https://github.com/SpotlightKid/cookiecutter-dpf-effect
and enter the plugin name and other info at the prompts. See the cookiecutter documentation on how to change the default values for these prompts.
Here is an example:
$ cookiecutter https://github.com/SpotlightKid/cookiecutter-dpf-effect
project_name [Simple Gain]:
plugin_description [A simple audio volume gain plugin]:
author_name [Joe Doe]: Christopher Arndt
domain [example.com]: chrisarndt.de
github_username [christopher.arndt]: SpotlightKid
email [SpotlightKid@chrisarndt.de]: info@chrisarndt.de
plugin_brand [chrisarndt.de]:
plugin_name [SimpleGain]:
repo_name [simplegain]:
plugin_uri [http://chrisarndt.de/plugins/simplegain]:
project_license [MIT]:
version [0.1.0]:
year [2020]:
Select ui_type:
1 - opengl
2 - nanovg
3 - cairo
4 - none
Choose from 1, 2, 3, 4 [1]: 4
Select want_midi_input:
1 - no
2 - yes
Choose from 1, 2 [1]: 1
Select want_midi_output:
1 - no
2 - yes
Choose from 1, 2 [1]: 1
Running post-project-generation hook...
Initializing new Git repository:
Initialized empty Git repository in /home/chris/simplegain/.git/
Adding Git submodule for DPF library:
Checking out submodules:
Cloning into '/home/chris/simplegain/dpf'...
remote: Counting objects: 7168, done.
remote: Total 7168 (delta 0), reused 0 (delta 0), pack-reused 7167
Receiving objects: 100% (7168/7168), 12.13 MiB | 1.30 MiB/s, done.
Resolving deltas: 100% (6078/6078), done.
Making initial Git commit:
[master (root-commit) dbdfbb6] Initial commit
12 files changed, 699 insertions(+)
create mode 100644 .gitignore
create mode 100644 .gitmodules
create mode 100644 LICENSE
create mode 100644 Makefile
create mode 100644 README.md
create mode 160000 dpf
create mode 100644 plugins/SimpleGain/DistrhoPluginInfo.h
create mode 100644 plugins/SimpleGain/Makefile
create mode 100644 plugins/SimpleGain/PluginSimpleGain.cpp
create mode 100644 plugins/SimpleGain/PluginSimpleGain.hpp
Your DPF audio effect plugin project is now ready!
To compile it, change into the 'simplegain' directory and type 'make'.
The plugin binaries and LV2 bundle will be placed in the 'bin' subdirectory.
Have fun!
A directory named after the value you gave for repo_name
will be created
and initialized as a git repository and DPF added as a git submodule.
Enter the directory and run make
:
$ cd simplegain
$ make
Plugin binaries will be placed in the bin
sub-directory of your project. The
source code for your plugin is in a sub-directory of the plugins
directory
named after the value you specified for plugin_name
. Adapt it as you see fit
and run make
again to update your binaries. The second compilation will be
much faster, because the DPF library has already been built.
To install the plugins system-wide, run make install
(root priviledges may be
required). The usual PREFIX
and DESTDIR
makefile variables are honoured to
change the prefix directory (default: /usr/local
) and the installation
destination (for distribution packaging).
Use make's -n
option to see where the plugins would be installed without
actually installing them.
You can also set the installation directory for each plugin format with a dedicated makefile variable.
- DSSI:
DSSI_DIR
(<prefix>/lib/dssi
) - LADSPA:
LADSPA_DIR
(<prefix>/lib/ladspa
) - LV2:
LV2_DIR
(<prefix>/lib/lv2
) - VST2:
VST2_DIR
(<prefix>/lib/vst
) - VST3:
VST3_DIR
(<prefix/lib/vst3
) - CLAP:
CLAP_DIR
(<prefix>/lib/clap
) - Stand-alone JACK client program:
BINDIR
(<prefix>/bin
)
Example: make DESTDIR=/tmp/build-root VST2_DIR=/usr/lib/lxvst install
To install the plugins only for your current user account, run
make install-user
.
Again, you can also set the installation directory for each plugin format with a dedicated makefile variable.
- DSSI:
USER_DSSI_DIR
($HOME/.dssi
) - LADSPA:
USER_LADSPA_DIR
($HOME/.ladspa
) - LV2:
USER_LV2_DIR
($HOME/.lv2
) - VST2:
USER_VST2_DIR
($HOME/.vst
) - VST3:
USER_VST3_DIR
($HOME/.vst3
) - CLAP:
USER_CLAP_DIR
($HOME/.clap
) - Stand-alone JACK client program:
<none>
($HOME/bin
)
Note: The given default values for all of the above listed environment variables differ depending on the target OS.
- Basic development tools (C++ compiler, GNU make, pkg-config, etc.)
- Python
- Git
- cookiecutter
- Christopher Arndt (@SpotlightKid), based on DPF examples by
- Filipe Coelho (@falkTX)
- Patrick Desaulniers (@pdesaulniers)
- Jean Pierre Cimalando (@jpcima)
Unless otherwise noted, all files in this template are published under the MIT License.
The Makefile templates are based on the Makefiles provided with the DPF example plugins by Filipe Coelho and are licensed under the ISC License.
See the file LICENSE for the terms of both licenses.
Project files generated by this template are either licensed under the MIT license, with Christopher Arndt as the original author, or under the ISC license, with Filipe Coelho et al. as the original authors. Projects generated with this template should thus give proper attribution according to the terms of these licenses.