# Change output type in the game

**URL:** <https://qa.fmod.com/t/change-output-type-in-the-game/22448>\
**Category:** FMOD Engine\
**Created:** [December 23, 2024, 4:33pm UTC](https://qa.fmod.com/t/change-output-type-in-the-game/22448 "2024-12-23T16:33:38Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Leah\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/leah_fmod/32/3685_2.png) [@Leah\_FMOD](https://qa.fmod.com/u/Leah_FMOD)\
**Post date:** [January 2, 2025, 6:03am UTC](https://qa.fmod.com/t/change-output-type-in-the-game/22448/2 "2025-01-02T06:03:50Z")

</div>

Apologies for the delayed response over the new years break.

Changing the output device/driver itself is fairly straightforward - you can use [System::setDriver](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_setdriver) to set the device FMOD is outputting to. [System::getNumDrivers](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_getnumdrivers) and [System::getDriverInfo](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_getdriverinfo) can be used in conjunction to enumerate available devices. With the FMOD for Unity plugin, the relevant call might look something like this:

```auto
FMOD.System coresystem;
FMODUnity.RuntimeManager.StudioSystem.getCoreSystem(out coresystem);
coresystem.setDriver(3);

```

As for changing platform builds with different speaker formats (i.e. headphones/2.0, 5.1, 7.1), that’s a little more involved. The easiest way to do it, assuming the source assets are the same across all platform builds, is to enable the [“Build metadata and assets to separate banks”](https://fmod.com/docs/2.02/studio/advanced-topics.html#separating-metadata-and-assets-in-built-banks) setting in FMOD Studio’s build preferences. Then, at runtime, you can keep all asset banks loaded, while unloading the currently loaded metadata banks and loading the new ones with the target speaker format. The simplest way to handle this is to use [RuntimeManager.LoadBank()](https://www.fmod.com/docs/2.02/unity/api-runtimemanager.html#loadbank) and [RuntimeManage.UnloadBank()](https://www.fmod.com/docs/2.02/unity/api-runtimemanager.html#unloadbank), and [RuntimeManage.HasBankLoaded()](https://www.fmod.com/docs/2.02/unity/api-runtimemanager.html#hasbankloaded) can be used to query the loading state of a given bank.

Note, however, that unloading all metadata banks includes the master bank, and as a result all existing events will be stopped and release, so keeping track of the events that need to persist through the swap (ambience, music, etc.) is a good idea.

You can read more about how to handle changing audio configurations in the relevant section of the Studio docs: [16.16 Setting Up Different Audio Configurations for your Game](https://fmod.com/docs/2.02/studio/advanced-topics.html#setting-up-different-audio-configurations-for-your-game)

---

_[View the full topic](https://qa.fmod.com/t/change-output-type-in-the-game/22448)._
