Event macros are the way how you control each events’ pitch, how events are created, limits the number of event instances, and their behaviour if the number gets exceeded
You can find Event macros tab on your bottom right.
Unlike Wwise’s Play/Stop event function, in Fmod persistent button controlls whether your event stops after the sound is done playing or not.
By default, once the event reaches the last audio on the timeline, it will stop by itself.
To simply avoid this, you can turn on the persistent so the event can be played until it is told to stop. It is useful to play a sound based on Parameters (In Wwise, RTPCs)
If you right click the pitch box, you will find all the automation/modulation values you can add
It controls the whole event tracks' pitch values (like parent controls in Wwise)
Note that, similarly to Wwise, this pitch control changes the playback speed as it is based on time (Length will be changed)
It is useful if you want to control the power up or power off on engine with modulations
If you don’t press on, doppler scale is greyed out.
FMOD has a built-in doppler effect, and it occurs when there is a difference between the emitter and listener speeds. If you turn this option on, FMOD automatically calculates how this relative speed would affect the event’s pitch (basically, it will adjust automatically to the event’s pitch based on the velocity of the event emitter relative to the listener). The doppler scale allows to exaggerate or reduce the effect, allowing for fine tuning for each individual event. Setting this property to 0% prevents any doppler effect from being applied to the event.
When the event emitter is moving towards the listener, the pitch of the event rises. When the event emitter is moving away from the listener, the pitch of the event lowers. This simulates the Doppler effect experienced by a listener when the relative speed of audio emitters approaches the speed of sound.
you’ll notice that if you lower max instances, stealing option is enabled
The max instances property limits on how many instances of this event can play simultaneously. This prevents too many event instances from playing at the same time. This is especially helpful when a game includes frequent collision-triggered events, such as debris objects colliding with a floor following a wall collapse.
Let's say you set your max instances to 10. What happens if 11 instances are playing at the same time? This is where stealing feature comes.
Oldest: Stop the event instance that was started the longest time ago.
Furthest: Stop the event instance that is the furthest away from the listener.
Quietest: Stop the event instance that is the least audible, taking distance attenuation into consideration.
Virtualize: The quietest event instances will be virtualized, that being said they are created and played but produce no output until an existing event instance stops.
None: No stealing will occur, that means no new event instances can be played until an existing event instance stops.
You can set the minimum time between the start point of the instances. This is used to prevent spamming event instances and phasing issues. This can be used for when pickup sounds are happening.
FMOD steals a voice if voice limit exceeded by a new voice. By assigning priority to your events, you are assigning how important the instruments within them are, because when stealing happens, higher priority voices will steal lower priority voices. The highest will never be stolen though.
This is useful for ensuring instruments of events essential to your game, such as background music and dialogue, are not stolen by instruments of less important events, such as footsteps and ambience.
Note that this is a voice priority, that being said, setting this will affect each instrument (track) not as a whole event.
If you add any spatializer in post-fader effects, you will see Min&Max Distance on the bottom of the event macro. It basically controls the minimum and maximum distance for spatialization and attenuation.
Between 0 and the min distance, the event will always play at a full level. and in between the min and the max, it will gradually drip based on its attenuation curve.
Note that the 3D and object spatializers will override for event min/max distance to retain the previous individual behaviour.
There is also a build-in normalized distance parameter which let us control distance-based automation. That being said, using a scale that runs from 0 (min) to 1 (max) you can design custom curves that can be shared between events with different min/max distance ranges.