FMOD Studio User Manual 2.02
FMOD Studio Suite 支持加载使用 FMOD Studio 插件 SDK 创建的 DSP 插件。请参阅 FMOD Studio 插件 SDK 文档 了解有关为 FMOD 创作 DSP 插件的更多信息。
插件库可从以下位置自动加载:
%localappdata%/FMOD Studio/Plugins~/Library/Application Support/FMOD Studio/Plugins%fmod_install_directory%/Plugins%fmod_bundle%/Plugins%project_root_directory%/Plugins更改用户插件目录将导致所有插件被重新加载。对于加载失败的插件,警告会添加到日志中。这可以从控制台窗口的日志记录选项卡中查看。
一旦加载了 DSP 插件,就可以在项目中使用。具有零输入通道的插件,通常称为生成器,可作为插件发声器添加。

可将处理输入信号的插件添加为插件效果。

默认情况下,FMOD Studio 中插件的外观基于FMOD_DSP_DESCRIPTION和附加的FMOD_DSP_PARAMETER_DESC。这包括插件的名称、可用属性和操作台布局。
可使用插件脚本 API更改插件的外观。
可通过添加位于插件库旁边的 javascript 文件来扩充 FMOD_DSP_DESCRIPTION,自定义插件的外观。此文件必须以.plugin.js扩展名结尾。然后 javascript 文件可使用插件脚本 API。插件脚本 API 可用于为使用studio.plugins.registerPluginDescription()函数的一个或多个插件注册插件描述。例如:
studio.plugins.registerPluginDescription("Acme_Explosion", {
companyName: "Acme",
productName: "Explosion Generator",
deckUi: {
// deck widget layout
},
});
通过注册插件描述,可相应地定制插件的外观。

