К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

audio-design — скилл для Claude Code: шины, дакинг, музыка

Скилл учит раскладывать игровой звук по шинам, глушить музыку под голос и собирать адаптивный саундтрек слоями. Примеры кода — на GDScript под Godot 4.7, с пометками для Unity.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill audio-design -a claude-code
Открыть на GitHub

Что делает audio-design

Скилл описывает игровой звук как граф микшера плюс музыкальную систему. Звуки идут не прямо в мастер, а в небольшой набор шин вроде Music, SFX, Ambience, UI и Voice, и ползунки в настройках двигают громкость групп. Считать её надо в децибелах: слух логарифмический. Значение 0.5 из линейного ползунка, поданное как дБ, даёт +0.5 дБ, то есть почти ничего не меняет.

Дальше идёт сайдчейн-компрессор на шине музыки, ключом ему служит голос. Диалог пошёл, музыка просела, диалог кончился, музыка вернулась. Ориентиры для старта: порог около -30 дБ, соотношение от 4:1 до 8:1, атака до 10 мс, восстановление 300-500 мс. Адаптивная музыка собирается вертикально, когда стемы вплывают и уплывают, или горизонтально, когда сегменты меняются по границам такта. Повторяющиеся шаги и удары лечатся рандомизатором высоты и громкости, чтобы не звучать пулемётом.

Сниппеты написаны на GDScript под Godot 4.7, рядом стоят пометки для Unity 6.3 LTS и FMOD/Wwise. Движок скилл не выбирает: конкретные узлы, стриминг и импорт остаются за отдельным скиллом движка. Если в проекте уже есть FMOD или Wwise, их авто-дакинг на шинах предпочтительнее скриптовых твинов. Громкость проверяйте на слух, по индикаторам редактора выводов не сделать.

Какие задачи решает

  • разложить звуки по шинам Master, Music, SFX, Voice вместо ручной громкости каждого клипа
  • привязать ползунки настроек к громкости групп в децибелах
  • приглушить музыку под репликами диалога через сайдчейн
  • собрать музыку, которая реагирует на бой и исследование
  • убрать пулемётный повтор у шагов и ударов

Примеры запросов агенту

  • Разложи звук по шинам Music, SFX, Ambience, UI и Voice и повесь ползунки настроек на громкость групп в дБ.
  • Поставь на шину Music сайдчейн-компрессор с ключом от Voice, чтобы диалог приглушал музыку.
  • Сделай адаптивную музыку: стемы для боя и исследования, переключение по границам такта.

Как установить audio-design

1Через Skills CLI (Vercel)

npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill audio-design -a claude-code

2Вручную: положить файлы

~/.claude/skills/audio-design/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/audio-design/

Из того же набора40

Весь набор →
game-feel gamedev-skills Скилл учит агента добавлять отклик к игровым действиям: тряску камеры, стоп-кадр, твины с easing, сквош и отброс. Для случаев, когда механика работает, но ощущается ватной. Claude Code CX Codex Cursor +1 9 400установок game-ui-ux gamedev-skills Архитектурный скилл для создания адаптивных игровых интерфейсов, стека экранов и навигации с геймпада без покадрового опроса состояния. Claude Code CX Codex Cursor +1 9 200установок level-design gamedev-skills Помогает спроектировать игровой уровень от блокута до плейтеста: маршруты, темп, препятствия и столкновения. Нужен при работе с whitebox, критическим путём и геймплейными комнатами. Claude Code CX Codex Cursor +1 7 500установок camera-systems gamedev-skills Рецепты для игровых камер в 2D и 3D: плавное следование, мёртвые зоны, опережение движения и обработка столкновений для Godot и Unity. Claude Code CX Codex Cursor +1 7 100установок performance-optimization gamedev-skills Скилл учит искать узкое место в игре по профайлеру движка, а не по догадке, и даёт набор правок: пулы объектов, батчинг, отказ от лишних аллокаций. Claude Code CX Codex Cursor +1 7 100установок game-ai gamedev-skills Помогает проектировать логику врагов и NPC: конечные автоматы, деревья поведения, алгоритмы руления и поиск пути A*. Пригодится при сборке поведения ботов для любого движка. Claude Code CX Codex Cursor +1 7 100установок input-systems gamedev-skills Архитектура игровых управлений: отображение клавиш на действия, перекоординирование с проверкой конфликтов, поддержка клавиатуры, геймпада и сенсора, мёртвые зоны, буферизация и coyote time. Claude Code CX Codex Cursor +1 6 800установок procedural-gen gamedev-skills Генерирует уровни и таблицы лута по сиду на основе детерминированных алгоритмов. Пригодится для процедурного контента без ручной расстановки. Claude Code CX Codex Cursor +1 6 800установок

