Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
Signed-off-by: falkTX <falktx@falktx.com>
  • Loading branch information
falkTX committed Feb 21, 2024
0 parents commit ade001d
Show file tree
Hide file tree
Showing 13 changed files with 10,187 additions and 0 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: build

on:
push:
branches:
- '*'
pull_request:
branches:
- '*'

jobs:
linux:
strategy:
matrix:
target: [linux-arm64, linux-armhf, linux-i686, linux-riscv64, linux-x86_64]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}

macos:
strategy:
matrix:
target: [macos-intel, macos-universal]
runs-on: macos-12
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}

windows:
strategy:
matrix:
target: [win32, win64]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}

pluginval:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: pluginval
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/bin/
/build/
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "dpf"]
path = dpf
url = https://github.com/DISTRHO/DPF.git
[submodule "dpf-widgets"]
path = dpf-widgets
url = https://github.com/DISTRHO/DPF-Widgets.git
[submodule "hvcc"]
path = hvcc
url = https://github.com/Wasted-Audio/hvcc.git
10 changes: 10 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Permission to use, copy, modify, and/or distribute this software for any purpose with
or without fee is hereby granted, provided that the above copyright notice and this
permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
56 changes: 56 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/make -f
# Makefile for hvcc-plugins #
# ------------------------- #
# Created by falkTX
#

include dpf/Makefile.base.mk

# ---------------------------------------------------------------------------------------------------------------------
# helper macros

PLUGINS = $(subst plugins/,,$(wildcard plugins/*))

# CUSTOM_TTL = $(subst custom-ttl/,,$(wildcard custom-ttl/*))
# MODGUIS = $(subst custom-ttl/,,$(subst /modgui,,$(wildcard custom-ttl/*/modgui)))

# ---------------------------------------------------------------------------------------------------------------------
# build rules

all: pregen
# $(foreach p,$(CUSTOM_TTL),cp custom-ttl/${p}/*.ttl bin/${p}.lv2/;)
# $(foreach p,$(MODGUIS),cp -r custom-ttl/${p}/modgui bin/${p}.lv2/;)

pregen: plugins dpf/utils/lv2_ttl_generator$(APP_EXT)
@$(CURDIR)/dpf/utils/generate-ttl.sh

plugins: $(PLUGINS:%=build/%/dpf) $(PLUGINS:%=build/%/dpf-widgets) $(PLUGINS:%=build/%/Makefile)
$(foreach p,$(PLUGINS),$(MAKE) DPF_PATH=$(CURDIR)/dpf DPF_TARGET_DIR=$(CURDIR)/bin -C build/${p} plugin;)

build/%/dpf: dpf
-@mkdir -p build/$*
ln -s $(abspath $<) $@

build/%/dpf-widgets: dpf-widgets
-@mkdir -p build/$*
ln -s $(abspath $<) $@

build/%/Makefile: hvcc/build/bin/hvcc plugins/%/plugin.json plugins/%/plugin.pd
./hvcc/build/bin/hvcc plugins/$*/plugin.pd -m plugins/$*/plugin.json -n "$(lastword $(subst -, ,$*))" -g dpf -o $(@D)

dpf/utils/lv2_ttl_generator$(APP_EXT):
$(MAKE) -C dpf/utils/lv2-ttl-generator

hvcc/build/bin/hvcc:
cd hvcc && python3 setup.py install --no-compile --install-layout unix --prefix $(CURDIR)/hvcc/build

# ---------------------------------------------------------------------------------------------------------------------
# cleanup

clean:
$(MAKE) clean -C dpf/utils/lv2-ttl-generator
rm -rf bin build

# ---------------------------------------------------------------------------------------------------------------------

.PHONY: plugins
63 changes: 63 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
hvcc-plugins
============

Collection of hvcc based audio plugins used in MOD Audio.
Stored in a single source code repository to make it easy for contributors and MOD staff to add and maintain these plugins.

This source code repository has the following contents:

- **custom-ttl** - LV2 ttl files modified by hand, based on the generated DPF output, that adds a bit more information and meta-data to a plugin
- **dpf** - the plugin framework used to get CLAP, LV2, VST2, VST3 formats from a single implementation;
for MOD we only care about the LV2 format for now
- **dpf-widgets** - optional, UI widgets for DPF that allow these generated plugins to include a desktop UI
- **hvcc** - the tools that convert puredata patches into C and C++ and integrates with DPF
- **plugins** - the actual plugins, 1 folder by plugin, in which we have the puredata patch(es) and the hvcc specific configuration
- **presets** - optional, LV2 presets to be included on the MOD plugin store builds of each plugin

### ADDING NEW PLUGINS

#### PLUGIN

This repository builds plugins as present in the `plugins` folder.
Each folder should follow the naming convention of "brandname-pluginame", with a single dash as separator and no spaces or special characters.

Inside each plugin folder there are at least 3 files:

- plugin.json
- plugin.pd
- README.md

The first file is meant for hvcc, it sets up branding, plugin categories and audio port count.
It is safe to copy this file to another plugin for a starting point, but then make sure to edit the fields as necessary.
The URI of the plugin **must** match the folder name in the style of "urn:hvcc:brandname:pluginname" (so keep the "urn:hvcc:" and change the rest)

Then we have the puredata entry point file as `plugin.pd`.
It can reference and include other files on this same directory, but the entry point **must have this filename**.

And finally a readme just to give some details on the plugin and any relevant information.

### BUILDING

For building you will need a POSIX-compliant compiler (GCC or Clang) plus GNU Make.
Building is a simple as running `make` after cloning this repository, assuming you have the needed tools installed.

Note that this repository uses git submodules, so cloning with `git clone --recursive` is required.

After building you will find CLAP, LV2, VST2 and VST3 plugin builds in a newly created `./bin` directory.
Alternatively you can download nightly builds from the [generated GitHub actions](https://github.com/moddevices/hvcc-plugins/actions/workflows/build.yml).

#### BUILDING FOR MOD

If you already have "bootstrapped" [mod-plugin-builder](https://github.com/moddevices/mod-plugin-builder) before, building for e.g. MOD Dwarf is as simple as:

```
make moddwarf
```

Change `moddwarf` to `modduo` or `modduox` if applicable.

After building, you can directly push the bundle into a MOD unit over USB by running:

```sh
make modpush
```
1 change: 1 addition & 0 deletions dpf
Submodule dpf added at 56c106
1 change: 1 addition & 0 deletions dpf-widgets
Submodule dpf-widgets added at 73e9aa
1 change: 1 addition & 0 deletions hvcc
Submodule hvcc added at 0b872b

0 comments on commit ade001d

Please sign in to comment.