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 the IPLSource 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 the IPL_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 the AIRABSORPTION_LOW, AIRABSORPTION_MID, and AIRABSORPTION_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 the DIRECTIVITY_DIPOLEWEIGHT and DIRECTIVITY_DIPOLEPOWER parameters.

  • 2: Use the directivity value specified in the DIRECTIVITY 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 the SIMULATION_OUTPUTS parameter.

  • 2: Use the occlusion value specified in the OCCLUSION 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 the SIMULATION_OUTPUTS parameter.

  • 2: Use the transmission values specified in the TRANSMISSION_LOW, TRANSMISSION_MID, and TRANSMISSION_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 is 1.

  • 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 to 2. 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 to 2. 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 to 2. 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 to 2. 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 to 1.

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 to 1.

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 to 2. 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 to 2. 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 to 2. 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 to 2. 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 calling iplFMODAddSource.

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.

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.

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.