This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Mixing & Effects

Named volume channels built on custom miniaudio nodes, environmental influence with priority stacking, and the component-authored mix effect layer.

Base — ships in GS_Audio.

Mixing has two parts, and it is worth separating them from the start.

Volume channels are the grouping layer — voice, environment, combat SFX — each with its own level, feeding Master. This is the layer your options menu drives.

Mix effects are the processing layer — filters, EQ, delay, reverb, character effects — authored as named chains on components and routed by name. This is the free tier’s authoring surface for the DSP palette, and it is not a reduced one: it exposes the same 22 processors that Audio Pro exposes as graph nodes.

For usage guides and setup examples, see The Basics: GS_Audio.

 

Contents


Volume Channels

GS_MixingBus

A custom miniaudio node that mixes its inputs, applies a level, and optionally runs an effects chain.

FieldValue
TypeId{26E5BA8D-33E0-42E4-BBC0-6A3B2C46F52E}

The Audio Manager owns a named set of these. GetMixingChannelNames enumerates them and ChangeChannelVolume sets a level.

This is the Volume Channel stage of the canonical signal chain: grouped sound types feeding Master. It is orthogonal to spatialization — a voice line, a footstep and a spell all get positional audio, and all three route to different channels.

Channels are the natural attachment point for the options system’s audio sliders, which is exactly what the shipped audio apply targets do.


Environmental Influence

An entity in the world can temporarily impose an effect set on channels — walk into a cave and everything gains reverb; walk out and it lifts.

MethodParametersDescription
ApplyAudioEffectInfluenceinfluencer, effectsPush an effect set onto channels on behalf of an influencing entity.
RemoveAudioEffectInfluenceinfluencerRemove that entity’s contribution.

Influences stack by priority and are keyed by the entity that applied them, so removal is unambiguous even when several influences overlap. Two overlapping zones resolve by priority rather than by whichever fired last.


Mix Effects

The processing layer. A MixEffectComponent holds an ordered chain of effects, registers it under a name, and feeds its output somewhere — another chain, or a volume channel. Sources route in by naming that chain as their mixing channel.

Twenty-two effect types are available, in four families: biquad filters, time and space, character and modulation, and utility.

Mix Effects API


API Reference

Request Bus: GS_MixingRequestBus

Channel control. Singleton bus — single address, single handler.

MethodParametersReturnsDescription
SetBusVolumeconst AZStd::string& busName, float volumevoidSets the level of a named channel (0.0 to 1.0).
GetBusVolumeconst AZStd::string& busNamefloatReturns the current level of a named channel.
MuteBusconst AZStd::string& busName, bool mutevoidMutes or unmutes a named channel.
IsBusMutedconst AZStd::string& busNameboolReturns whether a named channel is muted.
ApplyBusEffectsconst AZStd::string& busName, const AudioBusEffects& effectsvoidApplies an effects chain to a channel, replacing any existing chain.
ClearBusEffectsconst AZStd::string& busNamevoidRemoves all effects from a channel.
PushInfluenceEffectsconst AZStd::string& busName, const AudioBusInfluenceEffects& effectsvoidPushes environmental influence effects onto a channel with priority stacking.
PopInfluenceEffectsconst AZStd::string& busName, int priorityvoidRemoves influence effects at the given priority level.

Master and per-channel volume are also reachable from AudioManagerRequestBus via ChangeMasterVolume and ChangeChannelVolume.


Data Structures

