SFX Implementation

SFX Implementation Quick Guide

Basic Concepts

  • Acoustic spaces: Defines the audio properties of a Cell in the game.

  • Reverb Parameters: Templates that define the reverb settings for a cell or a specified area.

  • Sound Categories: general categories that sound descriptors need to be assigned to.

  • Sound Descriptors: An individual sound or set of sounds, plus their playback parameters.

  • Sound Markers: A sound emitter that needs to be placed in the world

  • Sound Output Models: Templates which define playback output parameters for their sound descriptors.

Wiki link

Sound Categories

Sound categories are similar to a group or bus on a mixing console. With it you can control sound descriptors that are linked to it en masse. These also determine whether the sound will play when the game is paused, when the player is underwater.

Sound Descriptors

This is where you specify the name of the ID of the sound effect, the output model, category and a few other properties of the sound. You can also set up conditions for the sound to play.

It is important to note that you have to end the name of the sound effect with the letters LP if the sound is a loop (and also select that it is a loop sound right below the static attenuation settings).

Note that the files specified in the sound descriptor will always play in sequence, top to bottom.

Examples of conditions: time of day, player gender, player race, player HP and many more.

Sound Descriptor Settings

  • ID: Unique name for the sound.

  • Descriptor Type: (not currently supported)

  • Sound: Paths to one or more sound files that will be played when this sound is called.

  • Conditions: Conditions to determine playback of the sound.

  • Category: See "Sound Categories".

  • Output Model: Defines additional playback parameters. See "Sound Output Models".

  • Static Attenuation (dB): Attenuate the sound's playback by this much in dBFS.

  • dB Variance: Sets a negative range of values in dBFS that the sound can be attenuated over. For example, if Static Attenuation is -12dB and dB Variance is 6, playback will be between -12 and -18 dBFS, randomized.

  • Looping:

    • None: The sound is a 'one shot' and does not loop.

    • Loop: The sound is a traditional loop (the file must end with _LP). Its playback will be looped from the start of the file to the end

    • Envelope Fast: The sound is a metadata loop (the file must end with _LPM and contain sustaining loop points within the file) and will play its attack portion and then loop indefinitely between its loop points. Playback will immediately jump to the file's release portion when the sound is done playing.

    • Envelope Slow: The sound is a metadata loop (the file must end with _LPM and contain sustaining loop points within the file) and will play its attack portion and then loop indefinitely between its loop points. Playback will continue uninterrupted to the end of the file when the sound is done playing.

  • % Frequency Shift: Static frequency/pitch shift to apply to the sound, positive or negative, during playback.

  • % Frequency Variance: Variable frequency/pitch shift (in absolute value, thus positive and negative) during playback.

  • Alternate For...: If a sound cannot be loaded into memory and played in time (e.g. with a time-sensitive event such as a weapon impact), play this sound as an alternate instead. NOTE: Setting up a sound as an alternate means that the sound will be kept in memory at all times, so this should only be used sparingly.

  • Priority: Determines a sound's priority as it relates to memory and disk i/o. Sounds that can be ignored during periods of heavy system activity (e.g. large battles) or are otherwise not time-sensitive should be given low priorities.

  • Rumble Send: How much of the sound's level (amplitude) determines rumble motor usage in applicable hand held controllers for both the Small and Big controller motors.

Sound Output Models

All sound descriptors use output models. You can set up a sound to act as a mono point-source sound using HRTF (head-related transfer function) for proper placement relative to the camera/listener, or as a stereo sound with radius or no radius (i.e. no apparent position), or even with specific speaker assignments and levels in mono, stereo, or surround formats.

There will be enough of these created that you will not need to create additional ones when implementing sound effects.

