We have been discussing how to use music in upcoming titles and if and how we could use FMOD designer to maintain the content. One of the suggestions was to use "layered" music, that is to split up the music into a few tracks where each track can be modulated with respect to what is happening in the game. This isn’t a very new strategy and it has been used before in other games and as I see it would be pretty easy to set it all up in FMOD designer. BUT, there is one little detail that pretty much tears everything down and that is the issue of streaming. If we want to use layered music in the game it needs optimal streaming performance and the classical approach to this problem would be to use interleaved streaming. Now, my question is if FMOD designer already interleave all sounds used in an event transparent to the user. If not, is it something you would consider adding?
- Frohagen asked 11 years ago
My first question would be when we could expect this interleaved option. If it’s not a high priority task for you guys or if it’s something you think will take some time to fix then we might be better off looking at creating a system of our own that interface FMODex outside the FMOD designer api.
You can import multichannel waves into FMOD designer, as long as they are in an ADPCM bank and have 6 or fewer channels. However, to really independently control the channels, you have to use the C/C++ API. Designer doesn’t let you do much with them (yet).
- audiodev answered 11 years ago
been researching a bit on how to stream dialog for good distance/environmental effects and music for sync inbetween layers.
A good solution to this would be to use multichannel wavfiles (2 or more channels) and choose which channel/channels to use in the Sound Definition. This way a multichannel wavfile channel playback could be controlled from within the Event Editor, and also stay in sync inbetween channels. As long as it’s truly interleaved you get a 2-6 channel mixer streamed direct from disk, in sync.
Would this be possible/interesting?
Ok, I’m currently considering a solution that would require a new effect called "channel mix" (or something).
It would have an arbitrarily large number of curves available – one for each subchannel in a mutlichannel file. Each of these curves will control the volume of the associated channel. If I wanted to control the volume of channels 0 and 1, I would create a "channel mix" effect and make curves for just channel 0 and 1 and leave all other channels at 0 (and even hide them so they don’t show up in the event editor).
Then I could use the parameter to control where I am on those curves thereby controlling the volume. Then I could do the same thing for other groups of channels and control them with another parameter – this way I’d have one parameter controlling, say, channels 0 and 1 and another parameter controlling channels 2 and 3 – this would enable me to crossfade between arbitrary groups of subchannels within a multichannel file.
End result is that the programmer can play the "music" event, for instance, and then independently control the "idle", "battle", "victory" etc. parameters to dynamically mix the music depending on what’s happening in the game.
How does that sound?
Would this mean that a non-streaming event in which every layer is a channel in a multichannel file gets perfect syncing? I know there is a technical issue in FMOD that can cause tiny latencies between the different layers and for events where this isn’t acceptable this would be a nice workaround.
[quote="Ljudas":3wevfr9o]Would this mean that a non-streaming event in which every layer is a channel in a multichannel file gets perfect syncing? I know there is a technical issue in FMOD that can cause tiny latencies between the different layers and for events where this isn’t acceptable this would be a nice workaround.[/quote:3wevfr9o]
multichannel wavs are played as 1 multichannel sound within the mixer without being deinterleaved. They will be in perfect sync, as long as it is software mixed.
That’s not possible right now and it also raises a few troublesome implications. I’m currently investigating if we can allow the user to specify that a wavebank should be interleaved in FMOD Designer. Again, that raises a few other implications internally but it may be the best way in the long run. We’re still sorting these details out so if you have any requests/suggestions then let us know.
Please login first to submit.