A copier project template for DISTRHO Plugin Framework (DPF) audio effect plugins using FAUST for the implementation of the DSP pipeline.
To create a DPF effect plugin using this template, install copier
and the
copier-templates-extensions
package (see the installation instructions) and
then run:
$ copier copy --trust gh:SpotlightKid/dpf-faust-project-template <my-project>
where <my-project>
should be the path to a non-existing directory where your
new project will be created. The name of this directory will also be used as
the name of Git repository, which will be ininialized in the newly created
project.
Note: The --trust
option is necessary because the project template runs
some additional tasks after the project generation and also loads some custom
Jinja template extensions included in the project template. Both things are
considered "unsafe", because they can potentially run arbitray commands as the
user who generates a project from the template. The additional tasks are simple
shell commands to set up a git repository with a sub module etc. You can have a
look at the copier.yml file to review these commands
beforehand.
Enter the plugin name and other info at the prompts. (See the copier documentation on how to change the default values for these prompts.)
Here is an example (some output abbreviated for clarity):
$ copier copy --trust gh:SpotlightKid/dpf-faust-project-template dpffaustgain
🎤 project_name
DPF FAUST Gain
🎤 plugin_description
A simple audio volume gain plugin
🎤 author_name
Joe Doe
🎤 domain
example.com
🎤 github_username
joe.doe
🎤 email
[email protected]
🎤 plugin_brand
example.com
🎤 The plugin name, which can be used as an identifier in source code
DPFFAUSTGain
🎤 repo_name
dpffaustgain
🎤 plugin_uri
https://example.com/plugins/dpffaustgain
🎤 project_license
MIT
🎤 version
0.1.0
🎤 year
2024
🎤 num_inputs (int)
1
🎤 num_outputs (int)
1
Copying from template version 0.2.0.post3.dev0+213caa6
create .
create Makefile
create README.md
create plugins
[...]
> Running task 1 of 11: echo 'Running post-project-generation hook...'
Running post-project-generation hook...
> Running task 2 of 11: echo 'Initializing new Git repository:'
Initializing new Git repository:
> Running task 3 of 11: git init
Initialized empty Git repository in .../dpffaustgain/.git/
> Running task 4 of 11: git remote add origin [email protected]:joe.doe/dpffaustgain
> Running task 5 of 11: echo 'Adding Git submodule for DPF library:'
Adding Git submodule for DPF library:
> Running task 6 of 11: git submodule add https://github.com/DISTRHO/DPF.git dpf
Cloning into '.../dpffaustgain/dpf'...
[...]
> Running task 7 of 11: echo 'Checking out submodules:'
Checking out submodules:
> Running task 8 of 11: git submodule update --init --recursive
Submodule 'dgl/src/pugl-upstream' (https://github.com/DISTRHO/pugl.git) registered for path 'dpf/dgl/src/pugl-upstream'
Cloning into '.../dpffaustgain/dpf/dgl/src/pugl-upstream'...
Submodule path 'dpf/dgl/src/pugl-upstream': checked out 'e33b2f6b0cea6d6263990aa9abe6a69fdfba5973'
> Running task 9 of 11: echo 'Making initial Git commit:'
Making initial Git commit:
> Running task 10 of 11: git add -A
> Running task 11 of 11: git commit -m 'Initial commit'
[master (root-commit) 4696c9d] Initial commit
[...]
Your DPF/FAUST audio effect plugin project is now ready!
To compile it, change into the 'dpffaustgain' directory and type 'make'.
The plugin binaries and bundles will be placed in the 'bin' subdirectory.
Have fun!
A directory named after the second argument you gave to copier
will be
created and initialized as a Git repository and DPF added as a Git submodule.
Enter the directory and run make
:
$ cd dpffaustgain
$ make
The resulting plugin binaries will be placed in the bin
sub-directory of your
project.
The FAUST DSP implementation will be in in the faust
sub-directory, in a file
named <plugin_name>.dsp
(in all lower-case). Adapt it as you see fit and run
make
again to re-generate the C++ source code from the the FAUST source and
to rebuild the binaries. The second compilation will be much faster, because
the DPF library has already been built.
The static and generated source code for your plugin is in a sub-directory of
the plugins
directory named after the value you specified for plugin_name
(again in all lower-case).
See the README.md
file in your generated project for more information on
compiling, prerequisites and how to install the finished plugin(s).
To create a project using this cookie cutter template you need:
- Python
- Git
- copier
To build the generated project, you need additional development tools. See the
README.md
file in your generated project for more information.
This copier template is released under MIT license. See the LICENSE.md file for more information.
When generating a project using this template, you may choose any license for the resulting files which is compatible with the license of DPF and the plugin formats you want to distribute.
The faustdoctor
architecture files in the faust/arch
directory of generated
projects are distributed under the Boost Software License 1.0 and come with a
special license exception, which can be found in the LICENSE-EXCEPTION.md
file in the same dierctory.
- Christopher Arndt (@SpotlightKid)
- Jean Pierre Cimalando (@jpcima) - faustdoctor architecture files