adaptive-music

Wire music stems to game state with crossfades, bus routing, and a state machine.

66|4|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/SummerEngine/summer --skill adaptive-music-summerengine
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: adaptive-music
Source: https://github.com/SummerEngine/summer/tree/main/library/skills/adaptive-music
Command: npx skills add https://github.com/SummerEngine/summer --skill adaptive-music-summerengine

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Game music that stays static regardless of gameplay feels disconnected, and manually wiring multiple music tracks to combat, exploration, and boss states with clean crossfades is error-prone. This Skill connects existing music stems to a game state machine so transitions between calm, tension, combat, boss, and victory states happen through volume crossfades on a shared audio bus. ## Core Features & Use Cases - State-driven crossfades: Implements a MusicDirector GDScript class that tweens AudioStreamPlayer volumes between states, with instant-snap support for combat entry. - Multiple wiring models: Supports horizontal sequencing, layered stems, and bar-locked vertical re-orchestration depending on the audio design plan. - Bus routing and ducking: Verifies the Music bus layout and ducks music by -6 dB during dialogue via signal-driven hooks. - Use Case: You have calm, tension, and combat loops at the same BPM and want combat music to hit instantly when the player takes damage, then fade back to calm after the encounter clears. ## Quick Start Ask the agent to wire your calm, tension, and combat music tracks to game state with crossfades and dialogue ducking using the adaptive-music skill.

Frequently Asked Questions about adaptive-music

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make game music change when combat starts?

Create one AudioStreamPlayer per state on the Music bus, all playing in sync, and tween their volumes on state change. A MusicDirector script switches between calm, tension, and combat states, with combat snapping instantly via the instant_states list.

How to crossfade between two music tracks in Godot?

Keep both tracks playing simultaneously at the same tempo and tween volume_db from -60 dB to 0 dB on the incoming track while fading the outgoing one. Never restart playback mid-state, since restarts break the illusion of continuous music.

What is the difference between layered stems and horizontal sequencing in game music?

Horizontal sequencing crossfades between full tracks, one per state, and suits most indie games. Layered stems keep a base loop playing while drum, string, and brass stems mute or unmute based on intensity, requiring all stems to share BPM, key, and bar length.

Why does my combat music enter off-beat after a crossfade?

Off-beat transitions happen when stems were generated at different BPMs, keys, or bar lengths. Regenerate all stems with identical tempo and bar count so every track stays at the same playhead position during volume-only crossfades.

How do I duck music during dialogue in Godot?

Connect dialogue start and end signals to a handler that tweens the Music bus volume down by about 6 dB using AudioServer.set_bus_volume_db, then restores it when dialogue ends. Duck to a present bed rather than muting the music entirely.

When should I not use an adaptive music system?

Skip adaptive wiring when the game needs only a single static loop with no state changes; a plain AudioStreamPlayer is enough. Also generate the stems first with a music generation skill, since this workflow only wires existing tracks.