Sound Groups

A SoundGroup is an audio mixer that groups multiple audio objects, such as Sound objects or additional SoundGroups, allowing you to control the volume and dynamic effects properties of multiple audio signals at once. Useful applications include:

  • Assigning audio to SoundEffects and BackgroundMusic sound groups so that you can adjust each group's master volume for optimal audio balancing.
  • Nesting sound groups into meaningful categories under a mix tree.
  • Grouping all sounds that need a specific dynamic effect. For example, you can group all sounds inside a cave to a Cave sound group, then apply a ReverbSoundEffect to simulate audio reflecting off of the cave's environment.

Creating SoundGroups

When creating SoundGroups, it's best to keep them all in a single location of the Workspace for organization purposes as you continue to add and edit audio within your experience. The following example stores the new SoundGroup under SoundService, as this service determines how Sound objects play in experiences.

To create a SoundGroup:

  1. In the Explorer window, insert a new SoundGroup into SoundService.

    1. Hover over SoundService and click the ⊕ button. A contextual menu displays.

    2. From the menu, insert a SoundGroup.

  2. Triple-click the new sound group and rename it according to its purpose, such as SoundEffects or BackgroundMusic.

Assigning Audio Objects to SoundGroups

SoundGroups don't have the typical parent-child behavior of other forms of object grouping like Models and Folders. Instead, you must assign each Sound object to its applicable SoundGroup object, regardless of either object's location in the workspace hierarchy, because where you place the Sound object changes where audio emits from, not the SoundGroup object itself. For more information, see Creating Sound Objects.

To assign a Sound object to a SoundGroup:

  1. In the Explorer window, select a sound object.

  2. In the Properties window, click the SoundGroup property field. Your cursor changes.

  3. In the Explorer window, click on the sound group object you want to assign your sound object to. The sound object's SoundGroup property updates accordingly.

Nesting SoundGroups

You can nest SoundGroups together into meaningful categories under a mix tree for organization and scripting purposes. When you're planning the parent-child relationships in your mix, consider the different sound categories in your experience, and how important they should be for the listener. For example, player ability sounds are likely much more important to gameplay than environmental sounds. If you group them into separate parent SoundGroups, you can easily access and adjust their volume levels as you add more Sound objects to your experience.

To nest SoundGroups:

  1. In the Explorer window, click-and-drag a sound group over the sound group you want to nest it under. The sound group name becomes translucent, and your cursor changes to a plus icon.

  2. Drop the sound group. It displays as a child of the sound group you nested it under.

Adjusting Volume

There are two main ways to think about a sound's volume: how loud the sound is by itself, and how loud it is in relation to other sounds. For example, a waterfall sounds loud when you play it by itself, but when you compare it to other sound effects like tires screeching, it likely sounds much quieter. To ensure that each sound plays at the correct volume for your experience, you can either add multipliers to SoundGroups, or prioritizing audio from one SoundGroup over another through the process of ducking.

Adding Multipliers

The Volume property of a SoundGroup lets you apply a volume multiplier between 0 and 10 to each of its child audio objects while they retain their relative volumes. This means that if a Sound object has a volume of 0.5 and you child it to a SoundGroup that has a volume multiplier of 0.5, the effective volume of the Sound object is 0.25.

This property is useful when you want to test volume changes to different SoundGroups without having to manually change the volume of each Sound object. For example, if you want to check what it'd sound like to increase the volume of all of your experience's music, you can create a Music SoundGroup for every musical Sound object or SoundGroup, then apply a volume multiplier of 2.

Ducking

You can prioritize audio from one SoundGroup over another through the CompressorSoundEffect. This dynamic effect allows you to duck, or reduce in volume, Sound objects in low-priority SoundGroups whenever Sound objects in high-priority SoundGroups start to play. This allows the listener to concentrate on the specific audio that you want them to pay attention to while not suddenly cutting the audio from low-priority sounds completely. When the high-priority audio finishes playing, low-priority audio returns to its original volume, keeping the listener immersed in your experience.

The sounds that you choose to duck depend on the needs of your specific experience. For example, one experience might benefit from reducing the volume of background music whenever a GUI notification plays, while others might benefit from reducing the volume of GUI notifications whenever dialogue plays. The following reference mix tree prioritizes Sound objects in the high-priority GUI Notifications and Weapons SoundGroups while de-prioritizing Sound objects in low-priority 3D and 2D Ambience SoundGroups.

The CompressorSoundEffect has four main properties you must set in order to duck audio whenever your high priority audio plays:

Property Description
Threshold The threshold decibel level that Studio applies ducking. You can set this property to any value between -80 (full compression) and 0 (full volume).
Attack The rate you want audio to duck. You can set this property to any value between 0.001 and 1 second.
Release The rate you want the audio to stop ducking. You can set this property to any value between 0.001 and 1 second.
Ratio The ratio of how much ducking you want to occur between the audio object that Studio prioritizes and the audio object that ducks. You can set this property to any value between 1 (no compression) and 50 (fifty times the compression).

The values of each of these properties are highly dependent on your specific audio. Each source audio has a different volume, and you might only need to duck by a minimal amount in order for your high priority audio to have emphasis in your experience.

To prioritize SoundGroups through the CompressorSoundEffect:

  1. In the Explorer window, navigate to the SoundGroup you want to duck and insert a CompressorSoundEffect.
    1. Hover over the SoundGroup and click the ⊕ button. A contextual menu displays.
    2. From the menu, insert a CompressorSoundEffect.
  2. Select the CompressorSoundEffect, then navigate to the Properties window.
  3. Select the SideChain property. Your cursor changes.
  4. Select the Sound or SoundGroup object that you want to prioritize when the compressor applies. The SideChain property updates accordingly.
  5. In the Threshold property field, input the decibel level in which you want the ducking to start.
  6. In the Attack property field, input how quickly you want audio to duck.
  7. In the Release property field, input how quickly you want the audio to stop ducking.
  8. In the Ratio property field, input the ratio of how much compression you want to occur between the audio object that ducks and the audio object that Studio prioritizes.
  9. (Optional) Play test your experience to see if the audio sounds correct. If not, adjust the CompressorSoundEffect properties accordingly.