agentsclimarketplace

Game audio guide

Skill kunitoki/sonic-skills/skills/game-audio-guide

Modular Markdown-based audio skills for AI agents and developers, covering signal processing, synthesis, effects, analysis, and spatial audio.

Install
npx -y skills add kunitoki/sonic-skills --skill game-audio-guide

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Guides implementation of custom Wwise or FMOD DSP plugins from scratch — effect, source, and mixer plugin types. Use when the user wants to create a new Wwise plugin, build an FMOD DSP effect, or implement a custom game audio middleware plugin. Trigger on phrases like "create a Wwise effect plugin", "build an FMOD DSP", "implement custom game audio middleware plugin", "how do I write a Wwise source plugin", or "set up an FMOD DSP description".

SKILL.md

4.4 KB, as published. Nobody here has run it

Game Audio Plugin Implementation Guide

Steps apply to both Wwise and FMOD unless noted.

Step 1 — Choose middleware and plugin type

MiddlewareEffect pluginSource pluginMixer plugin
WwiseIAkInPlaceEffectPlugin or IAkOutOfPlaceEffectPluginIAkSourcePluginIAkMixerEffectPlugin
FMODFMOD_DSP_DESCRIPTION (process callback)FMOD_DSP_DESCRIPTION (generatetone or read)FMOD_DSP_DESCRIPTION on a bus
  • Effect plugins modify an existing signal in place or out of place.
  • Source plugins generate audio from scratch (synthesisers, procedural audio).
  • Mixer plugins operate on a mix bus and see the summed signal from all inputs.
  • Confirm the plugin type before writing any code — changing it later requires reworking the descriptor and callback signatures.

Step 2 — Set up the plugin descriptor

Wwise:

  • Declare an AkPluginInfo struct with your company ID, plugin ID, and plugin type.
  • Implement GetPluginInfo() to return it from your plugin class.
  • Provide a CreateXxx factory function and register it with AK::SoundEngine::RegisterPlugin.
  • Implement a matching AkPluginParamBase subclass for parameter storage.

FMOD:

  • Declare an FMOD_DSP_DESCRIPTION struct with name, version, channel counts, and all callback pointers.
  • Fill FMOD_DSP_PARAMETER_DESC entries for every parameter the DSP exposes.
  • Export a FMODGetDSPDescription() function (or pass the struct directly to FMOD::System::createDSP).
  • Keep the description in static storage — FMOD holds a pointer to it for the lifetime of the DSP.

Step 3 — Implement the audio callback

Wwise (Execute):

  • Read channel count and frame count from AkAudioBuffer at runtime — never hardcode.
  • Use io_pBuffer->GetChannel(ch) to access per-channel float pointers.
  • Allocate during Init with the AK::IAkPluginMemAlloc* allocator; never allocate inside Execute.
  • Return early if uValidFrames == 0 to avoid processing silent tail unnecessarily.

FMOD (read or process):

  • Use inchannels and outchannels from the callback signature — do not assume stereo.
  • Allocate during create/reset with dsp_state->functions->alloc / free; never allocate inside read / process.
  • Never block, lock, or perform I/O; FMOD calls this from a mixer thread with a hard deadline.
  • Return FMOD_OK after producing valid output; return FMOD_ERR_DSP_SILENCE only when the DSP intentionally produces silence.

Step 4 — Handle parameters

Wwise RTPC binding:

  • Declare parameter IDs as an enum in your plugin header.
  • Implement SetParam on your AkPluginParamBase subclass to copy incoming values into your struct.
  • Wwise copies the parameter struct before calling Execute — read from the struct, not from SetParam directly.
  • Clamp every RTPC value to its valid range before feeding it to DSP computation.

FMOD parameter system:

  • Define one FMOD_DSP_PARAMETER_DESC per parameter in your FMOD_DSP_DESCRIPTION.
  • Implement setparameterfloat / getparameterfloat callbacks to read/write from your plugin state.
  • Use a fixed enum for parameter indices and keep it in the same order as paramdesc; do not rely on magic numbers.
  • Use FMOD_DSP_PARAMETER_DESC with FMOD_DSP_PARAMETER_TYPE_FLOAT and the appropriate float mapping (LINEAR, AUTO, or piecewise linear) so Studio renders controls correctly.

Step 5 — Register, test, and package

  • Wwise: call AK::SoundEngine::RegisterPlugin during engine init before loading banks; ship a .dll/.so plus a .xml authoring descriptor.
  • FMOD: pass the FMOD_DSP_DESCRIPTION to createDSP or load via loadPlugin; ship as .plugin.dll/.so.
  • Unit-test with known input buffers outside the engine; cover channel counts 1, 2, and 6.
  • Test bypass, all-zeros input, and extreme parameter values.
  • Guard debug logging behind #ifndef AK_OPTIMIZED (Wwise) or equivalent release flag (FMOD).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.