重新加载插件库时,或选择“脚本 > 重新加载”时,会重新加载插件脚本文件。
建议在部署插件库后不要更改 FMOD_DSP_DESCRIPTION.name 和 FMOD_DSP_PARAMETER_DESC.name 字段,因为 FMOD Studio 使用这些名称作为相应 DSP 的标识符。
注册插件说明。identifier 必须匹配 FMOD_DSP_DESCRIPTION.name。
pluginDescription 参数是一个具有如下所述属性的对象。pluginDescription 的所有属性都是可选项。
与插件作者相对应的 string 。在右键菜单中,具有相同公司名称的插件被编组在同一个菜单中。
与插件名称对应的 string 。
将每个 FMOD_DSP_PARAMETER_DESC.name 映射到描述 Object 的 Object 。每个 DSP 参数描述 Object 包含以下可选属性:
displayName: 上面显示的标签属性控件可绑定到此 DSP 参数。enumeration: 此 DSP 参数可用的标记值。每个标签对应一个整数值,第一个标签等于0,后面的每个标签值递增。例如:
parameters: {
"gain": {
// FMOD_DSP_PARAMETER_DESC.name 是 "gain"
displayName: "Volume"
},
"freq": {
// FMOD_DSP_PARAMETER_DESC.name 是“freq”
displayName: "Frequency"
},
"outputMode": {
// FMOD_DSP_PARAMETER_DESC.name 是“outputMode”
displayName: "Output",
enumeration: ["Mono", "Stereo", "Surround"], // 单声道 = 0, 立体声 = 1, 环绕声 = 2
},
"pattern": {
// FMOD_DSP_PARAMETER_DESC.name 是“pattern”
displayName: "Pattern",
enumeration: ["Rain", "Hail", "Shine"], // 雨 = 0, 冰雹 = 1, 光 = 2
},
},
包含描述插件参数默认配置的对象的 Array。这些可以从操作台中插件的右键菜单访问。
defaultConfigurations: [
{
name: "Quiet",
parameterValues: {
"gain": -20,
},
},
{
name: "Bright",
parameterValues: {
"gain": 0,
"freq": 5000,
},
},
],
当显示在操作台中时,描述插件用户界面的 Object。例如:
deckUi: {
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
spacing: 6,
items: [
{ deckWidgetType: studio.ui.deckWidgetType.Pixmap, filePath: __dirname + "/company_logo.png", },
{ deckWidgetType: studio.ui.deckWidgetType.Button, binding: "invert", },
{ deckWidgetType: studio.ui.deckWidgetType.Dial, color: "#e31a1c", binding: "freq", },
{ deckWidgetType: studio.ui.deckWidgetType.Dropdown, binding: "mode", buttonWidth: 44, },
],
},
操作台面板的布局基于操作台小部件描述对象,其包含以下属性:
widgetType: studio.ui.deckWidgetType。必要属性。minimumWidth: 小部件的最小宽度(以像素为单位)(number)。minimumHeight: 小部件的最小高度(以像素为单位)(number)。maximumWidth: 小部件的最大宽度(以像素为单位)(number)。maximumHeight: 小部件的最大高度(以像素为单位)(number)。sizePolicy: studio.ui.sizePolicy。适用于deckWidgetType.Layout:
layout: studio.ui.layoutType。必要属性。items: 嵌套在此布局中的操作台小部件描述的 Array。contentsMargins: 描述布局周围的边距。格式为 { left:[number], top:[number], right:[number], bottom:[number] } 的 Object。spacing: 项目之间的间距,以像素为单位(number)。isFramed: 将此设置为 true 将导致为布局绘制背景。这在使用布局以可视方式对许多相关小部件进行分组时很实用。适用于 layoutType.HBoxLayout 或 layoutType.VBoxLayout 中的项目:
stretchFactor: 确定一个项目相对于其兄弟项目占用多少空间(number)。alignment: studio.ui.alignment。适用于 layoutType.GridLayout 中的项目:
row: 网格中的行索引(number)。column: 网格中的列索引(number)。rowSpan: 项目要跨越的行数。columnSpan: 项目要跨越的列数。alignment: studio.ui.alignment。适用于deckWidgetType.Label:
text: 要显示的文本(string)。适用于deckWidgetType.Pixmap:
filePath: 磁盘上图像的绝对路径。支持最常见的图像文件格式。可以使用__dirname检索相对于当前脚本的文件路径,例如 __dirname + "/image.png"。适用于deckWidgetType.Dial:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。color: 表盘的边框颜色为 string。支持十六进制颜色,例如"#aa2266"。适用于deckWidgetType.Fader:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。适用于deckWidgetType.MinMaxFader:
-minimumBinding: 要绑定到范围最小值的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。
- maximumBinding: 要绑定到范围最大值的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。
- text: 在推子上方的标签中显示的文本。
适用于deckWidgetType.NumberBox:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。color: 数字框的背景颜色为 string。支持十六进制颜色,例如"#aa2266"。适用于deckWidgetType.Dropdown:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。适用于deckWidgetType.Button:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。text: 显示在按钮上的文本。buttonWidth: 按钮图像的宽度,单位是像素。适用于deckWidgetType.ButtonGroup:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。buttonWidth: 按钮组中每个按钮的宽度,单位是像素。buttons: 具有以下格式的 Object 的 Array { text:[string], row:[number], column:[number]。每个项目都允许设置特定的按钮 text ,并分配一个特定的按钮 row 和 column。适用于deckWidgetType.DataDrop:
binding: 要绑定到的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。fileNameFilters: 描述可放置在此小部件上的受支持文件名过滤器的 string 。可指定多个过滤器,以空格分隔(例如"*.wav *.raw *.mp4")。dataMode: studio.ui.dataDropMode。默认为 studio.ui.dataDropMode.File。适用于deckWidgetType.DistanceRolloffGraph:
minimumDistanceBinding: 要绑定到距离范围最小值的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。maximumDistanceBinding: 要绑定到距离范围最大值的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。rolloffTypeBinding: 要为衰减类型绑定的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。必要属性。rolloffTypes: 将指定的 rolloffTypeBinding 可用值映射到可用的studio.project.distanceRolloffType衰减中的 Object。例如: rolloffTypes: {
-1: studio.project.distanceRolloffType.Custom,
0: studio.project.distanceRolloffType.Linear,
1: studio.project.distanceRolloffType.LinearSquared,
},
适用于deckWidgetType.PolarDirectivityGraph:
-directivityBinding: 要绑定到表示极坐标方向性的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。分配的属性应在 0 到 1 的范围内。必要属性。
- sharpnessBinding: 要绑定到表示极坐标锐度的 DSP 属性名称。这必须匹配FMOD_DSP_PARAMETER_DESC.name。分配的属性应具有从 1 开始的范围。必要属性。
对应于pluginDescription.deckUi小部件可用的不同操作台小部件类型的枚举。对于可绑定控件(例如表盘、推子),应选择具有适当FMOD_DSP_PARAMETER_TYPE的属性。可能的值是:
Spacer: 空白的小部件。Layout: 容器小部件。必须指定相应的布局类型。Label: 文本标签。Pixmap: 图像。Dial: 表盘控制。适用于 FMOD_DSP_PARAMETER_TYPE_FLOAT 和 FMOD_DSP_PARAMETER_TYPE_INT。Fader: 滑块控件。适用于 FMOD_DSP_PARAMETER_TYPE_FLOAT 和 FMOD_DSP_PARAMETER_TYPE_INT。MinMaxFader: 基于范围的水平滑块控件。适用于表示最小值和最大值范围的两个 FMOD_DSP_PARAMETER_TYPE_FLOAT 参数。NumberBox: 数字框控件。适用于 FMOD_DSP_PARAMETER_TYPE_FLOAT 和 FMOD_DSP_PARAMETER_TYPE_INT。Dropdown: 下拉控件。适用于 FMOD_DSP_PARAMETER_TYPE_INT。Button: 按钮控件。适用于 FMOD_DSP_PARAMETER_TYPE_INT(具有两个值)和 FMOD_DSP_PARAMETER_TYPE_BOOL.ButtonGroup: 按钮控件。适用于 FMOD_DSP_PARAMETER_TYPE_INT。DataDrop: 按钮组控件。适用于 FMOD_DSP_PARAMETER_TYPE_DATA。SidechainInput: 侧链输入选择器。适用于具有数据类型为FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN 的FMOD_DSP_PARAMETER_TYPE_DATA 参数的插件效果。InputMeter: 用于插件效果的输入表。此小部件与插件发声器不兼容。OutputMeter: 用于插件效果的输出表。此小部件与插件发声器不兼容。GainReductionMeter: 用于插件效果的增益衰减表 (GRM)。此小部件与插件发声器不兼容。DistanceRolloffGraph: 显示应用于给定studio.project.distanceRolloffType应用的衰减图表,以及右侧用于选择要应用衰减的按钮组控件。此小部件需要两个代表最小和最大距离范围的 FMOD_DSP_PARAMETER_TYPE_FLOAT参数,以及一个代表所选衰减的 FMOD_DSP_PARAMETER_TYPE_INT参数。 PolarDirectivityGraph: 显示极坐标方向性的图表。适用于表示锐度值和方向性值的两个FMOD_DSP_PARAMETER_TYPE_FLOAT 参数。与可用于deckWidgetType.DataDrop小部件不同类型输入法相对应的枚举。可能的值是:
File: 文件可以放在小部件上或通过文件浏览器选择。Text: 可通过文本输入提示输入文本。使用自定义 DSP 插件时,有时可能会从 FMOD Designer 项目迁移,迁移到 FMOD Studio 的较新版本,或者 DSP 的描述得到更新,这可能导致 DSP 需要在 FMOD Studio 项目中修复。
当检测到问题时,效果插件模块或插件发声器会褪色并带有黄色虚线轮廓。

FMOD Studio 支持在插件描述更改或删除插件 DLL 时修复或删除 DSP 插件实例。这可以通过单击相应插件实例的操作台小部件来完成。可以针对每个实例或整个项目修复或删除插件。
