Sounds

Pulse plugins point to their sounds (UI sounds of a theme, a dialog line, a quest jingle) with one type, FPulseSoundRef (Sound/PulseSound.h, module PulseFoundation). It holds one of two things:

Field What it plays
Sound A sound asset, played by the engine. Works without any other plugin.
Event A sound event (gameplay tag) of Pulse Sound, which picks the sound, the mix and the variation. Without Pulse Sound an event stays silent.

Set one of the two. So a game can start with plain assets and move single sounds to Pulse Sound events later, without changing the plugins.

Playing

FPulseSoundPlayParams params;
params.Placement = EPulseSoundPlacement::AtLocation;
params.Location = Chest->GetActorLocation();
Pulse::Sound::Play(this, OpenSound, params);
Placement Where it plays
Sound2D Not in the world (UI, music)
AtLocation At Location
Attached On AttachTo and moving with it; without a component at Location

VolumeMultiplier and PitchMultiplier scale the sound. Play returns how it played: Asset, Event or Silent (nothing set, no world, a dedicated server, or an event without Pulse Sound). A dedicated server never plays sounds. An event without Pulse Sound is logged once per event.

In Blueprint: Play Pulse Sound Ref (placement, location, component, volume and pitch under the arrow) and Is Pulse Sound Ref Set (category Pulse | Foundation | Sound).

Checking

Assets that hold sound references call Ref.Validate(Context, TEXT("Path.Of.Sound"), bRequired) in IsDataValid: both fields set is an error, none set is an error when the sound is required, and an event while Pulse Sound is not enabled is a warning.

Pulse Sound

Pulse Sound plays the events: it registers an IPulseSoundResolver as modular feature (IPulseSoundResolver::GetModularFeatureName()) when it starts, and Pulse::Sound::Play hands every event to it. Pulse::Sound::GetResolver() returns it, or null.


PulseFoundation plugin documentation.

This site uses Just the Docs, a documentation theme for Jekyll.