hvcc

The heavy hvcc compiler for Pure Data patches. Updated to python3 and additional generators

View the Project on GitHub

FMOD

hvcc will generate a plugin for FMOD Studio and the FMOD Runtime.

Feature Overview

The following features are currently supported.

FX Unit / Generator

Whether the resulting plugin is considered a generator plugin, like an oscillator , or an fx unit, is determined by the numbers of input/output channels of pd patch.

A patch without an adc~ object is considered a generator.

See also Multi-Channel Plugins

Input Parameters

If no additional parameter type is set, all parameters are treated as float by default.

Examples:

r gain @hv_param 0 1 0.5

r toggle_mute @hv_param 0 1 0 bool

r state @hv_param 0 3 0 int

FMOD_DSP_PARAMETER_TYPE_DATA is not supported currently.

Fmod Studio recognizes certain parameter units like Hz for example, which affects how values are displayed.

For further information see: Plugin Parameters

Input Parameter Mappings

The how input parameters are mapped to their respective range can be further customized in the resulting <pluginname>.cpp file.

Multi-Channel Plugins

An appropriate configuration will be selected at compile time based on the number of inputs and outputs in a patch (e.g. [adc~ 1 2 3 4 5 6] will create a 5.1 plugin). As this information is compiled in, the plugins can only be used on tracks/groups with a corresponding channel configurations.

In case a of a i/o miss-match, fx plugins will return FMOD_ERR_DONTPROCESS in the PluginProcess() callback, effectively bypassing the plugin.

Plugin-Scripting API

A corresponding <pluginname>.plugin.js is generated alongside the build artifacts.

This file can be used to further customize the appearance of the plugin in FMOD Studio and needs to be placed into the Plugins folder along with the plugin binary.

See Plugin-Scripting API

Building Your Plugin

The plugin folder contains a CMakeLists.txt file which will generate a dynamic and a static library version of the plugin prefixed with lib.

The static library can be used on platforms that don't support dynamic library loading such as the Nintendo Switch (see Static Plugins).

CMake

From within the directory containing the CMakeLists.txt use.

cmake -S . -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug
cmake --build cmake-build-debug

VSCode

Install CMake Tools and open the fmod folder containing the CMakeLists.txt in VSCode.

Check that the [all] target is selected and run > cmake build. The resulting binaries will be placed in build\<CONFIG>.