本文へ移動
cccskills
無料GitHub で公開

game-audio-guide

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".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

au-review

無料

Reviews AudioUnit v2/v3 plugin implementations for spec compliance, thread safety, and correctness. Use when the user asks to review an AudioUnit plugin, check an AUv3 app extension, audit property or parameter handling, or asks "is my AUComponent thread-safe?" or "why does my AU crash in Logic?". Trigger on phrases like "review my AudioUnit", "check my AUv3", "is my render block safe?", or when you see AURenderCallback, internalRenderBlock, kAudioUnitProperty_*, or AUAudioUnit in the code.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops, crackling, silence, DC offset, aliasing, phase issues, or latency problems. Trigger on phrases like "why do I hear clicks?", "my output has DC offset", "there's aliasing in my oscillator", "phase is wrong in mono", "dropout when CPU spikes". Pairs with audio-dsp-review (realtime safety) and audio-numerics-review (numeric correctness) — use those to fix once the cause is found.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP and audio processing code for realtime safety violations. Use whenever the user asks to review, audit, or check audio processing code — including plugin process callbacks, audio engine render functions, DSP implementations, or any code that runs on the audio thread. Trigger on phrases like "review my processBlock", "check this DSP code", "is this safe for the audio thread?", "review my JUCE plugin", or when you see an audio callback and spot potential realtime violations. Flag issues proactively even when the user hasn't explicitly asked for a review.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Explains DSP math concepts to developers who need the theory behind an algorithm. Use whenever the user asks how a signal-processing concept works, wants intuition behind a formula, or hits a math-shaped bug. Trigger on phrases like "how does a Fourier transform work", "explain z-transforms", "what is convolution", "why does my biquad ring", "what is windowing for", "what causes aliasing", or "how do I convert gain to dB". Also trigger when the user pastes DSP code and asks why it behaves a certain way.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness issues — filters, feedback loops, fixed-point arithmetic, accumulation loops, or any numeric computation in audio code. Trigger on "check this filter for NaN", "why does my reverb blow up?", "is this numerically stable?", "why do I hear DC in my output?". Pairs with audio-dsp-review (realtime safety); this skill covers numeric correctness. Flag issues proactively.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

Profiling strategy for audio CPU issues — xruns, spikes, and buffer underruns. Use when the user reports CPU overload, audio glitches under load, or performance regressions. Trigger on phrases like "I'm getting xruns", "my plugin causes CPU spikes", "dropouts under high voice count", "audio thread is too slow", "how do I profile my DSP". References audio-numerics-review for denormal slowdown and audio-dsp-review for lock contention.

日本語の概要は準備中です。原文の説明を表示しています。

kunitoki/sonic-skills222026年5月21日 更新

kunitoki のスキルをすべて見る

このスキルの問題を報告する