Sound Output Model Settings

  • ID: Unique name.

  • Uses HRTF: Select this if the sound is mono and should be played back as a point-source sound in the world relative to the listener.

  • Defined Speaker Output: Select this if the sound will not be placed in the world but rather have a specifically defined playback through various channel setups.

  • Source Input Channels: Selects between speaker assignment options (defined below for each channel) based on whether the source sound file is mono (1 input channel) or stereo (2 input channels).

  • Input Channel: Selects between available input channels from the source audio file. If 1 input channel (channel 0) is available (mono), specific channel outputs are defined below. If 2 input channels (channels 0 and 1, or left and right) are available, those specific channel outputs are again defined below exclusively for each input channel. % of output is defined from 0 to 100 percent.

    • L - Left, C - Center, R - Right

    • RL - Surround Left, RR - Surround Right, BL - Rear Surround Left, BR - Rear Surround Right

    • LFE - Low Frequency Effects

  • Attenuates With Distance: Select this if the sound should have an inner and outer radius setting, using a volume falloff curve between those two values.

  • Min Distance: Inner radius of the sound in game units. At and within this radius, the sound will play back at its max volume (its static attenuation as set in the Sound Descriptor). Between the inner radius and outer radius volume falls off according to a five-point curve as defined below.

  • Max Distance: Outer radius of the sound. At the outer radius, the sound's volume is fully attenuated.

  • Curve: The custom volume falloff curve between the sound's inner and outer radius (min and max distance). The top-most slider is the data point at the inner radius, whereas the bottom-most slider is the data point at the outer radius. Typically values might follow a slightly logarithmic falloff curve (from top to bottom: 100, 60, 30, 15, 0) or linear falloff curve (100, 75, 50, 25, 0).

  • Reverb Send %: Percentage of the sound sent to the Reverb Parameter as defined in the currently occupied Acoustic Space. This is equivalent to an 'aux send' on a mixing console. Any sound assigned to use this Output Model will be sending this percentage of its output to the current reverb type.

  • Allows Rumble: Select this if the sound should use the Rumble settings as defined in the Sound Descriptor.

Reverb Parameters

These settings define the reverb parameters that will be applied to any and all sounds played in an acoustic space that uses these reverb parameters.

You can test the reverb parameters using any sound descriptor. Just click the ‘test’ button and select the sound descriptor you want to test, and click play.

Reverb Parameter Settings

  • ID: Unique name.

  • Presets: Drop-down list of available presets. These are very useful as a starting point from which to build your own custom Reverb Types.

  • Reverb Amp: Output level of the wet signal.

  • Decay Time (ms): RT60 of the wet signal in milliseconds (800ms == 0.8s).

  • Reverb Delay (ms): Pre-delay of reverb signal in milliseconds.

  • Room Filter: High shelf attenuation at defined center frequency in next parameter ...

  • HF Reference (Hz): Center frequency reference (in Hz) for above high shelf Room Filter parameter.

  • Decay HF: Ratio defines falloff curve for decay of high frequencies defined by HF Reference center frequency.

  • Reflections: Gain or attenuation of early reflections.

  • Reflect Delay (ms): Pre-delay of early reflections.

  • Diffusion %: Adjusts buildup or falloff of early reflections over time.

  • Density %: Adjusts time spacing between early reflections and subsequent reflections.

  • Test: Select a Sound and then use Play/Stop to hear it auditioned with the current Reverb Type parameters.

Acoustic Spaces

Acoustic spaces link the reverb parameters and sound descriptor sets, which are defined in the regions tab, together, to be used in an interior cell (or exterior if you want to override the default reverb settings, but not the sound descriptors that play in that area).

You can add a looping sound that will play whenever you are in that acoustic space.

You can also create an acoustic space cube in any interior to override the acoustic space that is applied via the cell menu. You can do the same for exterior areas, but it will not override the sound sets used in that area, only the reverb parameters.

Exterior Worldspace SFX 101

For exterior areas the workflow is fairly simple:

  1. Create the sound descriptors and apply the correct output models and categories to them.

  2. Go to the region editor window and select the correct region

  3. Click on the sound tab and check the box that says ‘Enable this type of data’

  4. Drag in the sound descriptors into the box and fiddle around with the percentages until you are satisfied.

To open up the region editor, click on World > Regions on the toolbar of the CK. We want to be editing the Skywind worldspace which is called “WrldMorrowind”. Click on the little downwards arrow and select “WrldMorrowind” from the dropdown list.

Once we have the correct worldspace selected, select the correct region from the list. In this instance I am doing Bitter Coast sounds, so I selected the “0BitterCoastRegion”. Once you have your region selected, click on the sound tab, and check the box ‘Enable this type of data’ if you havent already.

Now its a simple case of dragging the sound descriptors into the white box. Once you’ve done that, you can double click on any sound there and tweak the percentages of the sound effect playing randomly while you are in the region.