Похожие

curves-and-paths phaserjs Скилл для работы с кривыми, сплайнами, безье и путями в Phaser 4. Помогает рисовать пути, получать точки вдоль них и заставлять спрайты двигаться по заданной траектории. Claude Code CX Codex Cursor +1 750установок v3-to-v4-migration phaserjs Помогает обновить проект игры с Phaser 3 до Phaser 4. Разбирает несовместимые изменения рендерера, перенос масок в фильтры и замену tintFill. Claude Code CX Codex Cursor +1 711установок unity-developer rmyndharis Скилл для разработки игр на Unity 6 LTS с оптимизацией производительности, настройкой конвейеров рендеринга и кроссплатформной сборкой. Помогает писать C# код, настраивать URP/HDRP и решать проблемы с физикой и ассетами. Claude Code CX Codex Cursor +1 3 000установок orbit-card heygen-com Скилл для встраивания готового 10-секундного 3D-блока HyperFrames: карточка фичи облетает сферу из точек по траектории камеры из Blender. Claude Code CX Codex Cursor +1 9 800установок sdf earthtojake Скилл создаёт и проверяет SDFormat-файлы для моделей и миров, а затем помогает подготовить их к передаче в симулятор. Claude Code CX Codex Cursor +1 10 500установок urdf earthtojake Скилл помогает создавать, проверять и отлаживать описания роботов в формате URDF. Пригодится для работы со звеньями, сочленениями и геометрией. Claude Code CX Codex Cursor +1 10 400установок hatch-pet официальный openai Создаёт и упаковывает анимированных питомцев и спрайт-листы для Codex. Пригодится, когда нужен персонаж по описанию, изображению или фирменным ориентирам. Claude Code CX Codex Cursor +1 3 300установок gcode earthtojake Нарезает модели STL, 3MF и OBJ в G-code через OrcaSlicer. Подходит, когда нужно подготовить файл для печати без подключения к принтеру. Claude Code CX Codex Cursor +1 9 500установок

Вопросы о audio-design

Как установить audio-design в Claude Code?

Выполните npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill audio-design -a claude-code. После установки файл скилла лежит по пути ~/.claude/skills/audio-design/SKILL.md.

Что делает audio-design?

Задаёт схему шин и микшера, громкость в децибелах, дакинг под голос и адаптивную музыку из слоёв. Плюс вариация повторяющихся эффектов и синхронизация событий с битом.

Скилл заточен под Godot?

Нет, он движок-нейтральный. Сниппеты даны на GDScript для Godot 4.7, а для Unity 6.3 LTS и FMOD/Wwise в тексте есть пометки, как то же самое сделать там.

Исходный текст

SKILL.md · Apache-2.0
---
name: audio-design
description: >
  Implement game audio practice — bus/mixer architecture and gain in decibels,
  ducking (sidechain), adaptive/dynamic music via layering and re-sequencing,
  SFX variation, and beat synchronization. Engine-neutral. Use when the user
  mentions audio mixing, audio buses, adaptive/dynamic music, ducking, SFX
  variation, music layers, or syncing gameplay to the beat.
---

# Audio design

Game audio is a **mixing graph plus a music system**. Route every sound through a
small set of buses so you can balance and process groups; make music *react* to
play through layering and re-sequencing rather than looping one track. This skill
teaches the portable practice; bind it to `godot-audio`, Unity's AudioMixer, or
middleware (FMOD/Wwise) for concrete APIs.

## When to use

- Use to design a bus/mixer layout, set group volumes, and apply effects (reverb,
  compression, EQ) to groups of sounds.
- Use to duck music/ambience under dialogue or impacts (sidechain).
- Use to build adaptive music that responds to combat/exploration intensity.
- Use to add SFX variation (pitch/sample randomization) and sync events to a beat.

**When *not* to use:** for the engine's concrete audio nodes/streams, use
`godot-audio` or the engine's audio skill. Loading/streaming and asset import are
engine concerns. For UI sliders that drive bus volume, see the engine UI skill.

