ORIGINAL MUSIC
FOR GAMES
MUSIC DESIGN, SHORT MELODIES, AND ADAPTIVE MUSIC.
SOUND DESIGN
FOR GAMES
Gameplay, cinematics
and trailers.
TECHNICAL AUDIO
IMPLEMENTATION
AUDIO PROGRAMMING · UNITY · UNREAL · FMOD · WWISE
VOICE OVER
PRODUCTION
Casting, direction,
recording and localization.
SIZZLE REEL
WATCH NOW
WHO WE ARE

YOUR Game AUDIO STUDIO

BUILT FOR GAME DEV

We’re Flutu. A game audio studio focused on what matters most: the player experience and the trust it takes to build great things together.

We make games and animation sound awesome while giving your team more time and peace of mind through clear communication and hands-on collaboration.

Sound Call Models

15 game audio implementation patterns with explicit triggers, ownership and stop behavior.

DOCTOR AUDIO · TECHNICAL AUDIO · 15 MODELS · WHITEPAPER · VICTOR HIME · 28 OCT 2026

Audio implementation becomes difficult when similar sounds are triggered through unrelated code paths. A world loop, an animation cue and a UI click need different behavior, but every call still needs a clear event source, playback owner and exit path.

At Flutu, we organize those decisions into 15 Sound Call Models across five groups. Each model defines its trigger, event recipe, lifecycle and integration boundary. This gives sound designers and programmers a shared contract to inspect before another call path is added to the game.

The catalog sits above the game's existing audio API and registry. It standardizes decisions without taking ownership away from gameplay, animation, VFX or dedicated ambience systems.

TL;DR

When playback patterns drift

A loop can start from an emitter, gameplay code or a proximity trigger. All three paths may work, yet each can assign the event somewhere else and clean up playback differently.

How fragmented sound-call patterns become one explicit contractSeparate sound-call paths create inconsistent ownership; a shared model specifies trigger, event source, and release responsibilities.FRAGMENTED CALL PATHSUNKNOWN OWNERSHIPSHARED MODEL CONTRACTComponent / registry / codeDifferent start behaviorsDifferent stop pathsWho started it?Who owns stopping?Where is the event?Named call modelEvent recipe + ownerDefined release contractThe visual compares debugging responsibilities across playback paths.
The failure mode is inconsistent ownership. The catalog creates one place to inspect the intended behavior.

For a new implementer, the central question becomes “Which model applies?” instead of “Which old script should I copy?”

The model contract

A sound-call model is a named implementation pattern that defines who triggers playback, where the event is assigned, which event configuration is valid and how the instance ends. The game's registry, playback API and gameplay logic remain in place; the model provides a consistent contract above them.

We select the model by trigger ownership and lifetime before choosing a component. Two identical looping sounds can require different patterns if one follows an effect's lifetime and the other is stopped by gameplay logic. The distinction matters during interruption, scene unloading and debugging.

Sound call model naming grammarA typical model name combines audio family, 2D or 3D space, trigger and one-shot or loop length. Code and ambience models have explicitly documented exceptions.FAMILYSx / Mx / Amb / VoWhat kind of soundSPACE2D or 3DWhere it playsTRIGGERArea / AnimationWhat initiates itLENGTHOneShot / LoopWhen playback endsSx3DAnimationLoop = SFX · world-space · animation cue · loopExceptions: SxCodeOneShot / SxCodeLoop omit spatial mode; Amb2DSceneBed names a dedicated ambience state.
Names are a guide; the actual catalog is authoritative. Arbitrary combinations of name fragments are not automatically implemented models.
Event selection and validation contractThe selected model, event recipe checks and integration boundary jointly determine whether the creator can instantiate a supported model or should hand off a host-code change.MODELTrigger, owner, lifecycle+ event sourceRECIPESpace, bus, lengthdistance, parametersIMPLEMENTATIONApproved creationor reviewed code handoffCatalog definitions sit above the host game's registry, playback API and dedicated audio systems.
A valid prefix is not sufficient. The event must also meet spatial, duration, routing, distance and parameter requirements where applicable.

Event recipe checks

Check the event family prefix (sx_, mx_, amb_, vo_), spatial mode, one-shot or looping behavior, permitted output bus, 3D distance and model-specific parameters. Rules apply only to models that need them: a UI one-shot should not inherit the distance requirements of a world-space loop.

Prefix checks catch naming mistakes; routing checks protect expected mix controls, and duration and release checks prevent a short cue from behaving like a persistent voice. Recipe validation happens before creation. Lifecycle validation still belongs in a running game.

Where the grammar has exceptions

SxCodeOneShot and SxCodeLoop do not declare 2D or 3D in their names, so the caller must specify spatial behavior. Amb2DSceneBed is an entry point into a dedicated ambience system, not a general-purpose loop implementation.

The 15-model catalog

