DeltaVR/DeltaVRFMOD/Plugins/phonon_fmod.plugin.js
2025-11-21 22:37:24 +02:00

394 lines
10 KiB
JavaScript

//
// Copyright 2017-2023 Valve Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
studio.plugins.registerPluginDescription("Steam Audio Spatializer", {
companyName: "Valve",
productName: "Steam Audio Spatializer",
parameters: {
"DirectBinaural": {displayName: "Apply HRTF To Direct"},
"ApplyDA": {displayName: "Distance Attenuation"},
"ApplyAA": {displayName: "Air Absorption"},
"ApplyDir": {displayName: "Directivity"},
"ApplyOccl": {displayName: "Occlusion"},
"ApplyTrans": {displayName: "Transmission"},
"ApplyRefl": {displayName: "Reflections"},
"ApplyPath": {displayName: "Pathing"},
"Interpolation": {displayName: "HRTF Interpolation"},
"DistAtt": {displayName: "Value"},
"AirAbsLow": {displayName: "AA Low"},
"AirAbsMid": {displayName: "AA Mid"},
"AirAbsHigh": {displayName: "AA High"},
"Directivity": {displayName: "Dir. Value"},
"DipoleWeight": {displayName: "Weight"},
"DipolePower": {displayName: "Power"},
"Occlusion": {displayName: "Occl. Value"},
"TransType": {displayName: "Transmission Type"},
"TransLow": {displayName: "Trans. Low"},
"TransMid": {displayName: "Trans. Mid"},
"TransHigh": {displayName: "Trans. High"},
"DirMixLevel": {displayName: "Direct Mix Level"},
"ReflBinaural": {displayName: "Apply HRTF To Reflections"},
"ReflMixLevel": {displayName: "Reflections Mix Level"},
"PathBinaural": {displayName: "Apply HRTF To Pathing"},
"PathMixLevel": {displayName: "Pathing Mix Level"},
"OutputFormat": {displayName: "Output Format"},
"PathNormEQ": {displayName: "Normalize Pathing EQ"},
},
deckUi: {
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
spacing: 8,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.InputMeter
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 150,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "Interpolation"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "ApplyDA"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "ApplyAA"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "ApplyDir"
},
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 250,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.DistanceRolloffGraph,
rolloffTypeBinding: "DAType",
minimumDistanceBinding: "DAMinDist",
maximumDistanceBinding: "DAMaxDist",
rolloffTypes: {
0: studio.project.distanceRolloffType.LinearSquared,
1: studio.project.distanceRolloffType.Linear,
2: studio.project.distanceRolloffType.Inverse,
3: studio.project.distanceRolloffType.InverseSquared,
4: studio.project.distanceRolloffType.Custom,
}
},
{
deckWidgetType: studio.ui.deckWidgetType.MinMaxFader,
text: "Min & Max Distances",
minimumBinding: "DAMinDist",
maximumBinding: "DAMaxDist"
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 150,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Label,
text: "Directivity"
},
{
deckWidgetType: studio.ui.deckWidgetType.PolarDirectivityGraph,
directivityBinding: "DipoleWeight",
sharpnessBinding: "DipolePower"
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "DipoleWeight"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "DipolePower"
}
]
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 150,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "ApplyOccl"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "ApplyTrans"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "TransType"
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 250,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
spacing: 8,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "AirAbsLow"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "AirAbsMid"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "AirAbsHigh"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "Directivity"
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
spacing: 8,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "Occlusion"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "TransLow"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "TransMid"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "TransHigh"
}
]
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 150,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "DirectBinaural",
text: "On"
},
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "ApplyRefl",
text: "On"
},
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "ReflBinaural",
text: "On"
},
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 128,
maximumWidth: 150,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "ApplyPath",
text: "On"
},
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "PathBinaural",
text: "On"
},
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "PathNormEQ",
text: "On"
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "OutputFormat"
},
]
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
minimumWidth: 225,
maximumWidth: 350,
spacing: 8,
contentsMargins: {left: 4, right: 4},
alignment: studio.ui.alignment.AlignTop,
isFramed: true,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "DirMixLevel",
},
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "ReflMixLevel",
},
{
deckWidgetType: studio.ui.deckWidgetType.Dial,
binding: "PathMixLevel",
}
]
}
]
},
{
deckWidgetType: studio.ui.deckWidgetType.OutputMeter
}
]
}
});
studio.plugins.registerPluginDescription("Steam Audio Mixer Return", {
companyName: "Valve",
productName: "Steam Audio Mixer Return",
parameters: {
"Binaural": {displayName: "Apply HRTF"}
},
deckUi: {
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
minimumWidth: 256,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
spacing: 6,
contentsMargins: {left: 4, right: 4},
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "Binaural",
text: "On",
buttonWidth: 64
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "OutputFormat"
},
]
}
]
}
});
studio.plugins.registerPluginDescription("Steam Audio Reverb", {
companyName: "Valve",
productName: "Steam Audio Reverb",
parameters: {
"Binaural": {displayName: "Apply HRTF"},
},
deckUi: {
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.HBoxLayout,
minimumWidth: 256,
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Layout,
layout: studio.ui.layoutType.VBoxLayout,
spacing: 6,
contentsMargins: {left: 4, right: 4},
items: [
{
deckWidgetType: studio.ui.deckWidgetType.Button,
binding: "Binaural",
text: "Enable",
buttonWidth: 64
},
{
deckWidgetType: studio.ui.deckWidgetType.Dropdown,
binding: "OutputFormat"
},
]
}
]
}
});