## Core workflow

1. **Lay out buses, not per-sound volume.** A typical tree: `Master ← {Music,
   SFX, Ambience, UI, Voice}`. Everything plays into a bus; the player's settings
   sliders map to bus volumes. Never set hundreds of clip volumes by hand.
2. **Work in decibels, not linear.** Perceived loudness is logarithmic. Volume
   controls and automation should operate in dB; convert only at the edges.
3. **Leave headroom and hit a loudness target.** Keep true peaks at or below -1 dBTP and
   measure integrated loudness over a representative play session with an ITU-R BS.1770 meter.
   Sony's ASWG-R001 recommendation, the usual reference, is -24 LUFS (±2) for console/PC
   played on TVs and speakers and -18 LUFS (±2) for handheld/mobile. Music-streaming targets
   such as -14 LUFS are not game targets.
4. **Duck competing sources** with a sidechain compressor (or volume automation):
   when voice/important SFX plays, the music bus dips, then recovers.
5. **Make music adaptive** via *vertical* layering (stems faded in/out) and/or
   *horizontal* re-sequencing (swap segments at musical boundaries). See the
   reference.
6. **Vary repeated SFX** with small random pitch/volume offsets and sample pools
   so footsteps and hits don't sound robotic.
7. **Verify on real output.** Listen on headphones and speakers; check that the
   mix balances, ducking is audible but not pumping, and music transitions land
   on the beat — never assume from the editor meters alone.

## Patterns

Snippets are Godot 4.7 GDScript; the Unity 6.3 LTS and middleware equivalents are noted
under each one.

### 1. Bus routing and slider-to-gain mapping

```gdscript
# Route sounds to named buses; control GROUPS, not individual clips.
sfx_player.bus = &"SFX"
music_player.bus = &"Music"

# Map a 0..1 settings slider to bus gain. Squaring the slider first spreads the
# audible change over the whole travel; a raw linear-amplitude slider puts most of
# the change in the bottom fifth.
func set_bus_volume(bus_name: StringName, slider01: float) -> void:
    var idx := AudioServer.get_bus_index(bus_name)
    var gain := clampf(slider01, 0.0, 1.0)
    AudioServer.set_bus_mute(idx, gain <= 0.0)             # true silence at 0
    AudioServer.set_bus_volume_linear(idx, gain * gain)    # = set_bus_volume_db(idx, linear_to_db(gain * gain))
# WRONG: AudioServer.set_bus_volume_db(idx, slider01): "0.5" is +0.5 dB (no audible
# change) and 0 is 0 dB (full volume).
```

Unity 6.3 LTS: expose the group's Volume as a mixer parameter, then
`mixer.SetFloat("MusicVolume", 20f * Mathf.Log10(Mathf.Max(gain * gain, 0.0001f)))` (the mixer
floor is -80 dB). An `AudioSource` whose Output group is empty plays outside your mixer groups,
so no category slider or snapshot affects it: route every source.

### 2. Ducking via sidechain (music dips under voice)

A compressor on the music bus, keyed by the voice bus, lowers the music while dialogue plays and
releases afterwards. Starting values: threshold about -30 dB on the voice signal, ratio 4:1 to
8:1, attack as fast as the effect allows (up to ~10 ms), release 300-500 ms.

```gdscript
# Godot 4.7: AudioEffectCompressor reads its sidechain bus for threshold detection.
func _ready() -> void:
    var duck := AudioEffectCompressor.new()
    duck.sidechain = &"Voice"      # the bus that triggers the dip
    duck.threshold = -30.0         # dB, range -60..0
    duck.ratio = 8.0               # range 1..48
    duck.attack_us = 2000.0        # MICROseconds, range 20..2000 (2 ms is the maximum)
    duck.release_ms = 400.0        # milliseconds, range 20..2000
    AudioServer.add_bus_effect(AudioServer.get_bus_index(&"Music"), duck)

# No-compressor alternative: tween a dedicated "MusicDuck" bus that sits between
# Music and Master, so ducking never overwrites the player's Music slider.
func duck_music(active: bool) -> void:
    var idx := AudioServer.get_bus_index(&"MusicDuck")
    var from := AudioServer.get_bus_volume_db(idx)
    var to := -12.0 if active else 0.0
    create_tween().tween_method(
        func(db: float) -> void: AudioServer.set_bus_volume_db(idx, db), from, to, 0.25)
```