Each entry answers three practical questions: what behavior it covers, where its event is assigned, and who owns the change. The five groups define model names, uses, event sources and integration ownership.

6Scene
2Animation
2VFX
2Code
3UI and voice

Scene

6 models · original model table
ModelUse it forEvent comes fromCare
Sx3DLoopA loop on a world object, such as a machine, water feature or insects.Project sound registryYellow
Sx2DStingerOneShotA stinger on entry, optionally using a playlist that advances with progress.ComponentGreen
Sx3DPassThroughOneShotPlayback as the player moves through foliage or a soft object; trigger size derived from object meshes.ComponentGreen
Mx2DAreaLoopA music zone.Project sound registryYellow
Mx2DGateLoopMusic started by crossing a passage one way and stopped by crossing back.ComponentGreen
Amb2DSceneBedThe ambience bed for a scene or region.State of the shared ambience eventClient code

Animation

2 models · original model table
ModelUse it forEvent comes fromCare
Sx3DAnimationOneShotA sound on an animation frame, such as a step, wing movement or door opening.Cue asset placed in the animationGreen
Sx3DAnimationLoopA loop started and stopped by animation events, with a release tail.ComponentGreen

VFX

2 models · original model table
ModelUse it forEvent comes fromCare
Sx3DVfxOneShotThe moment an effect spawns particles, such as a burst or pulse.ComponentYellow
Sx3DVfxLoopPlayback for the duration of an effect, such as a glow or aura.ComponentGreen

Code

2 models · original model table
ModelUse it forEvent comes fromCare
SxCodeOneShotA gameplay action, such as a pickup, impact or puzzle step.Project sound registryClient code
SxCodeLoopA loop owned by gameplay logic.Project sound registryClient code

UI and voice

3 models · original model table
ModelUse it forEvent comes fromCare
Sx2DUIOneShotHover, press or click on a UI element. Plain buttons in the described setup already have default playback.ComponentGreen
Vo2DOneShotNon-spatial voice, such as narration. One event per line.ComponentClient code
Vo3DOneShotA character's voice in the world. One event per line.ComponentClient code

Tables retain their own horizontal scroll on smaller screens.

Spline-shaped sources and the full ambience system use dedicated tooling; this catalog defines only their relevant interface.

Playback lifecycle and choosing a model

For a loop, the critical design decision is what stops it when its owner disappears. Animation, VFX, trigger volumes and gameplay logic have different lifetimes. Each pattern needs a normal stop path, interruption cleanup and a release strategy that follows its real owner.

We inspect repeated starts, overlapping triggers, cancellation, object disable and scene transitions separately. A loop that plays correctly once can still leak an instance or restart repeatedly at a boundary.

Sound-call lifecycle contracts for one-shots and loopsOne-shots release after completion. Loops require explicit stop ownership and interruption paths, including disable or scene changes where applicable.ONE-SHOTStart → finish → releaseLOOPStart → stop request → releaseSOURCE OWNERSHIPCaller or component startsINTERRUPTION PATHDisable, cancel, scene changeVALIDATIONNormal completionRepeated triggersInterruption cleanupRelease / voice stateFor Sx3DLoop, define object-disable, destruction and instance-release paths in the host project.
Area/gate models follow entry and exit; animation loops use paired cues and release tails; VFX loops follow effect lifetime; code loops require gameplay stop and disable cleanup.

Choosing by trigger and duration

Placed world loops: Sx3DLoop. Area/gate music: Mx2DAreaLoop or Mx2DGateLoop. Animation: Sx3DAnimationOneShot or Sx3DAnimationLoop. VFX: Sx3DVfxOneShot or Sx3DVfxLoop. Code: choose the corresponding one-shot or loop, then specify spatial behavior. UI, voice and scene ambience use their catalog-defined patterns.

Where stops actually come from

Area loops stop on exit; gate loops stop on the reverse crossing; animation loops receive paired start/stop cues with a release parameter; VFX loops stop on completion/cancel/disable; code loops require explicit gameplay stop and disable cleanup. The ambience bed delegates transitions to its dedicated system.

Choose stop delays and restart cooldowns against actual movement and trigger behavior. Validate repeated crossings, cancellation, disable and scene transitions in the target build, including the final voice and instance state.

Integration boundaries and tooling

Integration boundaries are explicit because an external audio team works inside a host studio's codebase. Green models stay within supported audio-owned objects and components. Yellow models require a small host-file change reviewed before application. Client code models require a gameplay-programmer handoff.

This classification controls who makes a change, who reviews it and where a bug is traced later. Even audio-owned changes need checks for duplicate calls, event compatibility and cleanup; a reviewed code handoff needs the same playback contract as a created component.

