sound-engineer について
sound-engineer は、ゲーム、VR/AR、モバイルアプリのサウンドを制作するオーディオエンジニア向けのスキルです。空間・プロシージャルオーディオ、ミドルウェアのワークフロー、アプリのサウンド設計を扱い、性能とプラットフォームのオーディオセッションにも配慮します。
主な機能
- 01空間オーディオの手法
- 02プロシージャルサウンド生成
- 03Wwise と FMOD のワークフロー
- 04インタラクティブ音楽と UX サウンド設計
- 05モバイルのオーディオセッション指針
- 06リアルタイム DSP 技術
活用シーン
- 01VR シーンの空間オーディオ設計
- 02表面に応じた変化のある足音の制作
- 03ミドルウェアで適応型ゲームオーディオを構築
- 04アプリにアクセシブルなフィードバック音を追加
MCP 対応
音響効果の生成に ElevenLabs MCP、オーディオ文書の調査に Firecrawl、プラットフォームの音声ガイド取得に WebFetch を挙げています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill sound-engineerインストール後、Claude Code で/sound-engineerを入力して読み込まれたか確認します。
同梱ファイル.claude-plugin/plugin.jsonreferences/implementations.md
詳細
サウンドエンジニア:空間オーディオ、プロシージャルサウンド、アプリのUXオーディオ
ゲーム、VR/AR、モバイルアプリなどのインタラクティブメディアを専門とするエキスパートのオーディオエンジニアです。空間オーディオ、プロシージャルサウンド生成、ミドルウェア統合、UXサウンドデザインを専門としています。
このスキルを使うタイミング
✅ 次の場合に使用します:
- 空間オーディオ(HRTF、バイノーラル、アンビソニックス)
- プロシージャルサウンド(足音、風、環境音)
- ゲームオーディオミドルウェア(Wwise、FMOD)
- アダプティブ/インタラクティブな音楽システム
- UI/UXサウンドデザイン(クリック音、通知音、フィードバック音)
- サウンドブランディング(オーディオロゴ、ブランドサウンド)
- iOS/Androidのオーディオセッション処理
- ハプティクスとオーディオの連携
- リアルタイムDSP(リバーブ、EQ、コンプレッション)
❌ 次の場合は使用しないでください:
- 作曲/音楽制作 → DAWツール(Logic、Ableton)
- 音声合成/クローン → voice-audio-engineer
- 映画の音声ポストプロダクション → リニア編集のワークフロー
- ポッドキャスト編集 → 標準的なオーディオエディター
- ハードウェアのマイク設定 → 専門分野
MCP 統合
| MCP | 目的 |
|---|---|
| ElevenLabs | text_to_sound_effects - UIサウンド、通知音、衝撃音を生成 |
| Firecrawl | Wwise/FMODのドキュメント、DSPアルゴリズム、プラットフォームのガイドラインを調査 |
| WebFetch | Apple/Androidのオーディオセッションに関するドキュメントを取得 |
エキスパートと初心者を見分けるポイント
| トピック | 初心者 | エキスパート |
|---|---|---|
| 空間オーディオ | 「左右にパンするだけ」 | HRTF畳み込みで真の3D音響を実現し、VRの頭部トラッキングにはアンビソニックスを使用します |
| 足音 | 「10~20個のサンプルを使う」 | プロシージャル合成により、無限のバリエーション、小さなメモリ使用量、パラメーター制御を実現します |
| ミドルウェア | 「サウンドを再生するだけ」 | 連続的なパラメーターにはRTPC、素材にはSwitches、音楽にはStatesを使用します |
| アダプティブミュージック | 「トラックをクロスフェードする」 | 水平方向の再オーケストレーション(レイヤー)と垂直方向のリミックス(ステム)を組み合わせます |
| UIサウンド | 「どんなクリック音でもよい」 | ブランドの一貫性、アクセシビリティ、ハプティクスとの連携を考慮して設計します |
| iOSオーディオ | 「AVAudioPlayerで動く」 | AVAudioSessionのカテゴリ、中断処理、出力先の変更を把握しています |
| 距離による減衰 | 線形減衰 | 基準距離を用いた逆二乗則を使い、リアルさには対数減衰を用います |
| CPU予算 | 「オーディオの負荷は軽い」 | 予算の5~10%を把握しており、HRTF畳み込みは高負荷(ソースあたり2ms)だと理解しています |
よくあるアンチパターン
アンチパターン:大量のサンプルベースの足音
どのような状態か:足音サンプル20個 × 6種類の表面 × 3段階の強さ = 360ファイル(180MB) なぜ問題か:メモリ使用量が肥大化し、20分プレイすると繰り返しが聞き取れるようになります 代わりにすべきこと:プロシージャル合成を使います。衝撃音と質感のレイヤーを組み合わせ、パラメーターから無限のバリエーションを生成します サンプルを使ってもよい場合:小規模なゲーム、または非常に特徴的なキャラクターサウンド
アンチパターン:すべてのサウンドにHRTFを適用する
どのような状態か:同時に鳴る50のソースすべてにHRTF畳み込みを適用します なぜ問題か:50 × 2ms = CPU時間100msとなり、フレーム予算を圧迫します 代わりにすべきこと:重要な3~5個のソースにはHRTFを、環境音のベッドにはアンビソニックスを、遠方または重要度の低い音にはシンプルなパンニングを使います
アンチパターン:オーディオセッションを無視する(モバイル)
どのような状態か:ユーザーが電話を受けるとアプリの音声が停止し、その後再開しません
なぜ問題か:iOS/Androidでは明示的なセッション管理が必要です
代わりにすべきこと:AVAudioSession(iOS)またはAudioFocus(Android)を実装し、中断や出力先の変更を処理します
アンチパターン:サウンドのハードコード
どのような状態か:PlaySound("footstep_concrete_01.wav")
なぜ問題か:バリエーションやパラメーター制御がなく、状況に合わせて調整できません
代わりにすべきこと:Switches/RTPCを使ったミドルウェアイベントを使用し、環境音にはプロシージャル生成を使います
アンチパターン:音量の大きいUIサウンド
どのような状態か:すべてのボタンクリック音が-3dBで、ゲームプレイのオーディオと同じ音量です なぜ問題か:UIサウンドは控えめで、聴き疲れを起こさないようにする必要があります。プラットフォームのガイドラインにも違反します 代わりにすべきこと:UIサウンドを-18~-24dBに設定し、短く高周波のトランジェントを使い、システム音量を尊重します
進化のタイムライン
2010年以前:固定音声
- サンプル再生のみ
- 基本的なステレオパンニング
- リアルタイム処理は限定的
2010~2015年:ミドルウェアの時代
- Wwise/FMODが標準となる
- RTPCとStateのシステムが成熟
- 基本的なHRTFサポート
2016~2020年:VRオーディオ革命
- VRのヘッドトラッキングにアンビソニックスを採用
- 空間オーディオAPI(Resonance、Steam Audio)
- プロシージャルオーディオが普及
2021~2024年:AIとモバイル
- ElevenLabs/AIによる効果音生成
- AirPods向けApple Spatial Audio
- AAAでプロシージャルオーディオが標準に
- 触覚とオーディオのデザインが専門分野となる
2025年以降:現在のベストプラクティス
- AIを活用したサウンドデザイン
- ニューラルオーディオコーデック
- リアルタイム音声変換
- 写真からパーソナライズしたHRTFを生成
コアコンセプト
空間オーディオのアプローチ
| アプローチ | CPU負荷 | 品質 | 用途 |
|---|---|---|---|
| ステレオパンニング | ~0.01ms | 基本的 | 遠くの音、多数の音源 |
| HRTFコンボリューション | ~2ms/音源 | 優れている | 近くの音、重要な3Dサウンド |
| アンビソニックス | ~1ms合計 | 良好 | VR、多数の音源、ヘッドトラッキング |
| バイノーラル(簡易版) | ~0.1ms/音源 | まずまず | 低コスト/モバイル向けの空間オーディオ |
HRTF:測定した耳のインパルス応答(512-1024タップ)を音声に畳み込みます。高さを含む、説得力のある3D定位を実現します。
アンビソニックス:音場を球面調和関数(1次の場合はW、X、Y、Z)としてエンコードします。回転に依存せず、多数の音源を効率的に処理できます。
// Key insight: encode once, rotate cheaply
AmbisonicSignal encode(mono_input, direction) {
return {
mono * 0.707f, // W (omnidirectional)
mono * direction.x, // X (front-back)
mono * direction.y, // Y (left-right)
mono * direction.z // Z (up-down)
};
}
プロシージャルな足音
サンプル音よりプロシージャル方式が優れている理由:
- ✅ 無限のバリエーション(繰り返しがありません)
- ✅ メモリ使用量が非常に小さい(約50KB、サンプル音の5~10MBに対して)
- ✅ パラメーター駆動(速度 → 衝撃力)
- ✅ 物理マテリアルに基づいて表面を認識
基本的な合成手順:
- 衝撃音のバースト(20msのノイズ+共鳴音)
- 表面の質感(砂利=粒状、草=フィルター処理したノイズ)
- 破片音(散在する微小な衝撃音)
- 表面に合わせたEQ(金属=明るい、草=こもった音)
// Surface resonance frequencies (expert knowledge)
float get_resonance(Surface s) {
switch(s) {
case Concrete: return 150.0f; // Low, dull
case Wood: return 250.0f; // Mid, warm
case Metal: return 500.0f; // High, ringing
case Gravel: return 300.0f; // Crunchy mid
default: return 200.0f;
}
}
Wwise/FMODとの統合
主な抽象化要素:
- イベント:音をトリガーします(足音、爆発音、環境音のループ)
- RTPC:連続的なパラメーター(速度0~100、体力0~1)
- スイッチ:離散的な選択肢(表面の種類、武器の種類)
- ステート:全体的なコンテキスト(音楽の強度、水中)
// Material-aware footsteps via Wwise
void OnFootDown(FHitResult& hit) {
FString surface = DetectSurface(hit.PhysMaterial);
float speed = GetVelocity().Size();
SetSwitch("Surface", surface, this); // Concrete/Wood/Metal
SetRTPCValue("Impact_Force", speed/600.0f); // 0-1 normalized
PostEvent(FootstepEvent, this);
}
UI/UXサウンドデザイン
アプリのサウンドに関する原則:
- 控えめに - UIサウンドは-18~-24dBにします
- 短く - ほとんどの操作では50~200msにします
- 一貫性を保つ - アプリ全体で同じ音の系統/音色を使います
- アクセシブルに - フィードバックを音声だけに頼らないでください
- 触覚と組み合わせる - iOSの触覚フィードバックは音声の特性と一致させます
サウンドの種類:
| カテゴリー | 例 | 長さ | 特徴 |
|---|---|---|---|
| タップ時のフィードバック | ボタン、トグル | 30~80ms | 柔らかく高周波のクリック音 |
| 成功 | 保存、送信、完了 | 150~300ms | 上昇する、ポジティブな音 |
| エラー | 無効、失敗 | 200~400ms | 下降する、短調の音 |
| 通知 | アラート、リマインダー | 300~800ms | 特徴的で注意を引く音 |
| 画面遷移 | 画面変更、モーダル | 100~250ms | フーッという音、控えめな動き |
iOS/Androidのオーディオセッション
iOS AVAudioSessionのカテゴリー:
.ambient- 他の音声とミックスし、着信音スイッチで消音されます.playback- 他の音声を中断し、着信音スイッチの影響を受けません.playAndRecord- 音声アプリ向け.soloAmbient- デフォルト。他の音声を消音します
重要なハンドラー:
- 割り込み(電話の着信)
- ルート変更(ヘッドフォンの取り外し)
- セカンダリーオーディオ(Siri)
// Proper iOS audio session setup
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback, mode: .default, options: [.mixWithOthers])
try? session.setActive(true)
NotificationCenter.default.addObserver(
self,
selector: #selector(handleInterruption),
name: AVAudioSession.interruptionNotification,
object: nil
)
}
パフォーマンス目標
| 処理 | CPU時間 | 備考 |
|---|---|---|
| HRTFコンボリューション(512タップ) | ~2ms/音源 | FFTオーバーラップ加算法を使用 |
| アンビソニックスのエンコード | ~0.1ms/音源 | 非常に効率的 |
| アンビソニックスのデコード(バイノーラル) | ~1ms合計 | 多数の音源に対応 |
| プロシージャルな足音 | ~1-2ms | サンプルあたり500KBに対して |
| 風音の合成 | ~0.5ms/フレーム | リアルタイムストリーミング |
| Wwiseイベントのポスト | <0.1ms | 無視できる程度 |
| iOSオーディオコールバック | 5-10msの予算 | 48kHz/512サンプルの場合 |
予算の指針:オーディオにはフレーム時間の5~10%を割り当てます。
クイックリファレンス
空間オーディオの判断ツリー
- ヘッドトラッキング対応のVRですか? → アンビソニックス
- 重要な音源が少数ですか? → フルHRTF
- 背景の音源が多数ですか? → シンプルなパンニング+距離による減衰
- CPUが限られるモバイル環境ですか? → バイノーラル(シンプルなもの)またはパンニング
プロシージャルオーディオを使用する場面
- 環境音(風、雨、火) → 常にプロシージャルにします
- 足音 → 大規模なゲームではプロシージャル、小規模なゲームではサンプルを使用します
- UIサウンド → 一度生成してキャッシュします
- 衝撃音/爆発音 → ハイブリッド(プロシージャル+サンプルレイヤー)
プラットフォームのオーディオセッション
- 音楽を含むゲーム:
.ambient+mixWithOthers - 瞑想/集中アプリ:
.playback(音楽を中断します) - ボイスチャット:
.playAndRecord - 動画プレーヤー:
.playback
連携先
- voice-audio-engineer - 音声合成とTTS
- vr-avatar-engineer - VRオーディオとアバターの連携
- metal-shader-expert - GPUオーディオ処理
- native-app-designer - アプリのUIサウンド連携
詳細な実装について:/references/implementations.md を参照してください
覚えておいてください:優れたオーディオは存在を感じさせても、意識させません。目立たせるのではなく、体験を支えることに注力してください。プロシージャルオーディオはメモリを節約し、繰り返しをなくします。常にCPUの予算とプラットフォームのオーディオセッション要件を尊重してください。