SOUND DEFINITIONS
The sound.xml
/ soundai.xml
file goes in the sound
/ soundai
folder beside the other folders for the object and should be formatted as follows:
<?xml version="1.0" encoding="UTF-8"?>
<SoundInfo Version="1.0">
<!-- SOUND DATA HERE -->
</SoundInfo>
Here you must include the <SoundInfo>
element. The rest of the XML is comprised of the elements listed on this page. It is worth noting that possibly the most important of these elements is the <SimVarSounds>
container, as it is possibly the easiest and most powerful way to incorporate sounds into the simulation.
Note For AI Aircraft
It should be noted that AI aircraft are limited in the SimVars they can use in the sound.xml
file, due to the fact that they really only have engine and ground audio effects assigned to them. The full list of the SimVars that these AI aircraft can use is as follows:
- Far distance (up to a maximum of 10,000m, although sounds will not be audible after 5,000m):
SIM ON GROUND
GENERAL ENG PCT MAX_RPM
GENERAL ENG RPM
VELOCITY WORLD X
VELOCITY WORLD Y
VELOCITY WORLD Z
GROUND VELOCITY
TURB ENG REVERSE NOZZLE PERCENT
TURB ENG N1
TURB ENG N2
PROP BETA
PROP RPM
GENERAL ENG COMBUSTION
GENERAL ENG COMBUSTION SOUND PERCENT
ENG ROTOR RPM
TURN INDICATOR RATE
ROTOR COLLECTIVE BLADE PITCH PCT
ROTOR CYCLIC BLADE PITCH PCT
ROTOR CYCLIC BLADE MAX PITCH POSITION
DISK PITCH ANGLE
DISK BANK ANGLE
DISK PITCH PCT
DISK BANK PCT
DISK CONING PCT
ROTOR ROTATION ANGLE
ROTOR LATERAL TRIM PCT
ROTOR LONGITUDINAL TRIM PCT
- Close distance (up to 500m):
GEAR POSITION
TRAILING EDGE FLAPS LEFT PERCENT
TRAILING EDGE FLAPS RIGHT PERCENT
LEADING EDGE FLAPS LEFT PERCENT
LEADING EDGE FLAPS RIGHT PERCENT
SPOILERS LEFT POSITION
SPOILERS RIGHT POSITION
GEAR ANIMATION POSITION
CENTER WHEEL ROTATION ANGLE
GEAR CENTER STEER ANGLE
GEAR LEFT STEER ANGLE
GEAR RIGHT STEER ANGLE
GEAR STEER ANGLE
RUDDER DEFLECTION PCT
RUDDER TRIM PCT
ELEVATOR DEFLECTION PCT
AILERON LEFT DEFLECTION PCT
AILERON RIGHT DEFLECTION PCT
FLAPS HANDLE PERCENT
PROP MAX RPM PERCENT
PROP THRUST
ENG RPM ANIMATION PERCENT
PROP ROTATION ANGLE
GENERAL ENG STARTER ACTIVE
TURB ENG AFTERBURNER
TURB ENG AFTERBURNER PCT ACTIVE
TURB ENG AFTERBURNER STAGE ACTIVE
<SoundInfo>
This element is a container element for all the sound information. This element can contain the following sub-elements:
<WwisePackages>
<AcousticParameters>
<AlwaysPlaySounds>
<WindSounds>
<GroundSounds>
<EngineSoundStates>
<EngineSoundPresets>
<EngineSoundTransitions>
<MiscellaneousSounds>
<SimVarSounds>
<EventIdSounds>
<AnimationSounds>
<AvionicSounds>
Attribute | Description | Type | Required |
---|---|---|---|
Version |
Should represent the version of the program this XML is made for. | String | Yes |
<WwisePackages>
This element allows to define the names of the main package and any additional packages to be loaded with the SimObject for <Sound>
elements using the wwisedata=true
attribute. This element has no attributes and is a container element for <MainPackage>
and <AdditionalPackage>
elements.
See this section of the examples page for more details: Wwise Package Definition Examples
<MainPackage>
This element describes the name of the MainPackage that needs to be loaded by the SimObject and is a sub-element of <WwisePackages>
. This element has the following attribute:
Attribute | Description | Type | Required |
---|---|---|---|
Name |
The name of the package. | String | Yes |
For an audio package to be publishable, you must write your company name as a prefix, followed by the name of your aircraft, for example:
<MainPackage Name="Asobo_C152"/>
IMPORTANT: All wwise events included in the MainPackage must have its name as a prefix, followed by the name described by the WwiseEvent attributes.
<AdditionalPackage>
This element describes the name of any additional packages used for the add-on and is a sub-element of <WwisePackages>
. This element has the following attribute:
Attribute | Description | Type | Required |
---|---|---|---|
Name |
The name of the additional package. | String | Yes |
The same as for the main packages, you must write your company name as a prefix, followed by the name of the aircraft, and followed by the name of the additional content.
IMPORTANT: Every event in wwise are prefixed by the name of the MainPackage and followed by the name described in the WwiseEvent
attributes whether it comes from the main package or from any additional packages. So, for additional packages we recommend that you add a signature nomenclature to your WwiseEvents
attributes so there won't be any collision between the mainpackage or other additional packages. For example, by adding the name of your company, if you are not the content creator of the main package.
<AcousticParameters>
This element permits you to set up the different acoustic parameters for the audio and is a sub-element of <SoundInfo>
. This element has the no attributes and is a container element for <Parameter />
. See this section of the examples page for more details:
<Parameter />
This sub-element of <AcousticParameters>
permits you to define specific parameters for the acoustic environment. It has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
Name |
One of three names of the parameter to set. |
String: "ReverberationPreset" "Insulation_ExitClosed" "Insulation_ExitOpen" |
Yes |
ShareSetInside |
These attributes are only used when the NOTE: AI planes do not support shareset configuration for the inside bus. |
String | No |
ShareSetOutside |
|||
Value |
This attribute is only used when the
|
Float |
<AlwaysPlaySounds>
This container element permits you to list various sound elements that play at all times and do not require any parameter to set up how and when they are triggered. It is a sub-element of <SoundInfo>
, has no attributes and can contain one or more <Sound>
elements.
<WindSounds>
This container element permits you to list various sound elements that play at all times and do not require any parameter to set up how and when they are triggered. The sounds listed here will also receive physics simulation variables by default through Wwise RTPCs in the Wwise data approach. All of these RTPCs are available in the WwiseSampleProject. The list of the shared RTPC can be found in the shared RTPC list.
This element is a sub-element of <SoundInfo>
, has no attributes and can contain one or more <Sound>
elements.
<GroundSounds>
This container element permits you to list various sound elements that will play when an aircraft is in contact with the ground in some way. This element is a sub-element of <SoundInfo>
, has no attributes and can contain one or more <Sound>
elements.
When defining the <Sound>
sub-elements (and the WwiseData
attribute is set to "true") the WwiseEvent
attribute should be one of the following:
WwiseEvent | Description |
---|---|
"GROUND_ROLL" |
Continuous sound when the wheels are in contact with the ground (sound loops). |
"CENTER_TOUCHDOWN" |
When the aircraft wheels touch the ground (sound is a one-shot). |
"AUX_TOUCHDOWN" |
|
"LEFT_TOUCHDOWN" |
|
"RIGHT_TOUCHDOWN" |
|
"FUSELAGE_SCRAPE" |
When a non-wheel component touches a solid element (sound loops). |
"LEFT_WING_SCRAPE" |
|
"RIGHT_WING_SCRAPE" |
|
"AUX1_SCRAPE" |
|
"AUX2_SCRAPE" |
|
"XTAIL_SCRAPE" |
|
"CRASH_SOUND" |
When the aircraft body touches the ground (sound is a one-shot). |
"SPLASH_SOUND" |
<EngineSoundStates>
This container element is linked to the state of the engine of the SimObject. This element is a sub-element of <SoundInfo>
, has no attributes and can contain one or more <Sound>
elements. Three different engine states are differentiated - Off, Start, and On - and three boolean values must be defined to set when the sound should be played in relation to the engine's state. These values are set using the <Sound>
element attributes StateOff
, StateStart
, and StateOn
for each engine sound.
See this section of the examples page for more details: Engine State And Transition Examples
<EngineSoundPresets>
This container element has no attributes and links sounds to specific play conditions based on their WwiseEvent
, and mimics the behavior of the respective presets in the legacy sound.cfg
format. The WwiseEvent
will be named accordingly to the EngineIndex/RotorIndex (X) and the FSX legacy naming. This element is a sub-element of <SoundInfo>
, has no attributes and can contain one or more <Sound>
elements.
The table below lists the presets for the WwiseEvent
attribute in the <Sound>
element:
XML WwiseEvent |
Behavior | Event Name in Wwise | Loop or OneShot |
---|---|---|---|
JetWhine |
Played all the time | engX_jet_whine |
Loop |
NonCombustion |
When engine is "off" | engX_non_combustion |
Loop |
Starter |
When the engine is "starting" | engX_starter |
Loop |
CombustionStart |
When the e"gine goes from "starting” to "on" | engX_combustion_start |
OneShot |
Combustion |
When engine is "on" | engX_combustion |
Loop |
Propeller |
When engine is "on" | engX_prop |
Loop |
Rotor |
When engine is "on" | rotorX_rotor |
Loop |
Shutdown |
When the engine goes from "on" to "off" | engX_shutdown |
OneShot |
The <Sound>
element for engine presets also have the following attributes included:
-
RPMMin
- This setting allows to set the minimum RPM threshold (GENERAL ENG RPM simvar) from which the engine loop stops, and from which the Shutdown sound plays. Its purpose is to get a better transition between the loop and the engine shutdown when the engine state goes off. -
CustomSuffix
- In Wwise, each event has its own name and ID. This setting allows to use as many<EngineSoundPresets>
as needed.
See this section of the examples page for more details: Engine Preset Examples
NOTE: By default, in a wwise data approach, each <EngineSoundPresets>
event receives SimVar values through Wwise RTPCs. All of these RTPC are available in the WwiseSampleProject. The list of the shared RTPC can be found in the shared RTPC list.
<EngineSoundTransitions>
This container element for <Sound>
has no attributes and triggers sounds when the engine goes from one state to another. The <Sound>
element requires the attributes StateTo
and StateFrom
for the sound to be playable, and each can be set to Off
, Start
, or On
.
See this section of the examples page for more details:
<MiscellaneousSounds>
This container element has no attributes and is for <Sound>
to set those sounds that trigger when a corresponding event occurs. When the WwiseData
attribute for the for <Sound>
is true, there should be an accompanying WwiseEvent
attribute, which will contain one of the following trigger strings to identify the type of sound event:
WwiseEvent | Description |
---|---|
"FLAPS" |
Sound used for flaps. |
"GEAR_UP" |
Sound used for retracting the landing gear. |
"GEAR_DOWN" |
Sound used for lowering the landing gear. |
"EXIT_OPEN" |
Sound used for opening the exit doors. |
"EXIT_CLOSE" |
Sound used for closing the exit doors. |
"BLAST_SHIELD_UP" |
Sound used for raising a blast shield. |
"BLAST_SHIELD_DOWN" |
Sound used for lowering a blast shield. |
"GYRO_SOUND" |
Sound used for the gyro. |
"FUEL_PUMP" |
Sound used for the fuel pump. |
"OVERSPEED_WARNING_SOUND" |
Warning sound for when the aircraft is over speed. |
"STALL_WARNING" |
Warning sound for when the aircraft is going to enter in a stall. |
"OVERSTRESS_WARNING" |
Warning sound for when the aircraft is over stressed. |
"ALERT_OVER_G" |
Warning sound for when the aircraft is over Gs. |
"GLIDESLOPE_WARNING_SOUND" |
Warning sound for when the aircraft is outside the glideslope. |
"NO_SMOKING_ALERT" |
Sound for the no smoking alert. |
"SEATBELTS_ALERT" |
Sound for the seatbelts alert. |
"AP_DISENGAGE_WARNING" |
Warning for when the auto-pilot is disengaged. |
"AP_PREFLIGHT_CHECK_OVER" |
Warning for when the auto-piolt pre-flight check is over. |
"SONIC_BOOM" |
This sound event is a one shot sound, triggered when the listener enters the mach cone. |
See this section of the examples page for more details:
<SimVarSounds>
This is a container element for one or more <Sound>
sub-elements, and has no attributes. The sounds added to this element react to changes in values from the simulation variables directly. They can either be played when the watched value changes, or when the value reaches a specific range, which is defined by a LowerBound
attribute and an UpperBound
attribute (which default to -∞ and +∞) in the <Range />
sub-element.
Note that a <Sound>
listed with this element will need a SimVar
attribute, followed by Units
and Index
attributes. These three settings will define the simulation variable value that will be watched. The <Sound>
element can also make use of the <Requires>
sub-element to add another SimVar
or LocalVar
and create conditions under which sounds would be played. If the <Sound>
element is using the LocalVar
attribute, it should not have the Units
and Index
attributes.
See this section of the examples page for more details:
<EventIdSounds>
This is a container element for one or more <Sound>
sub-elements, and has no attributes. The sounds added to this element are set to receive events from the simulation, and each event is paired with an associated value. The <Sound>
elements require an EventId
attribute (a string) to specify the event that they have to react to. They can be set to act every time the event is fired or only when the event changes its value by adding the attribute ChangedOnly
to the <Sound>
element. This attribute would be either "true" or "false", with the value being "false".
See this section of the examples page for more details:
<AnimationSounds>
This is a container element for one or more <Sound>
sub-elements, and has no attributes. Sounds added in this element are triggered on animations implemented in the SimObject [model].xml
files, and use the <Behaviors>
element. Their main purpose is to play button and switch sounds in the cockpit, but they can also be used elsewhere, e.g: on flight controls, levers, jetway animations, etc...
See this section of the examples page for more details:
<AvionicSounds>
This is a container element for one or more <Sound>
sub-elements, and has no attributes. It is primarily used to trigger sounds from the interior cockpit avionics. The <Sound>
element WwiseEvent attribute should match the event defined in the panel.xml for the aircraft in the <SoundEvent>
element (as part of an the <Alert>
).
<Sound>
This element is a sub-element of all the elements listed in the document above and is used to define a single sound. In general, this is a self-closing element, although it can also contain the elements <Range />
, <Requires>
, and <WwiseRtpc />
.
NOTE: Both sub-elements <Range />
and <Requires>
are only applicable when the <Sound>
element is within a <SimVarSounds>
container.
The table below lists all the attributes that are shared between all the different sound elements, and they help define the most important elements of a sound. These attributes can be used as an attribute of a <Sound>
element when using either a Wave Data and Wwise Data approach.
NOTE: Some special attributes are available for this element depending on what parent element it belongs to. These extra attributes are listed under the relevant parent element.
It is important to note that specific attributes come from the legacy sound.cfg
properties and are only appropriate when the WwiseData
attribute is set to "False"
. These attributes are set when porting from the old format to the XML format, and as such are listed separately here:
The available attributes have been split into two categories since some are universal (can be used in all cases), while others are only applicable when the element is included within the <SimVarSounds>
container:
Attribute | Description | Type | Required |
---|---|---|---|
Universal Attributes |
|||
WwiseEvent |
This is a mandatory attribute in both For information on how events should be named, please see the following section of the documentation: |
String | Yes |
WwiseData |
This setting defines if the sound is a |
Bool | No |
ViewPoint |
This attribute specifies if the sound can be heard from outside the SimObject, inside the SimObject or both. |
String: "Inside" "Outside" "All" |
|
FadeOutType |
This attribute allows for sounds to fade out when asked to stop playing. The value given determines how the fade out will be implemented. |
Integer: "0" - None "1" - Linear "2" - Sine "3" - Reciprocal Sine |
|
FadeOutTime |
This represents the time in seconds that the sound will take to fade out. Should only be included when FadeOutType is not "0" (None). |
Float | |
BreakOnStop |
This attribute controls how a sound will behave when stopped. If "True", when a stop is called on a sound, it will play until its end before stopping. If "False" (the default value) the sound will be stopped instantly. |
Bool | |
Continuous |
This attribute allows you to override the default value which defines whether a sound is played in a loop, or as a one-shot sound. Setting it to "True" tells the sim to loop the sound while setting it to "False" tells the sim to only play the sound once. | Bool | |
ContinuousStopDelay |
This attribute can be set to a value in seconds, and will delay the stop of a continuous sound. It is linked to the SimVar after the SimVar itself has stopped changing over time. |
Float | |
ApplyCockpitReverb |
This attribute allows you to activate (set to "True") or deactivate (set to "False") sending the sound to the game-defined bus set in the |
Bool | |
NodeName |
This attribute allows you to specify a node from the model to attach the sound to. If not set or if the node is not found, the system will attach the sound to the main node of the SimObject. This attribute is not available on engines sounds (<EngineSoundStates> , <EngineSoundPresets> , <EngineSoundTransitions> ) as engines sounds are attached to the position of the engines specified in the engine configuration file (engines.cfg) thanks to the EngineIndex attribute. |
String | |
ConePitch |
The pitch, in degrees, of the sound cone. | Float | |
ConeHeading |
The direction of the sound cone, in degrees. 0° is facing forward. | Float | |
CancelConeHeadingWhenInside |
This attribute permits the cancellation of the ConeHeading setting (set to "True") whenever the simulation's ViewPoint is Inside. Set to "False" if you don't want to cancel this. |
Bool | |
EngineIndex |
The index of the engine to target, from 1 to 4. | Integer | |
RotorIndex |
The index of the rotor to target (for helicopters), from 1 to 2. Note that the |
Integer | |
RPMMin |
This allows you to define at which RPM the combustion and propeller / rotor events stop and the shutdown event will play. See the Engine Preset Examples for an example of use. | Float | |
CustomSuffix |
This attribute allows you to add additional suffixes to any WwiseEvents . This way trigger sounds (<WindSounds> , <GroundSounds> , <MiscellaneousSounds> , etc...) can be doubled for the addition of new layers, or be replaced within an additional package. This attribute only works when the WwiseData attribute is "True". |
String | |
|
|||
Animation |
The name of the animation group to target instead of a SimVar as the controller for the sound. If this attribute is supplied then you must also supply the Model attribute. Cannot be used if the SimVar , LocalVar , or InputEvent attributes have been used. |
String | No |
Model |
Flag the animation as being from either the interior or exterior models. |
String:
|
No (Yes if the Animation attribute has been used)
|
InputEvent |
Defines an Input Event to be used to control the sound. Cannot be used if the SimVar , LocalVar , or Animation attributes have been used. |
String | No |
SimVar |
A SimVar to be used to control the sound. This attribute will also require you to use the Units and Index attributes. Cannot be used if the LocalVar , Animation , or InputEvent attributes have been used. |
String | No |
LocalVar |
A LocalVar to be used to control the sound. Cannot be used if the SimVar , Animation , or InputEvent attributes have been used. |
String | No |
Units |
The units of the SimVar or the InputEvent . This attribute is optional for Input Events since the simualtion will use the default units for the event if it is not included. If you do specify the unit here, the event value will be converted. |
String | No (Yes if the SimVar attribute has been used)
|
Index |
The SimVar index value. |
Integer | No (Yes if the SimVar attribute has been used)
|
<Range />
This self-closing element can be used to set the range for a <Sound>
element using SimVars
or LocalVars
. It can have the following attributes:
NOTE: This sub-element is only applicable when the parent <Sound>
element is in the <SimVarSounds>
container.
Attribute | Description | Type | Required |
---|---|---|---|
LowerBound |
The lower bound of the range. | Float | Yes |
UpperBound |
The upper bound of the range | Float | Yes |
<Requires>
This element permits you to add a SimVar
or LocalVar
to a <Sound>
element to create conditions for playing a sound. It can have the following attributes:
NOTE: This sub-element is only applicable when the parent <Sound>
element is in the <SimVarSounds>
container.
Attribute | Description | Type | Required |
---|---|---|---|
SimVar |
The required SimVar . Cannot be used if the LocalVar attribute has been used. |
String | Yes |
LocalVar |
The required LocalVar . Cannot be used if the SimVar attribute has been used. |
String | Yes |
Units |
The units of the SimVar . |
String | Yes |
Index |
The SimVar index value. |
Integer | Yes |
<WwiseRtpc />
This self-closing element is a sub-element of <Sound>
and can only be used when the sound attribute WwiseData
is "True". This element can be used to either:
- send a simulation variable directly to Wwise, which requires that a
SimVar
orLocalVar
value has been defined, as well as the name of the RTPC in Wwise. - use an animation position in the same way you'd use a SimVar, which requires that an animation group and model be given.
Note that a sound can have as many RTPC values as required.
The available attributes have been split into two categories since some are universal (can be used in all cases), while others are only applicable when the element is included within the <SimVarSounds>
container:
Attribute | Description | Type | Required |
---|---|---|---|
Universal Attributes |
|||
Derived |
Whether to permit a derived SimVar value ("True") or not ("False"). | Bool | No |
RTPCName |
The name of the game parameter in Wwise. | String | Yes |
RTPCAttackTime |
This attribute permits you to customize the smooth time during ascending movement. The smaller the value, the faster the target will be reached. | Float | No |
RTPCReleaseTime |
This attribute permits you to customize the smooth time during descending movement. The smaller the value, the faster the target will be reached. | Float | No |
|
|||
SimVar |
A SimVar to be used to control the sound. This attribute will also require you to use the Units and Index attributes. Cannot be used if the LocalVar , Animation , or InputEvent attributes have been used. |
String | No |
LocalVar |
A LocalVar to be used to control the sound. Cannot be used if the SimVar , Animation , or InputEvent attributes have been used. |
String | No |
Units |
The units of the SimVar or the InputEvent . This attribute is optional for Input Events since the simualtion will use the default units for the event if it is not included. If you do specify the unit here, the event value will be converted. |
String | No (Yes if the SimVar attribute has been used)
|
Index |
The SimVar index value. |
Integer | No (Yes if the SimVar attribute has been used)
|
Animation |
The name of the animation group to target instead of a SimVar. If this attribute is supplied then you must also supply the Model attribute. Cannot be used if the SimVar , LocalVar , or InputEvent attributes have been used. |
String | No |
Model |
Flag the animation as being from either the interior or exterior models. |
String:
|
No (Yes if the Animation attribute has been used)
|
InputEvent |
Defines an Input Event to be used to control the sound. Cannot be used if the SimVar , LocalVar , or Animation attributes have been used. |
String | No |