Creature breath control

Hi. I have a horse that I can mount. Whenever I mount it and start riding, I want it’s breath to go up in speed along with the actual speed of the horse. So slow walk=slow breath. Fast run=fast breath and everything in between.

Currently I have it set up with scatter instruments on a timeline, that is controlled via a “Horse_Speed” parameter. The actual instrument selection is done via region markers and play rules (if within X values, play X. If withing X values, play Y etc)

Each scatterer instrument has a short loop of the horse inhaling and exhaling.
A fast one for the fast instrument and a medium for the medium and a slow for the slow instrument.
The problem here is that when increasing or decreasing the horse speed, one scatterer instrument will take over for the other, before the horse has exhale/finished its sound. This results in uneven breathing so to speak.

How would I go about not playing the next instrument before the previous sound is done playing?

Maybe I need to take another appraoch than scatterer instruments?

Thanks

From what I’m gathering, you have configured the scatterers to not overlap the sounds (polyphony being at 1).

You’re simply complicating your life here :slight_smile:

Since you don’t have polyphony, it means you simply you’re not controlling the speed of the repetition, but simply selecting at random a sound. Which is what multi-instruments are for.

Simply use multi-instruments, non-async, with loops, and set a transition at the end of the loop. This way, you will be selecting a sound randomly at every loop, and only transition after the whole breathing sample is played.

You could also:

  • create samples with the exact same duration (but keep some slight variations in the recording) for each pool. And also transition between inhale and exhale to have a better reaction time when the speed change occurs.
  • Create pools of exhale/inhale samples and combine them depending on the speed.

Cheers

PS: Not every sound/audio logic is good inside FMOD. Sometimes controlling playback through code is better or at least easier than trying to achieve something with multi-instruments, scatterer instruments or complex events which could impose constraints on the final playback.

The scatterer instrument usage was because I initally wanted to control the spawn speed, but ended up never doing that. But you are correct with just setting the transition at the end of the loop. Why didn’t I think about that hehe. Somedays the logic part of my brain is just clogged up or something :slight_smile:
Thanks