FMOD
hvcc will generate a plugin for FMOD Studio and the FMOD Runtime.
Feature Overview
The following features are currently supported.
- sound fx units
- sound generators
- input parameters (float, bool, int)
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 the 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
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 configuration.
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.
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.
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>.