Skip to content

A project template for DISTRHO Plugin Framework (DPF) audio effect plugins using FAUST.

License

Notifications You must be signed in to change notification settings

SpotlightKid/dpf-faust-project-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dpf-faust-project-template

A copier project template for DISTRHO Plugin Framework (DPF) audio effect plugins using FAUST for the implementation of the DSP pipeline.

quik start asciicast

Quickstart

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).

Requirements

To create a project using this cookie cutter template you need:

To build the generated project, you need additional development tools. See the README.md file in your generated project for more information.

License

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.

Authors