Integration care levels across 15 sound call modelsSeven Green models use audio-owned scene or component changes; three Yellow models require small reviewed host-file edits; five Client code models require gameplay-programmer ownership.07GREENAudio-owned objectsSupported component creation03YELLOWSmall host-file changeReviewed before application05CLIENT CODEGameplay ownershipInstructions / handoffCounts describe integration categories across 15 catalog entries, not automated creation availability.
The counts describe change ownership.
Shared catalog with validation, creation and documentation consumersOne versioned catalog defines event rules, creation constraints and handoff instructions for its different consumers.SINGLE MODEL CATALOGNames, recipes, careand lifecycle rulesVALIDATOREvent compatibilityand target checksCREATOR / GUIDESupported creationor reviewed instructionsVersion the catalog and check validator, creator and guide behavior against each change.
Before a tool creates a model, the recipe and integration boundary must agree with the host project's configuration.

What tooling can do

Use the catalog to suggest models based on an event and target object, check recipes, then create supported components or prepare exact host-file changes for review. Client-owned gameplay changes generate instructions rather than direct edits to gameplay code.

Keep one source of truth

Maintain the model definitions in one versioned catalog for validators, creation tools and written documentation. Review the catalog whenever a project adds an uncovered playback behavior instead of inventing a local call path.

Validate the contract in the running game

A consistent model name is useful only when its event configuration and runtime behavior agree. We evaluate each pattern at four boundaries: event compatibility, playback lifecycle, ownership of integration changes and the result the player actually hears.

Event compatibility

Check the selected event against its recipe before creating components: family prefix, spatial mode, duration, output bus, distance and required parameters. A successful name match is never the entire contract.

Playback lifecycle

Trigger the sound normally, repeat the trigger and interrupt its owner. Inspect start/stop pairing, release tails, boundary oscillation and surviving voices after effect cancellation, object disable or a scene change.

Integration ownership

Review Green component creation, Yellow host-file edits and Client code handoffs against the owning team's responsibilities. Trace duplicate playback to its event source and verify that the expected system performs cleanup.

Runtime and player review

Use profiler sessions to inspect active instances and lingering voices while listening for incorrect attenuation, abrupt release, unexpected routing and inconsistent playback through real transitions.

Acceptance principle: the implementer should be able to identify an event's source, expected behavior, owner and exit path without reverse-engineering several unrelated call sites.

For a closer look at inspecting live playback and identifiable sources in Unity and FMOD, read Scene Audio Debugger.

Maintaining and extending the catalog

A shared catalog works when its definitions have an owner and its scope stays controlled. We keep specialized systems separate, review uncovered behaviors before adding a model and avoid migrating stable legacy code without a production reason.

Standardize new work first

Apply the models to new audio calls. Migrate existing scripts when a bug, feature change or maintenance task provides a concrete reason, rather than creating risky churn.

Keep dedicated systems dedicated

Spline-based rivers and coastlines need specialized placement tooling. The full ambience system has its own lifecycle; Amb2DSceneBed is its catalog interface.

Give the catalog an owner

New combinations need review, recipes need maintenance, and creators must be kept compatible with changes in the studio's registry and audio API.

Building a catalog for your project

Begin with the paths already shipping. The goal is a system that explains who starts and stops a sound, not a naming convention that looks organized in a spreadsheet.

  1. Inventory. Find event assignments, call sites, ownership and stop behavior in existing components, code, animation and VFX.
  2. Define. Group supported patterns by family, space, trigger and duration; document exceptions explicitly.
  3. Validate. Add recipe rules for event naming, spatialization, duration, routing, distance and parameters.
  4. Assign ownership. Separate safe audio-owned creation, reviewed host edits and gameplay-code handoffs.
  5. Test before extending. Exercise playback completion, repeated triggers, disable, interruption and scene transitions. Retain the captures needed for later evidence.

Make the new-work path consistent first. Expand the catalog when a real use case cannot be expressed by an existing contract.

Questions We Can Answer

Why does Flutu publish technical whitepapers?

To make our technical decisions inspectable. Doctor Audio explains the contracts, trade-offs and validation workflows we use to reason about game audio systems, while keeping client code and project assets confidential.

What is a Sound Call Model?

A named pattern that defines a sound's trigger, event source, recipe, spatial behavior where relevant and stop or release responsibility.

Who stops a loop?

It depends on the model. Animation, VFX, area/gate and code loops have distinct owners and interruption paths. Stop and release must be validated in the host project.

What do Green, Yellow and Client code mean?

Green is audio-owned component creation, Yellow requires a reviewed host-file change, and Client code delegates gameplay changes to the studio's programmers.

What does the validator check?

Applicable rules for event prefix, 2D/3D behavior, duration, routing, distance and required parameters. Passing these checks does not replace gameplay testing.

This website uses cookies.

By browsing our website, you agree to our use of cookies to analyze traffic and enhance your browsing experience. Your data will be aggregated with that of other users to ensure optimal functionality.