ADDING SOUNDS TO INTERACTIONS

Sound event integration is usually done in the cockpit behavior file. The generation of these events is heavily dependent on the components hierarchy to organise instruments by panel (see here for more information on this: Model Behaviors Component Overview). The component hierarchy is usually created in conjunction with the sound designer such that each physical instrument is associated with a location within the cockpit space and has a sound type attributed to it. The table below is an example of what you should be working from:

 

Control Description Location Type ID Value
Master Warning Front Panel Switch 1
CRS / RANGE Front Panel Knob (Inner / Outer) 2
Sync Radio Front Panel Button 3
Half Bank Front Panel Button 3
ELT Side Panel Cover 4
ELT Side Panel Switch 1
Pitch Trim Pedestal Switch 1
Trim Interrupt Pedestal Button 3
Minimums Overhead Knob 2
Autopilot Controls Button 3
Pitch / Aileron Trim Controls Switch 1
ETC...

 

The component hierarchy is going to be heavily based on the location of the different controls, such that they are logically grouped according to their place in the actual cockpit.

NOTE: This is simply the recommended process for creating components and sound events, as used by the Microsoft Flight Simulator 2024 developers, but you may adapt things to suit your own unique workflow.

 

The values in this table will be used in the model behaviour templates to generate various sound event IDs with the following format:

<LOCATION>_<TYPE>_<ID>_<SUFFIX>

 

The generated sound event ID should match that which has been defined in the Sound XML file for the SimObject, within the <AnimationSounds> element. For example:

<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (c) Asobo Studio, All rights reserved. www.asobostudio.com -->
<SoundInfo Version="0.1">
    <WwisePackages>
        <MainPackage Name="Asobo_Cabri_G2"/>
    </WwisePackages>
    <AnimationSounds>
        <Sound WwiseData="true" WwiseEvent="overhead_switch_type_1" ViewPoint="Inside"/
        <Sound WwiseData="true" WwiseEvent="panel_button_type_1_forward" ViewPoint="Inside"/>    
        <Sound WwiseData="true" WwiseEvent="panel_button_type_1_backward" ViewPoint="Inside"/>
        <Sound WwiseData="true" WwiseEvent="pedestal_knob_type_3" ViewPoint="Inside"/>
        <Sound WwiseData="true" WwiseEvent="pedestal_knob_type_3" ViewPoint="Inside"/>
        <Sound WwiseData="true" WwiseEvent="panel_knob_type_4_inner" ViewPoint="Inside"/>    
        <Sound WwiseData="true" WwiseEvent="panel_knob_type_4_outer" ViewPoint="Inside"/> 
        <Sound WwiseData="true" WwiseEvent="control_cover_type_1_forward" ViewPoint="Inside"/>    
        <Sound WwiseData="true" WwiseEvent="control_cover_type_1_backward" ViewPoint="Inside"/>
        <Sound WwiseData="true" WwiseEvent="control_switch_type_1" ViewPoint="Inside"/>
    </AnimationSounds>
</SoundInfo>

Within the model behaviour XML you control the location, the ID, and the suffix, while the type is normally generated automatically by the template being used. For example if you use ASOBO_CT_Button_Template then the type will be BUTTON_TYPE_.

NOTE: You do not have to use this auto-generated type and it is provided simply as a convenience. Instead you can specify your own type identifier using the SOUND_EVENT_INTERACTION_TYPE parameter in the behaviour.

 

 

Component Blocks

With the location list you can then go ahead and block out the components in the XML, something like this:

<ModelBehaviors>
    <Include ModelBehaviorFile="ASOBO_EX1\InteriorDefs.xml"/>
    <Component ID="CONFIG">
        <Parameters Type="Override">
            <UseParametersFn Name="ASOBO_Configure_Global_Parameters"/>
        </Parameters>
    </Component>
    <Component ID="OVERHEAD"/>
    <Component ID="FRONT_PANEL"/>
    <Component ID="CONTROLS"/>
    <Component ID="PEDESTAL"/>
