Audio Conductor is a tool that enhances the usability of audio features (AudioClip/AudioSource) in Unity, providing greater convenience in managing and controlling audio assets. You can define AudioClip and related parameters in a cue-sheet/cue/track style.
The unit of play.
It has the following parameters:
- Name
- AudioClip
- Volume
- Volume range
- Pitch
- Pitch range
- Start sample
- End sample
- Loop start sample
- Loop
- Random weight
- Priority
- Fade-in/fade-out time
When loop is enabled, the track will play from the start sample to the end sample and then loop back from the loop start sample to the end sample. When loop is disabled, the track will stop after playing from the start sample to the end sample.
An object that groups tracks.
Playback by specifying the "name" or "index value" of the track.
It has the following parameters:
- Name
- Category ID
- Throttle type
- Throttle limit
- Volume
- Volume range
- Pitch
- Pitch range
- Play type
- Track list
There are two play types: sequential play and random play.
Sequential play plays the track list in order from the top.
Random play plays randomly selected tracks depending on the weight of each track.
An object that groups cues.
It has the following parameters:
- Name
- Throttle type
- Throttle limit
- Volume
- Pitch
- Cue list
It has the following parameters:
- Throttle type
- Throttle limit
- Category list
Any category can be defined. (e.g. BGM/SE/Voice)
Assigning AudioMixerGroup
to a category will set it as the output for AudioSource.
The volume range can be set to randomly increase or decrease the volume.
For example, if the volume is 0.5 and the volume range is 0.2, the actual volume will be randomly determined in the range of 0.4 to 0.6. (Value range 0.00 to 1.00)
Volume range can be set to cue/track.
The AudioSource volume is the value calculated by multiplying the cue-sheet/cue/track actual volume.
The Pitch range can be set to randomly increase or decrease the pitch.
For example, if the pitch is 1 and the pitch range is 0.02, the actual pitch will be randomly determined in the range of 0.98 to 1.02. (Value range 0.01 to 3.00)
Pitch range can be set for a cue/track.
The AudioSource pitch is the value calculated by multiplying the cue-sheet/cue/track actual pitch.
If pitch Invert is enabled, the value will be a negative number.
Throttle limit means "Limit of concurrent play". The number of audios that are allowed to be played at the same time. (0 is unlimited).
If a new play request is made while the limit is reached, it will be handled depending on the throttle type.
Throttle type means "Concurrent play control type". There are two throttle types: "priority order" and "first come, first served".
In the case of "priority order," if the priority of the new request is greater than or equal to the priority of the currently playing track, the track with the lowest priority is stopped and the new request is played. In the case of "first come, first served", the new request will be rejected.
The evaluation is made in order of cue, cue-sheet, category, and runtime settings.
It has the following parameters:
- Color definition list
Color definitions consist of name and color.
It can be associated with a cue/track when editing a cue-sheet.
For example, "Editing: red" and "Done: green" make edit status easier to understand.
- Unity 2021.3 or higher.
- Open the Package Manager from Window > Package Manager
- "+" button > Add package from git URL
- Enter the following
Or, open Packages/manifest.json and add the following to the dependencies block.
{
"dependencies": {
"jp.co.cyberagent.audioconductor": "https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor"
}
}
If you want to set the target version, write as follows.
To update the version, rewrite the version as described above.
If you don't want to specify a version, you can also update the version by editing the hash of this library in the package-lock.json file.
{
"dependencies": {
"jp.co.cyberagent.audioconductor": {
"version": "https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor",
"depth": 0,
"source": "git",
"dependencies": {},
"hash": "..."
}
}
}
You Create assets from Assets > Create > Audio Conductor.
This menu can also be opened from the context menu of the project view.
You create a runtime settings asset by selecting Settings.
Can create more than one of this asset, but only one can be used.
You edit it in the inspector.
You create a editor settings asset by selecting EditorSettings.
Only one of this asset should be created in a project.
You edit it in the inspector.
You create a cue-sheet assets by selecting CueSheetAsset.
This may be created as many times as needed.
You edit it in the editor window that open from the inspector. See Edit cue-sheet for more information.
The operation selection buttons vertically aligned on the left side switch between panes.
From the top: Edit cue-sheet parameters, Edit cues/tracks, Other operations.
In this pane, you edit the cue-sheet name, concurrent play control, volume, pitch, etc.
This pane consists of a multi-column list and an inspector.
At the top of the list is a toggle button to show/hide columns and a search field.
In this pane, you can add, delete and edit cues/tracks.
Add a cue/track from the context menu. Tracks can only be added with the parent cue selected.
You can also add a cue/track by drag-and-drop an AudioClip in project onto the list.
Remove cues/tracks from the context menu.
You can also remove them with the backspace key or delete key.
Some parameters of cues/tracks are shown on the list.
You can edit Values from pull-down menus or input fields.
When cues/tracks are selected, detailed parameters are displayed in the inspector. You can also preview the cue/track.
Operations currently provided are export/import.
You can export a cue-sheet to a csv file or import from a csv file.
An exported csv file will be named [CueSheetName].csv.
If each value over the value range when imported, it is rounded to within the value range. AudioClips are assigned if found by AssetDatabase.FindAssets
.
The first argument of AudioConductorInterface.Setup
specifies the runtime configuration asset.
The second argument is described in Dispose controller.
var settings = Resources.Load<AudioConductorSettings>("***");
AudioConductorInterface.Setup(settings, OnCueSheetUnused);
The first argument of AudioConductorInterface.CreateController
specifies the cue-sheet asset.
The second argument is the index value of the cue or the name of the cue.
The return value is an ICueController
instance, which can call methods such as play/stop/pause/resume.
An ITrackController
instance is returned when a play method is called. This instance can control the volume, pitch, current time-sample, and others, as well as set a callback for when audio stopped.
var cueSheetAsset = Resources.Load<CueSheetAsset>("***");
_controller = AudioConductorInterface.CreateController(cueSheetAsset, 0);
var trackController = _controller.Play(0);
trackController.AddStopAction(() => Debug.Log("Audio stopped."));
Keep the created ICueController
instance in the member field and dispose it when you are done using it.
If a controller is disposed during play, all related audios will be stopped.
If the disposed controller is the last controller in a cue-sheet, the callback specified in the second argument of AudioConductorInterface.Setup
is called. For example, use it to unload asset bundles
_controller.Dispose();
You import the sample resources by pressing the Import button from Package Manager > Audio Conductor > Samples.
When import is complete, open and run the sample scene.
Assets/Samples/AudioConductor/[VERSION]/Sample/SampleScene.unity
- A: Select a cue
- B: Select an index of a track
- C: Select a track name
- D: Play the cue selected in 1 depending on the play type
- E: Play the track selected in 2
- F: Play the track selected in 3
- G: Pause/resume the audio playing
- H: Stop all audios
- I: Dispose all
ICueController
- J: Control volumes
In order to control AudioMixer volume from scripts, you need to set in the AudioMixer inspector.
Parameter names can be changed from the Audio Mixer window.
Please see the following file:
This software is released under the MIT license.
You are free to use it within the scope of the license, but the following copyright and license notices are required.