Post by bbjones on Nov 14, 2020 18:07:31 GMT
Hi,
I'm wondering if there is a supported MA feature to handle gunshots with reverb tails and first bullet distinction.
Reverb tails
The standard design I've seen is to use 2 audio clips.
1 for the main gunshot, typically a dry sound
1 for the reverb tail
When you fire a single bullet, the main gunshot is immediately followed by the reverb tail.
The reason this is not combined into a single clip is to prevent long reverb tails from overlapping during rapid fire.
When you have bullets firing quickly (eg. high rate machine gun) you use typical overlapping variations for the bullets (dry sounds), but only play the reverb tail on the last shot, or if there is a long enough delay between shots.
Here's a couple of scenarios:
Empty a magazine:
fast firing all bullets till magazine is empty
all shots get clip 1 (main gunshot)
the last shot in the magazine plays clip 2 (reverb tail) after clip 1 gunshot
Small delay, single fire:
fire one round, plays clip1 (gunshot) followed by clip 2 (reverb tail)
fire second round before reverb tail is finished playing, plays clip 1, cuts off previous clip 2, starts a new clip2 following the new clip 1
In theory you could trigger playing the reverb tail on 2 conditions:
1) Out of ammo (mag empty or no more bullets)
2) Player stopped holding down fire key
However that involves having to raise events/call methods in specific cases (there may be many), where instead it would be preferable to have the audio system deal with it by simply cutting out the reverb tail when the next bullet sound is played.
First shot
Another standard design is to have a different clip for the first shot in a magazine (when doing rapid fire).
Typically the first bullet has a different (usually more dramatic) sound, following by variations of secondary gunshots.
The first shot clip would be played if there was a long enough delay between firing.
Are there ways to use MA to support these patterns? I am new to MA but have reviewed the docs and forums and haven't spotted anything that matches yet, apart from doing custom code/custom events.
Cheers