I’m wondering if there is a way to bypass the FSB Tool audio import and just use my own files directly. I’m working on a contract for a company that is very audio centric and I’m stuck between a rock and a hard place:
On the one side, they have provided me with MP3s. When I import these in Unity with the quality at 100 and sample rate set to preserve (on Android so output type as MP3 too), they complain that the compression is really messing with the sound quality.
On the other side, they provide me with the files as PCM encoded WAV files. With a test file, they said the resulting quality was fine (again, output as MP3). When I go to import their full length audio files, though, I get out of memory errors from FSBTool.exe and searching around the issue tracker it sounds like this is something nobody considers a very high priority to fix.
So… Is it possible for me to give Unity files that are already compressed how it wants? The company would be happy to match Unity’s requirements. Does the FSBTool do something more than convert the files, such as package it up to a Unity specific format. Running the executable from the command line suggests not but I can’t tell.
second this. my solution at the time was to split / trim the audio files to reduce size ( quality was not a concern though )
i’d ping someone like @bitter or more generally @superpig to try to provide some explanation.
I believe FSBTool converts files to an audio format that is proprietary to FMOD (FSB standing for ‘FMOD Sound Bank’). No idea whether it’s possible to grab FMOD yourself and do this encoding, though - someone from the audio team would need to weigh on in that.
As @r618 says, have you looked into splitting the files, and then playing them back-to-back with PlayScheduled?
I’m relatively new here, so pardon the innocence of this question, but have you tried importing files compressed in other formats that mp3? I generally tend to render my sounds as .ogg, and have not noticed any real problems when imported them to Unity.
They sent me files compressed to WAV, OGG and MP3 with various bit-rates, etc. Tbh, I couldn’t tell any difference for the most part (crosstalk on the tablet I’m testing with showed up before any audio artifacts that I noticed), but their audio guy has better ears than mine and there are some specific points in the files that he feels corrupted to an unacceptable level. After I gave him a track listing to play through in the app with each input and output compression, we settled on the WAV input as giving the best results. It does make sense that taking a compressed input, decompressing and recompressing would have some effect on quality though.
I’m aiming to have a call with their audio lead in the near future, though, so I’ll discuss formats and splitting the files too (that will need some extra code on my part to create “compound” tracks in the UI).
@superpig is it worth me bringing up the out of memory error with FMOD support? Is FSBTool actually theirs, or does it just output to their format?
[quote=Survivalist Games, post: 2656832, member: 725392] @superpig is it worth me bringing up the out of memory error with FMOD support? Is FSBTool actually theirs, or does it just output to their format?
[/quote]I doubt it - FSBTool is written by them, but it’s part of a version of FMOD that we’ve customised etc, so it might have our changes in it too. In general they’re going to want us to deal with it, I think.
If you just make an empty project, and drop one of your WAV files into it, does that reproduce the crash? If so, could you submit that as a bug report?
That does reproduce the crash, though oddly with slightly larger files. A 412mb file that crashed every time in the full project now builds ok, while a 500mb alone crashes in both full and empty.
I’ve submitted the bug report (Case 801790).
Also, due to the weirdness that is the 412mb working in an empty project, I tried duplicating it 64 times to see if it is a cumulative memory cap, but that had no effect. I was wondering if the Unity Editor actually loads all audio in a project into memory regardless of if it’s set to streaming and load in background, but I’m guessing not.