FMOD is a high quality commercial sound engine and sound authoring environment for games. X-Plane 11 uses FMOD as its new sound engine; you can use FMOD’s authoring tools to create highly realistic sounds for your aircraft.
This document explains how X-Plane uses FMOD and how to integrate your FMOD sound projects into your aircraft. It is not an introduction or guide to FMOD itself. This document assumes that you are already familiar with FMOD, its technology, and its workflow.
If you have not already used FMOD, please first use FMOD’s documentation and tutorials to learn about:
- Sound events
As of this writing, FMOD sound can only be integrated onto aircraft. We expect to support FMOD for scenery and plugins in the future.
If you are upgrading your existing FMOD Studio project from X-Plane 11 to X-Plane 12, be sure to read the FMOD 2.0 upgrade notes.
A video tutorial is also available on getting started with FMOD sound with X-Plane 11.
Download the X-Plane Starter Project
FMOD requires each sound bank used with X-Plane to have its own globally unique identifier (GUID). It also requires that the main mix buses of the master bank of each aircraft have the same GUIDs.
FMOD Studio does not provide a user interface to edit GUIDs, so to make it easier to create a correctly authored third party aircraft with FMOD sound, we are providing all third-party developers with an FMOD starter project that is auto-configured with the standard mix buses but a new bank GUID.
Clicking the link below will generate a project just for you. Use this link once for each new project for a new aircraft that you want to create. You only need one FMOD project for a family of .acf files that share an aircraft folder, but you need a new project for each aircraft that has its own aircraft folder.
Download the FMOD Project Template (v1.08 - for XP11)
Download the FMOD Project Template (v2.02 - for XP12)
(Note that if you later want to add sounds for a separate aircraft, you’ll need to download a new starter project, which will contain a new GUID. If you accidentally ship a project that shares a GUID with another aircraft, and a user has both aircraft loaded, the conflict will cause the sim to error out and crash when the second aircraft is loaded.)
You will need FMOD Studio to author your project, which can be downloaded from the FMOD website:
- For X-Plane 11 use FMOD Studio 1.08.xx
- For X-Plane 12 use FMOD Studio 2.02.xx
Integrating Sound Into An Aircraft
An aircraft’s sounds are either provided by FMOD or by the legacy sound system from X-Plane 10 (based on OpenAL); you cannot mix and match them. When using FMOD, every sound in the aircraft must be provided by you (via FMOD), except for radio sounds that come from the outside world (E.g. the voice of ATC, marker beacon tones and morse code identifiers).
To use FMOD, your aircraft must have:
- A folder named “fmod” in your aircraft folder.
- A file named XXX.snd in that fmod folder, where XXX is the name of your Aircraft’s .acf file with the ACF extension removed. (Example: Cessna_172SP.snd)
- A text file named GUIDs.txt that maps FMOD object names to their GUIDs. (You can get this directly by exporting it from your FMOD project – you don’t need to write it by hand.)
- The master bank for your FMOD project, named “Master Bank.bank”. This comes from building your FMOD project.
You can also optionally use additional banks by putting them in the FMOD folder, but it is not necessary.
The .snd file is a text file that describes how the sounds in your banks will be attached to your aircraft. It is an X-Plane specific text file format that connects X-Plane to FMOD.
Using Multiple Banks
FMOD allows you to partition your events into multiple banks; the motivation for this is to allow X-Plane to load only the sounds it needs. For simple aircraft you will not need to do this. But, for example, if you ship your aircraft with multiple engine types (and multiple .acf files), you could put each type of engines’ sounds into a separate bank and load only the bank you need for that aircraft.
Banks other than the master bank are loaded by using a
REQUIRES_BANK directive. Every bank that is not a master bank whose objects are referenced by your .snd file must be loaded by a
The GUIDs.txt file that lists all GUIDs in your fmod folder should contain the GUIDs for every bank that you load. When you export GUIDs from FMOD Studio, the single GUIDs.txt file will contain every bank already.
Events: Associating Sounds With Your Aircraft
The way you make sound in your aircraft is to attach FMOD Events to your aircraft. The .snd file for your aircraft describes how the events are attached to your aircraft, where the sound source is located, and when it plays.
Events should not always be playing unless it is absolutely necessary! There is a CPU cost to every playing event even if it is not making any sound, so you should only start an event when it is needed. For example, once engines are completely off, stop the event!
Events are started and stopped by trigger conditions defined in your .snd file. There are two ways to do triggering:
- Dataref expressions. You can specify the conditions under which a dataref starts and stops in terms of a dataref changing its value. For example, you could start a dataref when the fuel flow is > 0 and stop it when the fuel flow is <= 0. This technique is good for creating sounds that are the result of things, e.g. the noise made by the engine turning.
- Commands. You can specify an event to play in response to a command being pressed. This technique is good for cockpit switches and other physical manipulations by the user; the commands will pick up switch movement from any source – mouse, joystick, custom hardware, etc.
When using datarefs, please be careful to use the result datarefs, not the cause datarefs. For example, if you are making an engine sound, something in
sim/flightmodel2/engine will tell you what the engine is actually doing, while something in
sim/cockpit2/ will tell you what the pilot is doing or seeing. Use
flightmodel2 so the engine makes sound based on what it is really doing, not what the indicators are doing.
See the .snd file format for specific directives to control triggering.
Sound event locations are specified in coordinates relative to the aircraft’s CG. The .snd file also has short-cuts to attach sounds directly to engines and the cockpit.
A sound event may be enabled for AI aircraft, or limited to only the user aircraft. Only include exterior sounds like engines for AI aircraft – X-Plane cannot correctly mix the interior sounds of AI aircraft.
Snapshots Are Events Too!
While this might not be obvious from using FMOD studio, snapshots are actually specialized events in FMOD. Therefore, to use a snapshot you must “attach” it to the aircraft just like a regular sound event, and it must be playing to affect the mix.
If you have a snapshot that must be continuously run, there is a .snd directive for an always-playing event (for the life of your aircraft being loaded), but it is better to stop snapshots when their mix effect is completely disabled, just like you would another sound.
For example, if you have a snapshot that muffles sound when inside the aircraft, stop the snapshot when the user is fully outside the aircraft.
Parameters: Controlling Sounds
Events in FMOD are controlled via parameters; besides the default parameters always available in FMOD, X-Plane allows you to use datarefs as the input parameters to your sound – this is how you customize how your events sound in real-time in response to the sim.
To use a dataref to modulate 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. Use the following format for the parameter name:
- X-Plane 11: The dataref name.
- X-Plane 12: Replace “/” with “.”.
You can use wild-cards in the dataref name for indices; when you do this the index of the dataref is taken from the attachment of the FMOD event in the .snd file. Use PARAM_DREF_IDX in the .snd file, and for the array subscript in your dataref use the following convention:
- X-Plane 11: Use “*”.
- X-Plane 12: Use “#”.
The intention of this feature is to let you build a single event for an engine and then place four instances in the .snd file with the dataref index mapping the engine sounds to the correct engine number in X-Plane. Without this, you would have to duplicate your engine just to change the parameter names to match the correct engine.
Providing a Master Bank
Your aircraft must provide a master bank with all of the standard buses.
In order for your FMOD project to work with X-Plane, follow these rules:
- ALWAYS start your project with a “starter project” from Laminar Research! We provide a download tool that makes a unique starter for you to customize that will be compatible with X-Plane.
- NEVER delete the standard buses that come with the project! If you delete them and create your own, they will not work even if the names are the same!
The Standard Busses
X-Plane’s project template comes with a standard set of buses which you must preserve for your FMOD project to work with X-Plane. The standard bus layout is:
|Exterior Unprocessed||bus:/Master/Exterior Unprocessed|
|Exterior Processed||bus:/Master/Exterior Processed/Aircraft|
Here is the intended use of each bus:
- Master. The master bus is the parent to all buses – it should have no signal processing; it exists to allow X-Plane to control the volume of all sounds at once.
- Radios. This bus will be used in the future for audio that the pilot hears over the radios via a headset.
- Copilot. This bus will be used in the future for audio of the copilot talking to the pilot over a headset.
- Interior. This is the bus for sounds inside the cockpit. Signal process only if (for example) there is an echo inside the aircraft.
- Exterior Unprocessed. This bus is the destination for exterior aircraft sounds that automatically sound muffled when the listener is inside due to swapping between two sets of recordings. Do not put any signal processing on this bus.
- Exterior Processed. This bus is the common destination for all sound that is outside of the aircraft and needs to be muted by signal processing when the pilot/listener is inside the cockpit. Put your muting signal processing on this bus!
- Aircraft. This bus is specific for “outside” aircraft sounds that need signal processing, e.g. engine records that are not muffled. This bus is routed to the more general Exterior Processed bus, so do not signal process this bus — the aircraft and environment are separated for UI control of levels.
- Environment. This is a sub-bus of the Exterior Processed bus that is used for environmental sounds, e.g. wind, birds, trucks, etc. Again, do not signal process here — the parent exterior processed bus does this.
For reference, this is the required GUIDs for each bus; use our starter project to ensure the GUIDs are correct. If your project will not load, you can check your GUIDs.txt file to see if a bus has the wrong GUID.
Required BUS GUIDs
Interior and Exterior Spaces
X-Plane provides standard tools and a standard setup to create differing sound based on whether the user is inside or outside of your aircraft. There are two basic audio techniques to create interiors and exteriors:
- Substitution. You can provide different sounds for the interior and exterior of your aircraft. For example, on our Cessna we have recordings of the engine from both inside and outside the aircraft, and we play different ones depending on the camera location. (This was the only technique available in X-Plane 10 and earlier.)
- Mixing. You can use the live sound processing capabilities of FMOD to change the signal processing on your audio in real-time based on the camera location. For example, you can use a low-pass filter to cut high frequencies from your sounds when inside the aircraft.
For the sounds you provide with your aircraft, you can pick between substitution and mixing. However, you must customize the mix bus to provide signal processing to muffle exterior sounds from inside the aircraft (if your aircraft has any interior sound proofing or sound shaping) so that AI aircraft and other environmental sounds change their processing. In other words: you provide the “interior” muffling since it is your aircraft, and the interior of an old GA aircraft and a modern airliner have very different sound proofing.
Defining Spaces on the ACF
Before you can customize your sound for interior and exterior views (with substitution or mixing), you must first know where the listener is – X-Plane provides sound spaces to let you do that.
A sound space is an arbitrary 3-d volume on your aircraft that the camera is within. You can define up to 64 sound spaces, but you do not have to use them, and you may only need one.
Sound spaces are defined as the union of one or more solid 3-d shapes; X-Plane provide axis aligned bounding boxes and spheres. You can overlap these shapes and use more than one of them to make arbitrary and unusual spaces.
Sound spaces can define transition widths; when tracking the camera into and out of your sound space, the distance inside the space (from its border) will form a smooth transition from outside to inside; this can help avoid sudden audio changes in your mix.
sim/operation/sound/inside_ratio provides a ratio indicating how far ‘inside’ each sound space you are. If sound space overlap, X-Plane will split the difference, e.g. you might have 0.5 for two sound spaces if you are fully inside both. If all sound spaces are 0, you are outside the aircraft.
The intention is for this dataref to be tied to the intensity of a snapshot to bring in a mix change. To do this you would:
- Make a snapshot for your mix change.
- Add a custom parameter matching a dataref, e.g.
- On the tab for that dataref custom parameter, add an automation track for intensity (disclose the master track of the snapshot, right-click on “intensity” and pick “add automation)”.
- Key-frame an increase in intensity with an increase in the dataref value.
Finally, please note that the inside_ratio datarefs take into account the camera location but not the status of doors or any openings.
- If the sound proofing of your aircraft becomes a lot worse when the door is open, apply a secondary mix change (besides the location snapshot) based on the door-opening datarefs or canopy datarefs.
- If the sound proofing loss due to the open door is localized (e.g. an open airliner door adversely affects sound proofing mostly near the door) consider breaking the interior into two spaces and applying the door loss to the snapshot for the door only.
Logic tracks can be cumulative – you can apply an intensity automation to your snapshot for both the inside ratio and the door open ratio.
Using Pre-Recorded Interior and Exterior Sounds
If you have specific pre-recorded sounds inside and outside the aircraft, you can wire them up in FMOD by:
- Creating sub-events inside the main event, one for inside, one for outside.
- Adding a custom dataref parameter for an inside ratio, door ratio, etc. for both the outer and inner events. (The inner event needs the parameter to key-frame, and the outer one needs it for X-Plane to drive.)
- Add automation to the master volume of the inner event to fade the event in and out with the dataref.
Events built in this manner should be sent to the Exterior Unprocessed bus to avoid processing that mutes the event when inside – your recorded sound already does this!
Using the Mixer For Interior Sounds
To use a mix bus to process sounds (e.g. to make an exterior recording to sound like an interior recording), connect it to the Aircraft bus.
Mixing Interior Sounds
Many sounds in the cockpit are very audible to the pilot in the aircraft but completely inaudible outside the aircraft, e.g. the click of switches on the panel. Wire these up to the interior bus and do not mark the sound as ‘for AI aircraft’.
Mixing Techniques and Notes
This section contains a some notes and tips we’ve learned while working with FMOD on our own aircraft.
Understanding Tracks and Parameters
FMOD is a little bit different from a traditional digital audio workstation (like ProTools) in that each sound event has multiple timelines instead of just one. Each time you add a parameter, you get a new set of tracks specific to that parameter.
When a sound (e.g. a sub-event or audio file region) sits inside a set of tracks, it will begin to play as soon as the play-head enters it, no matter what speed the play-head is moving.
This matters because the play-heads of parameters other than “time” do not move in real-time; rather they move arbitrarily based on X-Plane.
For example, let’s say you set up
sim/flightmodel2/engines/N1 as a custom dataref parameter – you now have a timeline based on the N1 speed of your left engine. If you put a sub-event or region in the timeline range from 20 to 30, then when N1 goes from 19 to 20%, the region will start playing, and then play forever as long as N1 stays in that range. If N1 levels out at 21%, the sound keeps playing.
This works because each sub-event or region has its own “playhead” that causes it to play in real-time. Typically there are two separate ways of working:
- If the track is a true “timeline” track, the play-head will exit the region about when its full duration has passed. Thus you can sequence consecutive regions.
- If the track is a parameter track, the play-head may sit in your event forever, and you will want your sound to loop.
Nested Mixing and Multiple Parameters
Given that each new parameter introduces a new independent set of tracks with a new independent set of play-heads, how do we mix and key-frame based on multiple parameters? Here are two techniques:
If you simply need to apply automation based on parameters, put all of your regions in a single set of tracks (for a single master source like the timeline or a given dataref) and only use the other track sets for automation by adding logic tracks. For example, you could make a flap actuator sound whose primary track is timeline (with a starting sound, a looping region, and an end, all sequenced on the main timeline) but then make a separate dataref-based parameter track to modulate the master volume (e.g. based on the door being open). The logic tracks will run based on the parameter, changing mix levels.
Another option is to use sub-events. Because each event has its own “playhead”, you can run a parent event’s play-head based on one dataref and a child-event’s play-head based on another.
For example, if you have a series of engine recordings varying by RPM, but you also have them at different viewer orientations, and another set for inside the aircraft (without orientation), you might:
- Create an outer event for the engines, with RPM, inside ratio, and orientation all as parameters.
- Build two sub-events within the inside-outside timeline (cross-faded), one each for the inside and outside event.
- Inside these sub-events, build cross-faded regions on the RPM tracks.
- Build multiple parallel in the RPM range for the outside recordings for all mic positions.
- Add a logic track to the event orientation built-in parameter for these tracks to fade up and down each mic orientation as the camera orientation moves.
Live Mixing From Inside X-Plane
You can mix your audio from FMOD studio while X-Plane is running – this lets you test your mix with real input parameters from X-Plane while flying. To do this:
- Launch X-Plane from the command line with
--fmod_live_updatein the prompt, e.g.
- Open your FMOD project.
- Once both are running, pick “Connect to Game” in the file menu and accept
localhostas the IP address.
Once you do this, you can change your mix levels and processing parameters in FMOD studio and hear the results immediately inside X-Plane.
Snapshot mixing via the live mixer is not fully functional: you can edit your snapshot mix levels and test them by moving the camera in X-Plane, but you cannot arbitrarily “play” a snapshot by simply hitting “play” in FMOD (the way you would if you were simply working on your project); in live update mode all event playback comes from X-Plane.
35 comments on “Using FMOD with X-Plane”
Hi Laminar! Many thanks for your XP updates. When do you plan to implement “FMOD for scenery/plugins” you’ve promissed while releasing the FMOD for XP back in the days? I think it’s a missing link to achieve the immersive world simulator.
Thank you for the great tutorial, especially the video guide it was really helpful.
I got all sounds working well, but I am unable to connect to X-Plane using the steps shown above – FMOD studio gives a Socket error message.
It would make it so much easier to mix the sounds down live opposed to making changes, copying over the two files and reloading the aircraft each time. Any Idea on the error?
Be sure to start X-Plane from the command line with `X-Plane.exe –fmod_live_update` (that’s a double minus sign and words separated by underscores). Also make sure your firewall isn’t blocking ports 9264 or 9265 and that they aren’t used by other applications.
“An aircraft’s sounds are either provided by FMOD or by the legacy sound system from X-Plane 10 (based on OpenAL); you cannot mix and match them. When using FMOD, every sound in the aircraft must be provided by you (via FMOD)”
Surely this can’t mean that every toggle switch requires a discreet event to trigger a click noise (e.g. landing light on/off, taxi light on/off, inverter on/off, generators on/off, avionics master on/off, fuel pumps on/off, yaw damper on/off, prop sync on/off, etc.). So how would a generic event such as “a switch being flipped” be triggered?
The event itself (as built on FMOD Studio) could be a single “switch_flip” that you could reuse for all switches, but on the .SND file you should build as many “Sound attachments” as switches you want to make noise, all of them referencing the same FMOD event (or different ones, for variety).
It might be tedious but this allows for flexibility in 3D positioning via the VEH_XYZ directives and use different trigger conditions for each one (commands vs datarefs).
Are we still using the 1.08.30 version of FMOD?
I’m just starting out with Fmod and have a basic engine sound created and working as per the tutorial however when I view the aircraft from the rear view say shit+6 or 8 I can’t hear the engines until I rotate around to the front? I’m not sure what I’ve done wrong?
Sorry I meant to add how do you fun fmod live through terminal on Mac? I’ve tried X-Plane.app –fmod_live_update but it just says command not found? Thanks
Im new to fmod and im trying to create different engine sounds for exterior/interior im trying to do with the subevent system but im having a hard time understanding, can someone explain me a little bit more how to achieve that?. And other thing is not clear to me is, how to create spaces. Thanks in advance Rodrigo.
whats the guid to “snapshot:/in_cockpit”?
1. “As of this writing, FMOD sound can only be integrated onto aircraft. We expect to support FMOD for scenery and plugins in the future”
Any idea of a timeline for this? 🙂
2. Is it (or will it be) possible to “blend” sounds from the “Sounds” library and a FMOD for same plane?
Eg. the Bell 412 engine sounds could be added “blade” sounds for the engine, but all the rest of the audio in the “Sounds” library is good.
3. Any planning for FMOD update from 1.08?
It’s possible to get Cessna 172 FMOD project file to understanding mixing and routing parameters? Whithout any sound. Just project?
That’s a great idea!
How do you change the range a sound woulld carry? I have just setup FMOD on my build project (medium size airliner), I’ve read all the documentation twice, I cannot find how to set the range (volume?) of the sounds. when I have the camera directly under the engines I can hear them, when I move about half a wingspan away, it’s silent as the moon.
oops, never mind I just found it! It’s in the master channel in the Event. Cheers!
For everyone running on Windows:
If you save this to a .txt file
(make sure your xplane directory is correct, mine is on the D-drive, it could be different for your install)
cd D:\SteamLibrary\steamapps\common\X-Plane 11\
then rename the file to something like XplaneWithFMOD.bat
Now you can just double click on the .bat file to start X-plane with FMOD updating.
Saves the hassle of going in the command promt every time 🙂
i installed fmod 1.08.18 for windows, like the tutorial said. however i can’t find the fmod.exe that’ll actually open the studio and now i can’t start on fmod. please tell me how to find the windows app in the folders or make a windows tutorial.
I get error mentioning the archive is broken right after I click on the X-Plane template.fspro, please help…
Hello! Can you to published learning FMOD studio project. Just it get us to meet to project structure.
Hello, I’m pulling my hair out at this point, this is my second try in as many years trying to get the hang of FMOD. So, I’m trying to build a sound pack for a payware aircraft and the dev is using SASL for sound. I have removed all *.wav files from the dev and have no sound at all. Then I added my FMOD folder with the *.SND, Masterbank, and GUIDS.txt but there is absolutely no sound. I have tried several different datarefs for the N1 using dataref tool and none of them work. Is this because the dev is using SASL for sound?
I am working on an FMOD Soundpack for the default/mSparks 747. However, the people i work with to develop the mSparks 747 keep telling me that the fmod is using up the CPU. Can you please help me understand why fmod is hogging the CPU and tell me how to fix it? The fmod is here: //forums.x-plane.org/index.php?/files/file/68696-boeing-747-400-fmod-soundpack/
I don’t think it does. I think that was because you had a bunch of errors in it, which you have fixed.
the link to the documentation and tutorial on this page does not work anymore (404):
This has been fixed!
Newbie with FMOD, ran through Jennifers vid’ and got an fmod build working. I have four .wav files and only one of them (prop ticker for a rotary) seems to work. All the other three seem to be getting obfuscated by default XP sounds. Now the prop was recorded at 22khz whilst the others were at 44khz. The engine start has a vocally lough “CONTACT” but am not hearing a whisper. Any advice welcome please. All sounds are fine during testing in fmod. Its an open cockpit (Avro 504) so I only require external sounds.
You can disable X-Plane default sounds by adding this line to the top of your .SND file:
As for sound formats, as far as I am aware all sounds inside of FMOD can be any format / type (these get bundled into the master bank file anyway). I have made 3 aircrafts with FMOD and I use .OGG files @ 44100 (.ogg uses better compression and much smaller file size) and they work flawlessly inside X-Plane.
I hope this helps a bit
Joe @ JRX Design
How can I fix the Zibo FMOD damage problem in xplane 11, 11.53 ?
Constant problems with ZIBO.
I just flew from MIA to JAX, no problems.
The next day as the cockpit displayed, the engines were idling at 19.5, then immediately started slowing down, until they shut off and rebooting, deleting the
ZIBO and reinstalling did not change the error.
Any ideas ?????
Some default aircraft (like the King Air) are making use of surround sound, while most addon aircrafts unfortunately do not.
How does the default King Air differ from the default Cessna regarding and would it be easy for addon developers to upgrade the sound capability of their aircraft so that surround sound is supported.
I am using 6 speakers (Front L/R, Side L/R, Rear L/R connected via analogue output to multiple amplifiers) and the default King Air sounds amazing on my system.
Hi Chris. Yes, the King Air was the first one where we experimented using a 5.1 bank. To enable that on your Studio project, you must change your project build preferences and set the desired surround speaker mode. In the case of the King Air it was set to 5.1 Surround. Make sure all your busses are using 5.1 as input and output format too.
Thank you for your very detailed reply.
However I wonder about FMOD 5.1 Setting.
It seems more like the 5.1 setting might also include 7.1?
There is sound on the side as well as the rear sound channels.
Since I use multiple amplifiers (one for front, one for side, oner for rear) this easy for me to verify by switching of an amplifier for the rear or side surround channel.
Anyways King Air sounds amazing, going back to the Cessna 172 is very different experience.
Keep up the great work.
Just saw the new Fmod 2.01 template is available, ready for XP12 – many thanks for that.
I tried using to 2.01 template to update an XP11 Fmod, but came unstuck with forward slashes in the datarefs seemingly being invalid.
Is the new template (used with Fmod Studio 2.01) compatible with XP11 aircraft?
The new template is for FMOD 2.01, which will be only supported on XP12. The link is there because we updated our Studio Project generator script to support both versions, but you don’t have where to run it yet.
Does anyone experienced a different sound feedback when starting from Cold & Dark or Startup Running the flight? I did. In the first case the sound result more muffled than the second.