> For the complete documentation index, see [llms.txt](https://bahnproductions.gitbook.io/bahnproductions-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bahnproductions.gitbook.io/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/overview-getting-started.md).

# Overview / Getting Started

### **Foley Audio System Overview**

At runtime, the system uses socket-based ray casting from character bones to detect surface types through Physical Material to GameplayTag mapping ([PhysicalMaterialWithTags](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/core-shared-audio-system/content-setup/physical-materials-with-tags.md)). `Foley.Surface` tags  are resolved against a configurable [FoleySurfaceBankMap](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/gameplaytag-maps.md#foley-surface-tag-map) data asset, which routes each surface to its corresponding [Foley Audio Bank](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-audio-banks.md) containing the MetaSounds to play. The system also supports footwear layering using `Foley.Footwear` tags  to blend with surface sounds for more realistic results.

Movement events are categorized through a GameplayTag hierarchy under `Foley.Event`, covering ground movement (`Foley.Event.Walk`, `Foley.Event.Run`), secondary contact (`Foley.Event.Scuff`, `Foley.Event.ScuffPivot`), aerial events (`Foley.Event.Jump`, `Foley.Event.Land`), and upper body contact (`Foley.Event.Handplant`) each with left, right, or both side awareness. The [FoleyAudioComponent](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-audio-component.md) attaches to any character and exposes configurable socket names, trace offsets, and movement state tracking, making it adaptable to any skeleton without code changes.

This system is designed as a drop-in solution: assign the FoleyAudioComponent blueprint class, configure your surface map in plugin settings, and foley audio works automatically across your entire animation library when implementing the [FoleyAnimNotify](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-anim-notify.md).

### **Signal Flow**

<figure><img src="/files/jZBGjav01jJmmjSed7LG" alt=""><figcaption></figcaption></figure>

The diagram above illustrates how the Advanced Audio System resolves which sound to play when a character's foot contacts the ground. The routing follows a left-to-right signal flow through four stages: AnimNotify → Footwear Map → Surface Map → Audio Bank.

When an animation triggers a [FoleyAnimNotify](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-anim-notify.md), it carries a `Foley.Event` tag, such as `Foley.Event.Run,` and a foot side enum (Left/Right). At runtime, the system queries the character's [FoleyAudioComponent](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-audio-component.md) for its current `Foley.Footwear` tag such as `Foley.Footwear.Sneaker`. The [FootwearBankMap](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/gameplaytag-maps.md#foley-footwear-bank-map) then routes to the appropriate [SurfaceBankMap](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/gameplaytag-maps.md#foley-surface-bank-map) for that footwear type. In this example, Sneakers and Boots each have their own surface bank mapping, allowing completely different sound sets per footwear.

From there, a raycast from the character's configured sockets detects the [PhysicalMaterialWithTags](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/core-shared-audio-system/content-setup/physical-materials-with-tags.md) beneath them, which is assigned to a `Foley.Surface` tag such as `Foley.Surface.Concrete` or `Foley.Surface.Grass`. The SurfaceBankMap uses this to select the correct [FoleyAudioBank](/bahnproductions-docs/bahn-productions-ue-plugins/advanced-audio-system/foley-audio-system/content-setup/foley-audio-banks.md), which contains an array of `Foley.Event` tags to MetaSoundSources. The matching MetaSound is then played with built-in pitch and volume randomization.

**For those familiar with Wwise:** this pipeline achieves similar functionality to a nested Switch Container hierarchy. In Wwise, you would typically create a Switch Container switched on surface material, with each Switch containing a Random Container of sound variants. To add footwear variation, you'd nest an additional Switch Container layer on top, resulting in a multi-level container hierarchy. The AAS plugin achieves this same routing through cascading Data Asset lookups  (Footwear Map → Surface Map → Audio Bank) with the randomization handled natively inside MetaSounds rather than through a separate Random Container. This keeps the routing logic in modular, hot-swappable Data Assets rather than locked inside a middleware authoring tool, and allows audio designers to control playback behavior directly in MetaSounds.
