Beat Quantization
Beat Quantization requires ElysMusicEngine v1.2+ to be enabled in the project. Without it, handlers with bQuantizeToBeat set fire immediately (no quantization, no errors).
Overview
Handlers with bQuantizeToBeat = true defer their Play_Internal call until the next tick of the chosen beat division from ElysMusicEngine. This keeps game-feel effects rhythmically locked to the soundtrack.
Example use case: A heavy attack hit-stop + camera shake that always lands on the nearest quarter-note, making combat feel musically satisfying.
Setup
1. Enable ElysMusicEngine
In ElysImpact.uplugin, the ElysMusicEngine dependency is listed as optional and disabled by default:
{
"Name": "ElysMusicEngine",
"Enabled": false,
"Optional": true
}
Change "Enabled": true in your project’s plugin override, or enable via Edit → Plugins.
2. Configure a Handler
On any handler in a Response Asset:
| Property | Description |
|---|---|
bQuantizeToBeat | Enable beat quantization for this handler |
BeatDivision | Beat subdivision to snap to (Quarter, Eighth, Sixteenth, ThirtySecond) |
The handler’s StartDelay is still applied after the beat snap — so you can use both simultaneously.
How It Works
When a handler with bQuantizeToBeat = true is played:
- The handler checks if
UERP_MusicSubsystemis available - If available: subscribes to the next tick of the chosen
ERP_EBeatDivision - On the beat tick:
Play_Internalexecutes normally - If unavailable (ElysMusicEngine not present):
Play_Internalexecutes immediately
Beat Division Reference
ERP_EBeatDivision | Description |
|---|---|
Quarter | Quarter note (1 beat) |
Eighth | Eighth note (half beat) |
Sixteenth | Sixteenth note (quarter beat) |
ThirtySecond | Thirty-second note (eighth beat) |
Practical Notes
- Beat quantization introduces latency (up to one beat division). Use quarter notes for heavy impacts, sixteenth notes for rapid-fire effects.
- The ElysMusicEngine integration is a soft dependency — removing the plugin does not break ElysImpact.
- All other handlers in the same session play immediately (or after their
StartDelay). Only handlers withbQuantizeToBeat = trueare deferred.
See Also
ElysMusicEngine documentation — Quartz beat clock, layer system, MetaSound integration.