Not enough features in studio + QOL improvements

Hi everyone, I’m new here, and this is my first time using FMOD, so no flame, please.

I am making a sizeable game in Unity, by myself, and I have not updated my music manager for 2 years and thought I’d do it once more and do it right. I also want to use FMOD; however, I have several grievances with the software and its interaction with Unity.

I was going to update this later and hear back from the community, but since I won’t be using FMOD anymore,. Sighs. FMOD, please improve your product.

The purpose of this post is to highlight areas that could be improved on FMOD’s side, and this is functionality that I can get in C# without FMOD.

  1. Multiple instruments don’t take parameters to control WHICH track is played. I need this for when a player resumes a saved game. The played audio should match what was saved to file when the game is resumed.
    a. Also, single instruments placed on action sheets don’t accept conditional parameters.
    b. You must use a parameter sheet, which is bound to a single parameter. You can add additional parameters, but it is always based on the first parameter you add.
    c. In my instance I have an integer parameter that accepts a number from 1 to 40, which I use to control which audio plays in an event. This works OK but is a bit more work to set up, especially if you aren’t using (abusing) parameters like I am.

  2. Additional parameter types:
    a. Using more simple parameter types such as Boolean, Int, Byte, etc., could decrease memory overhead instead of shoving everything into a generic parameter.

  3. Static event callbacks or access to which callbacks an event is using (similar to parameters). There should be a global event cache that can be accessed similar to parameters.
    a. I have built a tool in C# that automatically scans my FMOD project and generates the events in C# for me to call. My main pain point here is that I have no way to visualise which timeline markers as event callbacks are used in an event.
    b. I made a workaround for this by using coded timeline markers like C_START, C_STOP, and C_RESET, and I manually baked these into my project via const string. When my event gets called, I can search for these marker names quickly and filter out any that are not designed to be exposed to the scripting environment.
    c. I’d like it if my tool could access the timeline markers and bake them to save memory and performance at runtime.

  4. FMOD should automatically assign events to banks at the user’s discretion. Unity does this out of the box, and audio that isn’t used is not baked into the final build. FMOD already chooses which audio to put into banks based on what is used, and that’s great.
    a. I understand that the FMOD banks are memory related, so this might be a touchy topic. But FMOD could provide recommendations for separating events like the game’s music, certain sound effects, etc.
    b. Personally, I don’t understand the bank system. There isn’t really going to be a case in my game where I would need only part of my audio files loaded except for small edge cases in certain levels.
    i. Such as my level 2, where I have unique creatures (and their associated grunts and growls) not seen (or heard) anywhere else in the game. But really, what’s the point of assigning these unique events to a bank only to save a tiny amount of RAM?

  5. UI improvements to FMOD Studio
    a. Copying conditions between instruments or logic tracks.
    b. Adding an instrument to the action sheet via right-click when one is already assigned. Currently I need to copy the event and paste it into another track and then move the copy to the first track.

  6. User properties, track information, and more
    a. This is the final pain point that has caused me to not use FMOD in my project anymore. As I mentioned earlier with the save syncing, there just isn’t enough information available to tell my game exactly WHAT an event is, how many clips it has, what playback state it is in, and much more.
    b. I have thus decided to go back to Unity audio because I get raw and unfiltered access to my audio clips, and frankly, I can build a random audio player and reuse it anywhere in my code in 5 minutes. FMOD has given me great ideas and expanded my horizons when it comes to audio, so thanks for all the fish, I guess.

Thank you for reading, and thanks to the FMOD team for making an already great audio system that is also free for indie devs like myself to get started.