API Reference
Functions
-
void iplFMODGetVersion(unsigned int *major, unsigned int *minor, unsigned int *patch)
Returns the version of the FMOD Studio integration being used.
- Parameters:
major – Major version number. For example, “1” in “1.2.3”.
minor – Minor version number. For example, “2” in “1.2.3”.
patch – Patch version number. For example, “3” in “1.2.3”.
-
void iplFMODInitialize(IPLContext context)
Initializes the FMOD Studio integration.
This function must be called before creating any Steam Audio DSP effects.
- Parameters:
context – The Steam Audio context created by the game engine when initializing Steam Audio.
-
void iplFMODTerminate()
Shuts down the FMOD Studio integration.
This function must be called after all Steam Audio DSP effects have been destroyed.
-
void iplFMODSetHRTF(IPLHRTF hrtf)
Specifies the HRTF to use for spatialization in subsequent audio frames.
This function must be called once during initialization, after
iplFMODInitialize
. It should also be called whenever the game engine needs to change the HRTF.- Parameters:
hrtf – The HRTF to use for spatialization.
-
void iplFMODSetHRTFDisabled(bool disabled)
Specifies whether HRTF-based binaural rendering should be globally disabled in all Steam Audio DSP effects.
If disabled, Steam Audio will use a simpler panning algorithm.
- Parameters:
disabled – [in] Whether or not HRTF-based binaural rendering should be disabled.
-
void iplFMODSetSimulationSettings(IPLSimulationSettings simulationSettings)
Specifies the simulation settings used by the game engine for simulating direct and/or indirect sound propagation.
This function must be called once during initialization, after
iplFMODInitialize
.- Parameters:
simulationSettings – The simulation settings used by the game engine.
-
void iplFMODSetReverbSource(IPLSource reverbSource)
Specifies the
IPLSource
object used by the game engine for simulating reverb.Typically, listener-centric reverb is simulated by creating an
IPLSource
object with the same position as the listener, and simulating reflections. To render this simulated reverb, call this function and pass it theIPLSource
object used.- Parameters:
reverbSource – The source object used by the game engine for simulating reverb.
-
IPLint32 iplFMODAddSource(IPLSource source)
Registers an
IPLSource
object for use by Steam Audio DSP effects in the audio thread.Calling this function causes the audio engine DSP plugin to retain a reference to the
IPLSource
.- Parameters:
source – [in] The
IPLSource
object used by the game engine for simulation (occlusion, reflections, pathing, etc.) for a given sound source. The Steam Audio Spatializer effect will use this object to retrieve simulation results, (e.g., occlusion values).- Returns:
An integer handle that can be used to identify the
IPLSource
. This should be passed to Steam Audio Spatializer effects via theIPL_SPATIALIZE_SIMULATION_OUTPUTS_HANDLE
parameter.
-
void iplFMODRemoveSource(IPLint32 handle)
Unregisters the
IPLSource
with the given handle, so the Steam Audio DSP effects can no longer use it.Calling this function causes the audio engine DSP plugin to release its reference to the
IPLSource
with the given handle.- Parameters:
handle – [in] The handle corresponding to the
IPLSource
that should be unregistered.
DSP Parameters
-
enum IPLSpatializerParams
DSP parameters for the “Steam Audio Spatializer” effect.
Values:
-
enumerator IPL_SPATIALIZE_SOURCE_POSITION
Type:
FMOD_DSP_PARAMETER_TYPE_DATA
World-space position of the source. Automatically written by FMOD Studio.
-
enumerator IPL_SPATIALIZE_OVERALL_GAIN
Type:
FMOD_DSP_PARAMETER_TYPE_DATA
Overall linear gain of this effect. Automatically read by FMOD Studio.
-
enumerator IPL_SPATIALIZE_APPLY_DISTANCEATTENUATION
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
How to render distance attenuation.
0
: Don’t render distance attenuation.1
: Use a distance attenuation value calculated using the default physics-based model.2
: Use a distance attenuation value calculated using the curve specified in the FMOD Studio UI.
-
enumerator IPL_SPATIALIZE_APPLY_AIRABSORPTION
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
How to render air absorption.
0
: Don’t render air absorption.1
: Use air absorption values calculated using the default exponential decay model.2
: Use air absorption values specified in theAIRABSORPTION_LOW
,AIRABSORPTION_MID
, andAIRABSORPTION_HIGH
parameters.
-
enumerator IPL_SPATIALIZE_APPLY_DIRECTIVITY
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
How to render directivity.
0
: Don’t render directivity.1
: Use a directivity value calculated using the default dipole model, driven by theDIRECTIVITY_DIPOLEWEIGHT
andDIRECTIVITY_DIPOLEPOWER
parameters.2
: Use the directivity value specified in theDIRECTIVITY
parameter.
-
enumerator IPL_SPATIALIZE_APPLY_OCCLUSION
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
How to render occlusion.
0
: Don’t render occlusion.1
: Use the occlusion value calculated by the game engine using simulation, and provided via theSIMULATION_OUTPUTS
parameter.2
: Use the occlusion value specified in theOCCLUSION
parameter.
-
enumerator IPL_SPATIALIZE_APPLY_TRANSMISSION
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
How to render transmission.
0
: Don’t render transmission.1
: Use the transmission values calculated by the game engine using simulation, and provided via theSIMULATION_OUTPUTS
parameter.2
: Use the transmission values specified in theTRANSMISSION_LOW
,TRANSMISSION_MID
, andTRANSMISSION_HIGH
parameters.
-
enumerator IPL_SPATIALIZE_APPLY_REFLECTIONS
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, reflections are rendered, using the data calculated by the game engine using simulation, and provided via the
SIMULATION_OUTPUTS
parameter.
-
enumerator IPL_SPATIALIZE_APPLY_PATHING
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, pathing is rendered, using the data calculated by the game engine using simulation, and provided via the
SIMULATION_OUTPUTS
parameter.
-
enumerator IPL_SPATIALIZE_HRTF_INTERPOLATION
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 1.
Controls how HRTFs are interpolated when the source moves relative to the listener.
0
: Nearest-neighbor interpolation.1
: Bilinear interpolation.
-
enumerator IPL_SPATIALIZE_DISTANCEATTENUATION
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Not currently used.
-
enumerator IPL_SPATIALIZE_DISTANCEATTENUATION_ROLLOFFTYPE
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 4.
Type of distance attenuation curve preset to use when
APPLY_DISTANCEATTENUATION
is1
.0
: Linear squared rolloff.1
: Linear rolloff.2
: Inverse rolloff.3
: Inverse squared rolloff.4
: Custom rolloff.
-
enumerator IPL_SPATIALIZE_DISTANCEATTENUATION_MINDISTANCE
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 10000.
Minimum distance value for the distance attenuation curve.
-
enumerator IPL_SPATIALIZE_DISTANCEATTENUATION_MAXDISTANCE
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 10000.
Maximum distance value for the distance attenuation curve.
-
enumerator IPL_SPATIALIZE_AIRABSORPTION_LOW
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The low frequency (up to 800 Hz) EQ value for air absorption. Only used if
APPLY_AIRABSORPTION
is set to2
. 0 = low frequencies are completely attenuated, 1 = low frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_AIRABSORPTION_MID
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The middle frequency (800 Hz - 8 kHz) EQ value for air absorption. Only used if
APPLY_AIRABSORPTION
is set to2
. 0 = middle frequencies are completely attenuated, 1 = middle frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_AIRABSORPTION_HIGH
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The high frequency (8 kHz and above) EQ value for air absorption. Only used if
APPLY_AIRABSORPTION
is set to2
. 0 = high frequencies are completely attenuated, 1 = high frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_DIRECTIVITY
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The directivity attenuation value. Only used if
APPLY_DIRECTIVITY
is set to2
. 0 = sound is completely attenuated, 1 = sound is not attenuated at all.
-
enumerator IPL_SPATIALIZE_DIRECTIVITY_DIPOLEWEIGHT
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
Blends between monopole (omnidirectional) and dipole directivity patterns. 0 = pure monopole (sound is emitted in all directions with equal intensity), 1 = pure dipole (sound is focused to the front and back of the source). At 0.5, the source has a cardioid directivity, with most of the sound emitted to the front of the source. Only used if
APPLY_DIRECTIVITY
is set to1
.
-
enumerator IPL_SPATIALIZE_DIRECTIVITY_DIPOLEPOWER
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 4.
Controls how focused the dipole directivity is. Higher values result in sharper directivity patterns. Only used if
APPLY_DIRECTIVITY
is set to1
.
-
enumerator IPL_SPATIALIZE_OCCLUSION
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The occlusion attenuation value. Only used if
APPLY_OCCLUSION
is set to2
. 0 = sound is completely attenuated, 1 = sound is not attenuated at all.
-
enumerator IPL_SPATIALIZE_TRANSMISSION_TYPE
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 1.
Specifies how the transmission filter is applied.
0
: Transmission is modeled as a single attenuation factor.1
: Transmission is modeled as a 3-band EQ.
-
enumerator IPL_SPATIALIZE_TRANSMISSION_LOW
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The low frequency (up to 800 Hz) EQ value for transmission. Only used if
APPLY_TRANSMISSION
is set to2
. 0 = low frequencies are completely attenuated, 1 = low frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_TRANSMISSION_MID
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The middle frequency (800 Hz to 8 kHz) EQ value for transmission. Only used if
APPLY_TRANSMISSION
is set to2
. 0 = middle frequencies are completely attenuated, 1 = middle frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_TRANSMISSION_HIGH
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The high frequency (8 kHz and above) EQ value for transmission. Only used if
APPLY_TRANSMISSION
is set to2
. 0 = high frequencies are completely attenuated, 1 = high frequencies are not attenuated at all.
-
enumerator IPL_SPATIALIZE_DIRECT_MIXLEVEL
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 1.
The contribution of the direct sound path to the overall mix for this event. Lower values reduce the contribution more.
-
enumerator IPL_SPATIALIZE_REFLECTIONS_BINAURAL
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, applies HRTF-based 3D audio rendering to reflections. Results in an improvement in spatialization quality when using convolution or hybrid reverb, at the cost of slightly increased CPU usage.
-
enumerator IPL_SPATIALIZE_REFLECTIONS_MIXLEVEL
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 10.
The contribution of reflections to the overall mix for this event. Lower values reduce the contribution more.
-
enumerator IPL_SPATIALIZE_PATHING_BINAURAL
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, applies HRTF-based 3D audio rendering to pathing. Results in an improvement in spatialization quality, at the cost of slightly increased CPU usage.
-
enumerator IPL_SPATIALIZE_PATHING_MIXLEVEL
Type:
FMOD_DSP_PARAMETER_TYPE_FLOAT
Range: 0 to 10.
The contribution of pathing to the overall mix for this event. Lower values reduce the contribution more.
-
enumerator IPL_SPATIALIZE_SIMULATION_OUTPUTS
Type:
FMOD_DSP_PARAMETER_TYPE_DATA
DEPRECATED
Pointer to the
IPLSimulationOutputs
structure containing simulation results.
-
enumerator IPL_SPATIALIZE_DIRECT_BINAURAL
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, applies HRTF-based 3D audio rendering to the direct sound path. Otherwise, sound is panned based on the speaker configuration.
-
enumerator IPL_SPATIALIZE_DISTANCE_ATTENUATION_RANGE
Type:
FMOD_DSP_PARAMETER_TYPE_DATA
(FMOD Studio 2.02+) The event’s min/max distance range. Automatically set by FMOD Studio.
-
enumerator IPL_SPATIALIZE_SIMULATION_OUTPUTS_HANDLE
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Handle of the
IPLSource
object to use for obtaining simulation results. The handle can be obtained by callingiplFMODAddSource
.
-
enumerator IPL_SPATIALIZE_OUTPUT_FORMAT
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
Controls the output format.
0
: Output will be the format in FMOD’s mixer.1
: Output will be the format from FMOD’s final output.2
: Output will be the format from the event’s input.
-
enumerator IPL_SPATIALIZE_NORMALIZE_PATHING_EQ
-
enumerator IPL_SPATIALIZE_NUM_PARAMS
The number of parameters in this effect.
-
enumerator IPL_SPATIALIZE_SOURCE_POSITION
-
enum IPLReverbParams
DSP parameters for the “Steam Audio Reverb” effect.
Values:
-
enumerator IPL_REVERB_BINAURAL
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, applies HRTF-based 3D audio rendering to reverb. Results in an improvement in spatialization quality when using convolution or hybrid reverb, at the cost of slightly increased CPU usage.
-
enumerator IPL_REVERB_OUTPUT_FORMAT
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
Controls the output format.
0
: Output will be the format in FMOD’s mixer.1
: Output will be the format from FMOD’s final output.2
: Output will be the format from the event’s input.
-
enumerator IPL_REVERB_NUM_PARAMS
The number of parameters in this effect.
-
enumerator IPL_REVERB_BINAURAL
-
enum IPLMixerReturnParams
DSP parameters for the “Steam Audio Mixer Return” effect.
Values:
-
enumerator IPL_MIXRETURN_BINAURAL
Type:
FMOD_DSP_PARAMETER_TYPE_BOOL
If true, applies HRTF-based 3D audio rendering to mixed reflected sound. Results in an improvement in spatialization quality, at the cost of slightly increased CPU usage.
-
enumerator IPL_MIXRETURN_OUTPUT_FORMAT
Type:
FMOD_DSP_PARAMETER_TYPE_INT
Range: 0 to 2.
Controls the output format.
0
: Output will be the format in FMOD’s mixer.1
: Output will be the format from FMOD’s final output.2
: Output will be the format from the event’s input.
-
enumerator IPL_MIXRETURN_NUM_PARAMS
The number of parameters in this effect.
-
enumerator IPL_MIXRETURN_BINAURAL