Hot off the presses – first draft today: new docs on Using FMOD With X-Plane Aircraft and a file format spec for those .snd files you need to tie FMOD To your aircraft.
This is a first draft, so please: use the comments section to ask questions about FMOD only. I’m going to do something a little bit unusual and delete off-topic comments on this post so the entire comments thread is FMOD specific. FMOD integration with X-Plane is complicated, so it would be really useful to know what needs more explaining.
There is one more piece of the FMOD puzzle that is missing – Tyler is working on it now and hopefully we’ll have it live soon: the FMOD starter project.
The short version is: to get an FMOD project that will properly integrate with X-Plane and other third party FMOD aircraft, you need to get a starter project from us – it will come with the mix buses already in place and set up for X-Plane to use them; you can just add signal processing, etc.
What makes this tricky is: everyone needs a unique starter project or else multiple FMOD aircraft won’t be able to coexist. (And that would be sad – one of the really cool thing about FMOD-enhanced aircraft is that you can finally hear the AI aircraft. It adds a ton of depth and realism.)
Tyler is working on a download link that dynamically creates a unique FMOD starter document to avoid FMOD conflicts between AI aircraft. I’ll post when this is up and running.
In the meantime, the docs hopefully answer some questions about how aircraft like the Cessna work.
Right now FMOD can only be used to add sound to aircraft, but we are looking at adding FMOD to scenery, as well as our own ground vehicles.
“As of this writing, FMOD sound can only be integrated onto aircraft. We expect to support FMOD for scenery and plugins in the future.”
Plugin sound should be great Ben. Hope it will come soon
Thanks! What a welcome documentation! I’ve been reading it for the past hour and it seems it contains everything that’s needed, although I still feel the parts about mixing could be better explained by offering an example simple but completed project, even if it’s not the Cessna.
> everyone needs a unique starter project or else multiple FMOD aircraft won’t be able to coexist.
Does this would mean every time you want to start a project for a different aircraft you should base it on a fresh downloaded starter project? This could limit project reuse. If it’s a matter of having certain unique properties wouldn’t it be useful to get a command line tool to take an existing FMOD project and “make it unique”?
YES! You need to get a new starter project! In terms of “unique-ifying” projects, if there is a work-flow where this is getting to be a problem we can look at additional solutions; our starter download is designed to be -absolutely error-free- so that we don’t start with a big pile of screwed up FMOD projects. You can unique-ify by hand even, but it’s not trivial.
Note that if you have a series of related aircraft in a single folder, what you want to do is make a single big FMOD project, possibly using multiple banks to avoid loading things you don’t need.
Re: examples, we may not be able to post the IP of the Cessna (I’ll have to talk to Chris about that) but even if we can’t, we could probably do a video showing some of the techniques.
Thanks Ben,
I wasn’t talking about variations of the same aircraft, but using a previous project to kickstart a new one for an aircraft of the same “family”, for example using a 737-800 to build a 737-200. There could be many events in common and you’ll have to copy paste every one. But it was just a thought, we’ll cross that bridge when we get to it.
If sharing a project is not possible, videos with techniques would be most welcome!
Thanks again for the hard work your team has put into XP11, I’m really enjoying it, both as a developer and as a virtual pilot 🙂
Another question: What FMOD Studio versions are supported?
It looks to me like you need 1.08.14, but I’ll check with Chris.
FYI, I tried to build with 1.09 but X-Plane won’t find the GUIDs on the sound bank. Back to 1.08 and it works OK. I recall having read somewhere on the FMOD page that they weren’t binary-compatible.
Right – most likely the runtime has to be newer than (or the same intermediate version) as studio.
What can be said regarding sources for authentic sound files, Ben? It’s great to have a new sound mixer that can position sounds and enhance the environment, but one does need something to work with, something to mix. Is there a chance that there will be a selection of sound sets that are suitable, based largely on the engine type of the aircraft in question? Professional sound recordings of real aircraft aren’t something that a typical user can just go to the nearest FBO or airline and get samples. And presumably these samples have to be very specific, since they will need to be used in loops – and looping sound so that it doesn’t “throb” is a real challenge.
We have no plans to do this at this time. If you are working on a third party aircraft you still need to find your own sounds – the difference is that now you have a complete set of sound tools to work with.
Ah, but I’m not. I just push code for 3rd parties. When it comes to sounds, I’m more concerned about my own creation for personal use only. So I hope this concern is given some level of reconsideration. It’s nice to have a great set of tools, but with no decent source material for generic situations, it’s kind of pointless. Clearly we’ve already got the Cessna sounds that could probably be massaged for most light GA piston applications, but what about the PT6, or small turbojets, or high bypass fans of various sizes? What’s the secret to finding and adapting suitable sounds? T’is a hyooge part of the puzzle, and one I would hope LR could at least help facilitate.
It has always been the case that developers of games and simulations have to take care of their own sounds. The game engine only provides the means for playing sounds, but it’s not the engine’s developer’s task to provide addon developers with sounds.
Developers either have to record them on their own (and if they do payware, I’d expect them to invest that time or money), or to license sounds from professional sound providers.
Appreciate the lecture material, Mario, RE pro development.
However, for the FMOD aspect of X-Plane for *hobbyists,* payware sounds or recording same can be a burden too far.
Glad to hear at least the stock aircraft will eventually be updated to FMOD specs. I do hope that will be the case relatively early in the XP11 run.
Stock sounds can always be tweaked with the likes of Goldwave or Audacity to suit the tastes of a hobbyist or freeware developer, which is where my posts in this regard come from. Then again, how would I record XB-70 sounds if I ever wanted to release a payware XB-70?
What is happening in regards to adding FMOD sound to the existing default aircraft? Should that be expected in a future update?
We are working on this and they will be updated in the future as we get more sound.
Aha. 😉 “Sounds,” ahem, like LR has to fill their own sounds library. Same problem as I mentioned earlier for we tinkerers.
That has to be a challenge of sorts, and you could probably write a rather interesting blog post on the methods used, or perhaps even the vendors used as source. At the very least, given that Austin owns a PT6 equipped aircraft, you have an aircraft at LR’s disposal for recording very common turboprop sounds. That ought to be cool.
Naturally I’m watching this part of X-Plane 11 development with great interest. I would very much like to add more authentic sounds to my own jet creation – which only supports the ability to learn how to do it professionally. Looking forward to hearing more, as it happens. X-Plane 11 looks to be another long, energetic development experience. Thanks for all you guys are doing, Ben. Can’t say that enough.
What is the real reason for a unique starter project; some unique magic ID?
FMOD Studio uses GUIDs to refer to all of its internal objects, including banks and all sound objects (events, buses, etc.). The GUIDs allow you to put a sound in two banks and not have it be loaded twice.
The uniqueness has to be handled differently in two cases:
– The buses in your master bank MUST match ours, so that they are not loaded a second time; if the master bus were to be loaded a second time, FMOD would fail internally because it can support only one master bus per program. If the various sub-buses were loaded a second time, your sounds wouldn’t be piped into our buses and the sound volume sliders wouldn’t work.
So the buses have to all match GUIDs. Buuuuuuuut…
– The master bank must be unique – otherwise when we load two planes, we get a failure to load the bank due to a duplicate GUID! This is why people cloning the C172 sound into other aircraft get a hard crash if the C172 becomes an AI for their aircraft.
Since some GUIDs must match and some must be different, we’re automating the edit process of producing correct banks..this should prevent user error, some of which can be hard to detect until it’s too late.
Ben,
I’m not a developer but just curious about something from your post.
Does this mean that FMOD will stop me loading 2 copies of the C172 as AI planes? This seems it would duplicate those master buses.
Loading two Cessnas is not a problem. The sim recognizes the _same_ plane twice and avoids the double-load. It’s when you _copy_ that bank file that you get hosed.
“To use a dataref as a sound, simply add a custom parameter to your FMOD event and set its name to the dataref you’d like to use. Make sure to set the minimum and maximum to correlate the dataref’s range to FMOD.”
This may sound stupid, but better to ask than to guess. What exactly is the syntax for this as far as adding the range?
It’s not syntax. When you edit a parameter in FMOD, the numeric range are fields you fill in in the properties dialog box for the parameter. The only “text” you have to type in is the dataref name itself, similar to what you might have in an OBJ file or in some of the lighting fields in Plane-Maker.
Okay, I get it now. I was thinking that you had to name it with the dataref followed by the range (all in the name). It makes sense that it uses the range from the properties.
Thanks!
Ben, two quick questions:
1. Is it possible that sounds that are routed into the `Interior` bus are nevertheless heard from the outside of the aircraft? Is that an intended behavior? That would mean that in order to hear those exclusively on the interior, we’ll have to add a snapshot to isolate them using `inside_ratio`.
2. The docs don’t specify if you can use more than one EVENT_START_COND or EVENT_END_COND. If that’s legal, what’s the logic? (and/or).
PS: Insert here obligatory nag about the starter project 🙂
Hi Daniela,
1. When the aircraft is a _user_ aircraft, yes, by design. With the Cessna this didn’t require inside-ratio attenuation; the combination of the fall-off ratio on the sounds and the engine noise was enough. Technically if your’e outside your aircraft with the door open and the engine off, I’d expect you might here a sound in the cockpit if it’s loud enough.
2. You cannot use more than one start/end condition. The dataref logic is limited – if you really need something complex you can use a script-driven dataref. Most of our newer aircraft have XLua embedded so we can get simple derived logic easily.
PS I think Tyler may have finished and Chris is testing it now.
Totally makes sense, thanks!