Unity 6.3 LTS: add a **Duck Volume** effect to the Music group and a **Send** effect on the Voice
group targeting it. FMOD Studio and Wwise have sidechain/auto-ducking on buses; prefer those over
script tweens when the project already uses middleware.

### 3. SFX variation (kill the "machine gun" repeat)

```gdscript
# Godot 4.7: AudioStreamRandomizer picks a take (no immediate repeats by default)
# and randomizes pitch and volume on every play. No per-shot node allocation.
func make_footsteps(samples: Array[AudioStream]) -> void:
    var rnd := AudioStreamRandomizer.new()
    for s in samples:
        rnd.add_stream(-1, s)                 # -1 appends; optional third arg = weight
    rnd.random_pitch_semitones = 1.0          # up to +/-1 semitone (about 6%)
    rnd.random_volume_offset_db = 2.0         # up to +/-2 dB
    $Footsteps.stream = rnd
    $Footsteps.max_polyphony = 4              # overlapping steps without new players
```

Unity 6.3 LTS has no built-in randomizer: keep an array of clips, pick one that differs from the
last, set `pitch` in a small range, and call `PlayOneShot` on a pooled `AudioSource`.

### 4. Beat-synced events (quantize to the music grid)

```gdscript
# Schedule gameplay/visuals on musical time, not frame time, so they land on beat.
const BPM := 120.0
const SECONDS_PER_BEAT := 60.0 / BPM

# What the player HEARS now: playback position, plus time since the last mix
# (the position only updates once per mixed chunk), minus output latency.
func song_time() -> float:
    return ($Music.get_playback_position() + AudioServer.get_time_since_last_mix()
            - AudioServer.get_output_latency())

func current_beat() -> int:
    return int(song_time() / SECONDS_PER_BEAT)

# Quantize an action to the NEXT beat boundary instead of firing immediately.
func time_until_next_beat() -> float:
    return SECONDS_PER_BEAT - fmod(song_time(), SECONDS_PER_BEAT)
```

Unity 6.3 LTS: read `AudioSettings.dspTime` and schedule with `AudioSource.PlayScheduled(dspTime)`
for sample-accurate starts.

## Pitfalls

- **Treating slider values as dB.** Map `0..1` to gain (`linear_to_db`, or
  `set_bus_volume_linear`) and back with `db_to_linear`. A raw linear-amplitude
  slider sounds almost unchanged over most of its travel and drops off at the
  bottom; squaring (or cubing) the slider before conversion evens it out.
- **Per-clip volume instead of buses** makes a global balance pass impossible and
  bloats save/settings. Mix on buses.
- **Sources that bypass the mix.** A Unity `AudioSource` with no Output group, or a
  Godot player left on `Master`, ignores the category sliders. Route everything.
- **Clipping the master.** Summed sounds exceed 0 dBFS and distort. Leave
  headroom; put a limiter on Master as a safety net, not as the mixer.
- **Pumping ducking**: too-fast release or too-high ratio makes music audibly
  breathe. Lengthen release; lower ratio.
- **Ducking that fights the volume slider.** Tweening the Music bus back to 0 dB
  overwrites the player's setting. Duck a separate bus, or use the compressor.
- **Looping a single music track** for the whole game feels flat. Use layers or
  segments that respond to state (see the reference).
- **Beat sync off frame time.** `delta` drifts; read the **audio playback
  position**, add the time since the last mix, and subtract output latency.
- **Unbounded one-shot players**: spawning AudioStreamPlayers without freeing
  them leaks. Use `max_polyphony`/`AudioStreamRandomizer`, free on `finished`, or
  pool them.

## References

- `references/adaptive-music.md` — vertical layering vs horizontal re-sequencing,
  transition timing (bars/quantize), stingers, intensity mapping, and crossfades.

## Related skills

- `godot-audio` — buses, `AudioStreamPlayer`, effects, and sync-to-beat in Godot.
- `input-systems` — trigger audio from input actions.
- `physics-tuning` — collision events that drive impact SFX.
- `platformer`, `roguelike` — genres whose feel leans on audio feedback.

© gamedev-skills · Apache-2.0 · gamedev-skills/awesome-gamedev-agent-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой