FMOD Engine User Manual 2.03
This section describes the major features introduced in the 2.02 release. See the Detailed Revision History for information regarding each patch release.
Events (rather than spatializer DSPs) now encapsulate the functionality of minimum and maximum distance.
As a result, Studio::EventDescription::getMinimumDistance
and Studio::EventDescription::getMaximumDistance
have been removed. Those APIs which returned values reported by FMOD spatializers have been replaced with the new Studio::EventDescription::getMinMaxDistance. The new API returns the initial values specified for minimum and maximum distance as set in FMOD Studio. If the minimum or maximum distance have been automated you can query the runtime value per EventInstance using Studio::EventInstance::getMinMaxDistance.
DSP plugins interested in receiving the new Event level min/max distance information can now add a data parameter of data type FMOD_DSP_PARAMETER_ATTENUATION_RANGE. For compatibility with the old behavior of each spatializer DSP having its own min/max distance, FMOD_DSP_TYPE_PAN and FMOD_DSP_TYPE_OBJECTPAN now have override properties that ignore the Event level values. Resonance Audio has been updated to use the new method, so if the old method is desired please use the Resonance plugin from v2.01.xx.
Using the new Event level min/max we are able to provide a new built-in parameter, FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED, that presents the range from min to max as 0 to 1.
Labeled or enumerated parameters have existed in FMOD Studio for a while, however until now they have been unavailable in the API.
With this release we have introduced a way to query all of the labels associated with one of these parameters. You can fetch labels for global parameters via Studio::System::getParameterLabelByID or Studio::System::getParameterLabelByName and you can fetch labels for local parameter via Studio::EventDescription::getParameterLabelByID, Studio::EventDescription::getParameterLabelByName or Studio::EventDescription::getParameterLabelByIndex. The main purpose of this API is to expose these strings to your level editor for ease of value selection. We recommend still storing the related index in you level data for best performance at runtime when setting enumerated parameters.
Despite this advice, we also provide some new APIs for setting enumerated parameter with their string value. For global parameters you can use Studio::System::setParameterByIDWithLabel or Studio::System::setParameterByNameWithLabel to lookup the parameter by ID or name respectively then set the value string. For local parameters you can use Studio::EventInstance::setParameterByIDWithLabel or Studio::EventInstance::setParameterByNameWithLabel to lookup the parameter by ID or name respectively then set the value string.
To accompany the addition of Ports into the FMOD Studio tool an additional API was necessary for setting the port index. In the Core API, System::attachChannelGroupToPort would accept both a port type and an index in order to disambiguate between multiple ports targeting the same device type, for example controller speakers. In the Studio API the port type is set on a bus at design time, for ports that require disambiguation you can now use Studio::Bus::setPortIndex to provide that value and Studio::Bus::getPortIndex to query it back.
With this change we have now unified all port types previously spread over platform specific APIs in the form of FMOD_<PLATFORM>_PORT_TYPE
. Now you can find the complete set in the FMOD_PORT_TYPE enumeration with information of availability in each platforms getting started guide.
APIs that have changed with this release that haven't been called out explicitly above.
Studio::EventInstance::triggerCue
to Studio::EventInstance::keyOffStudio::EventDescription::hasCue
to Studio::EventDescription::hasSustainPointguid
usage_core
as FMOD_CPU_USAGEdspusage
, streamusage
, geometryusage
and updateusage
studiousage
to update
System::getCPUUsageEx
usage
as FMOD_CPU_USAGEheaderversion
FMOD_OUTPUT_METHOD_POLLING
FMOD_OUTPUT_GETPOSITION_CALLBACK
, FMOD_OUTPUT_LOCK_CALLBACK
and FMOD_OUTPUT_UNLOCK_CALLBACK
getposition
, lock
and unlock
dspnumbuffers
dspnumadditionalbuffers
SET
, CURRENT
and END
valuesFMOD_CODEC_METADATA
, FMOD_CODEC_ALLOC
, FMOD_CODEC_FREE
, FMOD_CODEC_LOG
, FMOD_CODEC_FILE_READ
, FMOD_CODEC_FILE_SEEK
, FMOD_CODEC_FILE_TELL
, FMOD_CODEC_FILE_SIZE
FMOD_CODEC_WAVEFORMAT_VERSION
apiversion
filehandle
, filesize
, fileread
, fileseek
, metadata
, waveformatversion
functions
FSBANK_FORMAT_PCM_BIGENDIAN
and FSBANK_FORMAT_AT9_PSVITA
and FSBANK_FORMAT_AT9_PS4
This section describes any major changes that occurred in 2.01.xx leading up to the release of 2.02.
APIs that have changed with this release that haven't been called out explicitly above.
FMOD_STUDIO_PARAMETER_DISCRETE