TypePurpose
BusEffectsPair {#bus-effects-pair}Maps a channel name to an effects chain. This is how channels are authored on the Audio Manager.
AudioBusEffects {#audio-bus-effects}An effects chain applied to a channel.
AudioBusInfluenceEffects {#audio-bus-influence-effects}An effect set contributed by a world influencer, carrying its priority.

See Also

For related systems:

For conceptual overviews and usage guides:


Get GS_Audio

GS_Audio — Explore this gem on the product page and add it to your project.

1 - Mix Effects

The MixEffectComponent and all 22 mix effect types — named effect chains, order-independent wiring, local and global routing, and the runtime control surface.

Base — ships in GS_Audio.

Mix effects are the DSP processing layer of the free tier. You build a chain of effects on a component, give it a name, and point sources at that name.

Twenty-two effects are available. They are the same processors Audio Pro exposes as graph nodes — one processor, two authoring surfaces. Choosing the free tier does not reduce what you can do to a signal; it changes how you author it.

For usage guides and setup examples, see The Basics: GS_Audio.

 

Contents


MixEffectComponent

Drop it on an entity and it holds an ordered chain of effects — a polymorphic list where each entry’s concrete type is chosen from a dropdown.

FieldValue
TypeId{9F2A6C13-4D85-4E70-B1C6-3A8E5D7F2049}
Authored fieldMeaning
NameThe routing name registered for the head of the chain. Sources and other chains target this.
EffectsThe ordered chain. Index 0 receives the input; each effect feeds the next.
Output TargetWhere the tail of the chain feeds — another chain’s Name, or a volume channel.

The chain runs top to bottom. Index 0 is what gets registered under Name; the last entry feeds Output Target.

Setup is idempotent, and teardown unwires and destroys the nodes while keeping the authored list — so the component re-activates cleanly.


How Chains Route

Sources route in by name. An audio event’s Mixing Channel field can name either a volume channel or a mix effect chain. They share one namespace, so a source does not need to know which kind of thing it is pointing at.

Any number of chains can live on one entity, each with its own Name. Point one chain’s Output Target at another chain’s Name to compose them.

Wiring is order-independent. If a chain’s target does not exist yet, the connection is deferred and resolves when the target registers. You do not have to think about component activation order, and a missing target is not an error — it is a connection waiting to be made.

Routing catches up with sounds that already exist. When a chain registers after events have preloaded, already-pooled voices are re-pointed at the new target. Adding a MixEffectComponent at runtime works, and the sounds that were already playing through that channel follow it.

Local and global routing

Both patterns are supported and they coexist:

  • Global named channels — everything funnels through shared, named mix targets. Best for project-wide treatments.
  • Local chains on the emitting entity — the component lives on the emitter, scoping its effects to that one emission. Best for per-character or per-object colour.

The 22 Effects

Biquad filters

EffectDescription
Low PassAttenuates frequencies above the cutoff. Muffling, distance, underwater.
High PassAttenuates frequencies below the cutoff. Thinning, radio and telephone effects.
Band PassPasses only a band, attenuating everything outside it.
NotchAttenuates a narrow band while passing everything else. The inverse of band pass.
Peaking EQBoosts or cuts around a centre frequency with configurable bandwidth.
Low ShelfBoosts or cuts everything below a threshold by a fixed amount. Bass adjustment.
High ShelfBoosts or cuts everything above a threshold by a fixed amount. Treble adjustment.

Time and space

EffectDescription
EchoFeedback delay — repeats that decay over time.
ReverbSimulated room ambience.
BinauralFixed-direction HRTF placement. See the caution below.

Character and modulation

EffectDescription
Wave ShaperNon-linear distortion and saturation.
LofiBit depth and sample rate reduction.
RobotizeVocoder-style robotic character.
FlangerSweeping comb filtering from a modulated short delay.
ChorusThickening from multiple detuned delayed copies.
Ring ModRing modulation — metallic, inharmonic tones.
TremoloRhythmic amplitude modulation.
PitchPitch shifting that preserves tempo.

Utility

EffectDescription
PannerStereo placement.
CompressorDynamic range compression.
DC RemovalRemoves DC offset from a signal.
AmplifyStraight gain.

Runtime Control

Chains are drivable at runtime through AudioManagerRequestBus, so ScriptCanvas can change a treatment while it is playing.

MethodEffect
RerouteMixEffectRe-point a chain’s tail at a new output target.
SetMixEffectParamSet a parameter on the chain head.
SetMixEffectParamOnSet a parameter on a named effect inside the chain.
ResolveMixTargetResolve a name to its node.
RegisterMixEffect / UnregisterMixEffectManual node registration. Advanced.
WireMixSource / UnwireMixSourceManual wiring. Advanced.
RegisterMixEffectControl / UnregisterMixEffectControlControl-surface registry.

Environmental treatment is per-emission and rapidly modifiable by design. A character moving through a space changes its effects continuously, and that change isolates to the environmental portion of the signal regardless of which volume channel the sound belongs to.


Two Cautions


See Also

For related systems:

For conceptual overviews and usage guides:


Get GS_Audio

GS_Audio — Explore this gem on the product page and add it to your project.