Master Audio
Use the Master Audio integration when Ultimate Inventory System button feedback, pickups, Item Actions, and other Opsive sounds should play through Master Audio Sound Groups. The bridge replaces the default Opsive Audio Manager module, so existing Ultimate Inventory System components keep their normal audio fields while Master Audio controls the actual Variations, voices, buses, and spatial behavior.
The same shared bridge is used by Ultimate Inventory System and the Opsive character controllers. Import it once when both products are installed.
Supported package boundary
This page targets released Ultimate Inventory System Version 1/master. The checked-in Version 1 project is Ultimate Inventory System 1.3.0 with Opsive Shared 2.0.3. The current local Opsive bridge was verified with Master Audio 2024 v1.0.3 and its runtime calls use the audio APIs present in Opsive Shared 2.0.3.
The bridge package does not declare a minimum or maximum Master Audio version. Treat Master Audio 2024 v1.0.3 as the verified combination, then test the matching package from the Opsive Downloads page before migrating a production audio setup. Do not assume that a bridge built for Ultimate Inventory System Version 2 or a different Master Audio generation is interchangeable.
Master Audio also includes a small MA_Opsive.unitypackage in its third-party integrations folder. That package routes sounds only by Audio Clip name and does not contain the Master Audio Config workflow described here. Use the current Opsive MasterAudio.unitypackage download for released Ultimate Inventory System Version 1 instead of importing both bridges.
Before you begin
- Back up or commit the project before changing the global audio module.
- Install Master Audio and confirm that its own examples or a test Sound Group play without Ultimate Inventory System.
- Add and configure the Master Audio GameObject by following the Master Audio documentation.
- In Master Audio’s Group Mixer, create the Sound Groups that Ultimate Inventory System will request. Each Sound Group needs at least one playable Variation.
- Let the project compile before importing the Opsive bridge. The bridge directly references
DarkTonic.MasterAudio; importing it before Master Audio produces missing-namespace errors. - Download and import the Master Audio integration offered for the released Opsive product combination. If Ultimate Character Controller already imported the same bridge, do not import a second copy.
After import, the project should contain Master Audio Manager Module and Master Audio Config asset types in the Create > Opsive > Audio menu.
Route Opsive audio through Master Audio
The Audio Manager has one active module, so this change affects every Opsive system that uses it.
- Open Tools > Opsive > Ultimate Inventory System > Main Manager.
- Open Setup and, under Scene Setup, select Add Components if the scene does not already contain the shared Opsive components.
- In the Hierarchy, select the GameObject with the Audio Manager component. The standard Ultimate Inventory System setup places it on the
GameGameObject. - Use the MasterAudioManagerModule asset included with the integration, or create one with Create > Opsive > Audio > Master Audio Manager Module.
- Assign that asset to Audio Manager > Audio Manager Module.
- Keep Require Group Name enabled for an explicit setup. Every Ultimate Inventory System audio hook must then reference a Master Audio Config with Audio Group Name assigned.
Disabling Require Group Name enables a compatibility fallback: the bridge resolves an Audio Clip and asks Master Audio for a Sound Group with exactly the same name. It still does not play that clip directly. Use this only when the Master Audio Sound Groups already follow the Audio Clip filenames.
Connect an Ultimate Inventory System button sound
This example routes an inventory button through a Master Audio Sound Group named UIS UI Click.
- In Master Audio, create the
UIS UI ClickSound Group and add one or more click Variations. Configure the group as 2D because Ultimate Inventory System button audio is requested at a neutral world position. - In the Project window, select Create > Opsive > Audio > Master Audio Config and name the asset
UISButtonClickMasterAudio. - Set Audio Group Name to
UIS UI Click. - Leave Variation set to (Random Variation) to let Master Audio choose, or select one Variation when this interaction must always use the same sound. [Type In] exposes Variation Name for a Variation that cannot be listed.
- Use the inherited Audio Modifier only for Volume Override, Pitch Override, or Delay Override when this Ultimate Inventory System use needs to differ from the Sound Group defaults.
- Open the Ultimate Inventory System Button Audio asset used by the inventory control and assign the new config to Click Config. Assign a separate config to Select Config when selection should use another Sound Group.
- Confirm that the control has Button Audio Handler and that its Button Audio field references this Button Audio asset.
With Require Group Name enabled, Click Clip and Select Clip are optional for the Master Audio route because the Sound Group supplies the Variations. Keeping direct clips can still make it easier to return to the default Opsive audio module later.
Connect pickups and other Ultimate Inventory System sounds
The same config pattern works anywhere Ultimate Inventory System exposes an Audio Config.
- On a Health Potion pickup, assign Master Audio Config assets to Audio Config, Fail Audio Config, and Partial Pickup Audio Config for distinct success, full-Bag, and partial-pickup Sound Groups.
- On a Button Audio asset, use Click Config and Select Config for submit and selection feedback.
- In an Audio Clip Set used by an Item Action or drag-and-drop action, use a Master Audio Config for each entry that needs a different Sound Group or Variation.
Master Audio decides whether these groups are 2D or 3D. UI groups are normally 2D. Pickup and world-action groups can be 3D because the bridge sends their transform or world position to Master Audio.
Changing Audio Manager Module is not per sound. Audit every Opsive audio field in the project before removing the default module, especially when Require Group Name is enabled. An unmigrated direct Audio Clip will otherwise be silent.
Editor checkpoint
Before entering Play Mode, confirm that:
- Master Audio compiles before the Opsive bridge and the scene has an active Master Audio GameObject;
- only one copy of
MasterAudioManagerModuleandMasterAudioConfigis present; - the scene has one active Opsive Audio Manager with MasterAudioManagerModule assigned to Audio Manager Module;
- Require Group Name matches the chosen explicit-config or clip-name fallback workflow;
- every explicit Master Audio Config has a valid Audio Group Name;
- a selected Variation belongs to that Sound Group, or Variation is left random intentionally;
- each Sound Group has at least one playable Variation;
- Ultimate Inventory System button, pickup, and Item Action fields reference the intended configs; and
- UI groups are 2D while positional groups have the intended Master Audio distance and spatial settings.
Verify in Play Mode
- Open the Ultimate Inventory System Main Menu and select a configured Item View Slot. Confirm that its selection Sound Group plays once.
- Submit the slot or a configured button. Confirm that Master Audio shows a voice in the expected click Sound Group.
- Repeat the click several times. A random config should use the group’s Variation rules; a specific Variation should remain fixed.
- Pick up a Health Potion. Confirm that the success group plays at the pickup position.
- Fill the Bag and repeat the pickup. Confirm that the fail group plays instead of the success group.
- Trigger one Item Action or drag-and-drop sound that uses an Audio Clip Set. Confirm that it also routes through Master Audio.
- Test a sound that has not yet been migrated. With Require Group Name enabled it should remain silent, which identifies another hook that needs a config.
- Reload the scene and repeat one UI and one world sound to confirm that both the Master Audio GameObject and Opsive Audio Manager initialize in the real scene order.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
Importing the bridge creates DarkTonic.MasterAudio compile errors |
Check whether Master Audio is installed and compiling before the bridge scripts. | Install the supported Master Audio package first, remove the incomplete bridge copy, and reimport the matching Opsive package. |
| Master Audio Config or Require Group Name is missing | Check whether the project imported Master Audio’s bundled MA_Opsive.unitypackage instead of the current Opsive bridge. |
Remove the older bridge files and import the released MasterAudio.unitypackage from Opsive Downloads. |
| No Opsive sound plays after assigning the module | Check Audio Manager Module, the Master Audio GameObject, and the Console. | Assign the included MasterAudioManagerModule asset, keep Master Audio active, and resolve its first runtime error. |
| A direct Audio Clip used to work but is now silent | Check Require Group Name and whether the Ultimate Inventory System field has a Master Audio Config. | Assign a config with Audio Group Name, or disable the requirement only when a same-named Sound Group exists for the clip. |
| Audio Group Name has no useful choices | Check whether the intended Master Audio GameObject and Sound Groups exist in the current scene. | Create or import the Sound Groups, then reselect the config so its Inspector can find them. |
| The selected Variation does not play | Compare Variation or Variation Name with the children of the chosen Sound Group. | Select an existing Variation or return to (Random Variation). |
| UI audio is positional, quiet, or changes with the camera | Check the selected Master Audio Sound Group’s spatial settings. | Configure the UI group as 2D; Opsive Audio Config spatial fields are not what drives the Master Audio Variation. |
| One Ultimate Inventory System sound works but other Ultimate Inventory System sounds are silent | Check every Button Audio, pickup, Audio Clip Set, and other Audio Config field. | Migrate each hook because the Audio Manager module is global. |
| Two copies of the bridge produce duplicate-type errors | Check for both the shared Opsive integration and Master Audio’s bundled MA_Opsive folder. |
Keep one bridge package that matches the documented release boundary and remove the duplicate. |
| Stopping one sound also stops another on the same object | Check whether both sounds were attached to the same transform. | Use separate playback transforms or a project-specific module when sounds need independent stopping. The supplied bridge stops all Master Audio sounds associated with the transform. |
Related pages
- Ultimate Inventory System audio workflow
- Item Pickups
- Built-in Item Actions
- Item View Slots
- Integrations
- Shared Opsive Audio Manager
- Character Controller Master Audio integration
- Master Audio Sound Groups
Developer and runtime reference
The bridge supplies Opsive.Shared.Integrations.MasterAudio.MasterAudioManagerModule, which derives from Opsive.Shared.Audio.AudioManagerModule, and MasterAudioConfig, which derives from AudioConfig. Ultimate Inventory System continues to call Opsive.Shared.Audio.AudioManager; changing the manager module redirects those existing calls without changing Ultimate Inventory System components.
For transform playback the module calls MasterAudio.PlaySound3DAtTransform. For positioned playback it calls MasterAudio.PlaySound3DAtVector3. Audio Group Name supplies the Sound Group, and Variation optionally supplies one exact Variation. If a Master Audio call neither plays nor schedules a sound, the bridge returns PlayResult.None.
The bridge applies volume, pitch, and delay overrides from the individual play request first, then from the Master Audio Config. Master Audio owns looping, buses, voice limits, spatial blend, reverb, and the Variation Audio Sources. The inherited Opsive fields for Audio Source prefabs, sharing or replacing Audio Sources, output mixer, loop, stereo pan, spatial blend, and reverb are not consumed by this module.
This integration routes Opsive sound-effect playback. It does not turn Ultimate Inventory System audio fields into Master Audio playlists or control a Playlist Controller.
Both Stop overloads call MasterAudio.StopAllSoundsOfTransform and return no Audio Source, so stopping by config or PlayResult is not isolated to one Variation. Account for that behavior when multiple long-running sounds share a transform.
The current local bridge package was built against Master Audio 2024 v1.0.3 and Opsive Shared 2.1.0. Source comparison confirms that the Audio Manager, Audio Config, Audio Clip Info, modifier, and PlayResult APIs it uses are present in the released Ultimate Inventory System Version 1 Opsive Shared 2.0.3 checkout. Because the package has no formal third-party version constraint, compile and verify this minimal workflow before converting all project audio.