Phase 72.22.1.6 adds music intensity curves for Maya adaptive music. The curve maps a normalized game intensity metric from 0.0 to 1.0 into music intensity, adaptive state, horizontal section, and vertical instrument layer targets.
Source Of Truth#
- Contract: MusicIntensityCurves_V2_Contract.json
- Runtime module:
V2Audio - Core types:
FV2MusicIntensityCurveBand,FV2MusicIntensityCurveRequest,FV2ResolvedMusicIntensityCurve, andFV2MusicIntensityCurveCatalog - Builder:
UV2AudioBlueprintLibrary::BuildDefaultMusicIntensityCurveCatalog - Validator:
UV2AudioBlueprintLibrary::ValidateMusicIntensityCurveCatalog - Evaluator:
UV2AudioBlueprintLibrary::EvaluateMusicIntensityCurve - Registrar:
UV2AudioSubsystem::RegisterMusicIntensityCurveCatalog - Subsystem route:
UV2AudioSubsystem::EvaluateMusicIntensityCurve
Curve Bands#
The default MusicIntensityCurves.V2 catalog defines low, mid, and high bands.
| Game intensity | Band | Target section | Layer target |
|---|---|---|---|
| 0.00-0.33 | Music.IntensityCurve.LowAmbient |
Music.Section.Exploration.Verse |
Ambient pad |
| 0.34-0.69 | Music.IntensityCurve.MidTension |
Music.Section.Tension.Chorus |
Ambient pad, bass, strings |
| 0.70-1.00 | Music.IntensityCurve.HighFullOrchestra |
Music.Section.Combat.Bridge |
Bass, drums, brass, melody orchestra |
Mapping Rules#
FV2MusicIntensityCurveCatalog::EvaluateCurve clamps the incoming
GameIntensityAlpha to 0.0-1.0, finds the matching curve band, and returns the
target EV2MusicIntensity, EV2AdaptiveMusicState,
EV2HorizontalMusicSectionRole, target section id, instrument layers, and layer
ids. Low values explicitly set bLowAmbientMapping; high values set
bHighFullOrchestraMapping.
The required visible mappings are:
- Low intensity maps to
Ambient,Exploration,Verse, and ambient pad. - Mid intensity maps to
Tension,Tension,Chorus, and bass/strings. - High intensity maps to
Climax,Combat,Bridge, and full orchestra layers through bass, drums, brass, and melody.
Runtime Evidence#
UV2AudioConfigAsset owns the default FV2MusicIntensityCurveCatalog.
UV2AudioSubsystem registers it, evaluates curve requests, updates current
music intensity, adaptive state, horizontal section, and vertical layer ids, and
exposes band count, registration, metric mapping, low ambient mapping, high full
orchestra mapping, last alpha, last target intensity, last section, and layer
count through FV2AudioRuntimeSnapshot.
The curve is rollback-cosmetic: it drives adaptive music playback only and does not change gameplay simulation state.
Validation Commands#
python3 V2/ue/Tools/check-v2-music-intensity-curves.py
python3 V2/ue/Tools/check-v2-tempo-beat-tracking.py
python3 V2/ue/Tools/check-v2-audio-module.py
python3 -m json.tool V2/ue/Content/V2/Audio/MusicIntensityCurves_V2_Contract.json
python3 V2/tools/validate-v2-docs.py