</ModelBehaviors>

For each component you will need to define the following parameter: SOUND_EVENT_GROUP. This parameter value will be used to create the prefix of the generated sound events of every interaction created within this component, for example:

<Component ID="OVERHEAD">
    <Parameters Type="Override">
        <SOUND_EVENT_GROUP>OVERHEAD</SOUND_EVENT_GROUP>
    </Parameters>
</Component>

 

 

Creating Sound Events Within The Hierarchy

With the locations blocked out in the file, you can then go ahead and add in the different instrument interactions using the templates and interactions outlined on the Creating Cockpit Interactions page. Within each component you will need to add in specific tags to identify the sound that will be used using the sound ID (and optionally the suffix, explained further down this page). As such the component will look something like this:

<Component ID="OVERHEAD">
    <Parameters Type="Override">
        <SOUND_EVENT_GROUP>OVERHEAD</SOUND_EVENT_GROUP>
    </Parameters>
    <Component ID="LIGHTING_Landing">               
        <UseTemplate Name="ASOBO_IT_Switch_Template">
            <ID>1</ID>
            <SOUND_EVENT_TYPE_ID>1</SOUND_EVENT_TYPE_ID>
            <LIGHT_ID>@LIGHTING_Light_Landing_L</LIGHT_ID>
            <LIGHT_CIRCUIT>@ELECTRICAL_Circuit_Light_Landing_L</LIGHT_CIRCUIT>
            <IE_NAME_UID>FIXED_L</IE_NAME_UID>
            <PART_ID>LIGHTING_SWITCH_LANDING_LIGHT_FIXED_L</PART_ID>
            <TOOLTIPS_TITLE_INDEX>(R:1:@TT_Package.STATE.LEFT)</TOOLTIPS_TITLE_INDEX>
       </UseTemplate>
    </component>
</component>

The snippet above will generate a sound event ID of OVERHEAD_SWITCH_TYPE_1.

 

For things like stacked knobs or switches with various states, it may be necessary to have multiple sound effects played for each of them. In these cases the sound designer could simply create new sound event IDs for each one, but often it's eaiser to keep associated ID's together and instead use a suffix to identify the sound event. The following example is for a stacked knob and uses inner and outer suffixes:

<Component ID="PANEL">
    <Parameters Type="Override">
        <SOUND_EVENT_GROUP>PANEL</SOUND_EVENT_GROUP>
    </Parameters>
    <Component ID="LIGHTING_Panel_Lights">               
        <UseTemplate Name="ASOBO_IT_Knob_Finite_Template">
            <IN_BASE_NAME>MAIN_PANEL_KNOB_LIGHT_OUTBD_BRT_CONTRAST</IN_BASE_NAME>
            <IE_NAME>OUTBD_BRT_CONTRAST</IE_NAME>
            <SOUND_EVENT_SUFFIX>INNER</SOUND_EVENT_SUFFIX>
            <SOUND_EVENT_TYPE_ID>3</SOUND_EVENT_TYPE_ID>
            <IE_INCREMENT>5</IE_INCREMENT>
        </UseTemplate>
        <UseTemplate Name="ASOBO_IT_Knob_Finite_Template">
            <IN_BASE_NAME>MAIN_PANEL_KNOB_LIGHT_OUTBD_DU</IN_BASE_NAME>
            <IE_NAME>OUTBD_DU_BRIGHT</IE_NAME>
            <SOUND_EVENT_SUFFIX>OUTER</SOUND_EVENT_SUFFIX>
            <SOUND_EVENT_TYPE_ID>3</SOUND_EVENT_TYPE_ID>
            <IE_INCREMENT>5</IE_INCREMENT>
         </UseTemplate>
    </component>
</component>

This will generate two sound event IDs: PANEL_KNOB_TYPE_3_INNER and PANEL_KNOB_TYPE_3_OUTER.