{"id":20749761,"url":"https://github.com/cyberagentgameentertainment/audioconductor","last_synced_at":"2025-09-26T15:31:22.446Z","repository":{"id":194435379,"uuid":"687865729","full_name":"CyberAgentGameEntertainment/AudioConductor","owner":"CyberAgentGameEntertainment","description":"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.","archived":false,"fork":false,"pushed_at":"2024-07-19T06:21:47.000Z","size":30424,"stargazers_count":84,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-08T09:06:03.543Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyberAgentGameEntertainment.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-06T07:05:26.000Z","updated_at":"2025-03-25T08:01:24.000Z","dependencies_parsed_at":"2024-11-17T08:41:23.307Z","dependency_job_id":null,"html_url":"https://github.com/CyberAgentGameEntertainment/AudioConductor","commit_stats":null,"previous_names":["cyberagentgameentertainment/audioconductor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CyberAgentGameEntertainment/AudioConductor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentGameEntertainment%2FAudioConductor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentGameEntertainment%2FAudioConductor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentGameEntertainment%2FAudioConductor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentGameEntertainment%2FAudioConductor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberAgentGameEntertainment","download_url":"https://codeload.github.com/CyberAgentGameEntertainment/AudioConductor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberAgentGameEntertainment%2FAudioConductor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277100568,"owners_count":25761016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-26T02:00:09.010Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T08:24:26.469Z","updated_at":"2025-09-26T15:31:17.435Z","avatar_url":"https://github.com/CyberAgentGameEntertainment.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n  \u003cimg width=500 src=\"./Images/logo_white.png#gh-dark-mode-only\" alt=\"AudioConductor\"\u003e\n  \u003cimg width=500 src=\"./Images/logo_color.png#gh-light-mode-only\" alt=\"AudioConductor\"\u003e\n\u003c/p\u003e\n\n# Audio Conductor\n\n[![license](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE.md)\n[![license](https://img.shields.io/badge/PR-welcome-green.svg)](https://github.com/CyberAgentGameEntertainment/AudioConductor/pulls)\n[![license](https://img.shields.io/badge/Unity-2021.3-green.svg)](#Requirements)\n\n**Docs** ([English](README.md), [日本語](README_JA.md))\n\nAudio Conductor is a tool that enhances the usability of audio features (AudioClip/AudioSource) in Unity, providing greater convenience in managing and controlling audio assets.\nYou can define AudioClip and related parameters in a cue-sheet/cue/track style.\n\n## Table of Contents\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n- [Concept](#concept)\n  - [Track](#track)\n  - [Cue](#cue)\n  - [Cue-sheet](#cue-sheet)\n  - [Runtime settings](#runtime-settings)\n  - [Category](#category)\n  - [Volume](#volume)\n  - [Pitch](#pitch)\n  - [Throttle type/Throttle limit](#throttle-typethrottle-limit)\n  - [Editor settings](#editor-settings)\n- [Setup](#setup)\n  - [Requirements](#requirements)\n  - [Install](#install)\n- [Create setting assets](#create-setting-assets)\n  - [Create runtime settings asset](#create-runtime-settings-asset)\n  - [Create editor settings asset](#create-editor-settings-asset)\n  - [Create cue-sheet assets](#create-cue-sheet-assets)\n- [Edit cue-sheet](#edit-cue-sheet)\n  - [Edit cue-sheet parameters](#edit-cue-sheet-parameters)\n  - [Edit cues/tracks](#edit-cuestracks)\n  - [Other operations](#other-operations)\n    - [Export/Import](#exportimport)\n- [Play](#play)\n  - [Setup runtime settings](#setup-runtime-settings)\n  - [Create controller](#create-controller)\n  - [Dispose controller](#dispose-controller)\n- [Samples](#samples)\n  - [Import sample resources](#import-sample-resources)\n  - [Sample scene](#sample-scene)\n  - [AudioMixer volume control](#audioMixer-volume-control)\n- [License](#license)\n\n\u003c/details\u003e\n\n## Concept\n\n### Track\n\nThe unit of play.  \nIt has the following parameters:  \n\n- Name\n- AudioClip\n- Volume\n- Volume range\n- Pitch\n- Pitch range\n- Start sample\n- End sample\n- Loop start sample\n- Loop\n- Random weight\n- Priority\n- Fade-in/fade-out time\n\nWhen 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.  \n\n### Cue\n\nAn object that groups tracks.  \nPlayback by specifying the \"name\" or \"index value\" of the track.  \nIt has the following parameters:  \n\n- Name\n- Category ID\n- Throttle type\n- Throttle limit\n- Volume\n- Volume range\n- Pitch\n- Pitch range\n- Play type\n- Track list\n\nThere are two play types: sequential play and random play.  \nSequential play plays the track list in order from the top.  \nRandom play plays randomly selected tracks depending on the weight of each track.  \n\n### Cue-sheet\n\nAn object that groups cues.  \nIt has the following parameters:  \n\n- Name\n- Throttle type\n- Throttle limit\n- Volume\n- Pitch\n- Cue list\n\n### Runtime settings\n\nIt has the following parameters:  \n\n- Throttle type\n- Throttle limit\n- Category list\n\n### Category\n\nAny category can be defined. (e.g. BGM/SE/Voice)  \nAssigning `AudioMixerGroup` to a category will set it as the output for AudioSource.  \n\n### Volume\n\nThe volume range can be set to randomly increase or decrease the volume.  \nFor 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)  \nVolume range can be set to cue/track.  \nThe AudioSource volume is the value calculated by multiplying the cue-sheet/cue/track actual volume. \n\n### Pitch\n\nThe Pitch range can be set to randomly increase or decrease the pitch.\nFor 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)  \nPitch range can be set for a cue/track.  \nThe AudioSource pitch is the value calculated by multiplying the cue-sheet/cue/track actual pitch.  \nIf pitch Invert is enabled, the value will be a negative number.  \n\n### Throttle type/Throttle limit\n\nThrottle limit means \"Limit of concurrent play\". The number of audios that are allowed to be played at the same time. (0 is unlimited).  \nIf a new play request is made while the limit is reached, it will be handled depending on the throttle type.  \n\nThrottle type means \"Concurrent play control type\". There are two throttle types: \"priority order\" and \"first come, first served\".  \nIn 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.\n\nThe evaluation is made in order of cue, cue-sheet, category, and runtime settings.  \n\n### Editor settings\n\nIt has the following parameters:  \n\n- Color definition list \n\nColor definitions consist of name and color.  \nIt can be associated with a cue/track when editing a cue-sheet.  \nFor example, \"Editing: red\" and \"Done: green\" make edit status easier to understand.  \n\n## Setup\n\n### Requirements\n\n* Unity 2021.3 or higher.\n\n### Install\n\n1. Open the Package Manager from Window \u003e Package Manager\n2. \"+\" button \u003e Add package from git URL\n3. Enter the following\n    * https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/install_01.png\" alt=\"Package Manager\"\u003e\n\u003c/p\u003e\n\nOr, open Packages/manifest.json and add the following to the dependencies block.  \n\n```json\n{\n    \"dependencies\": {\n      \"jp.co.cyberagent.audioconductor\": \"https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor\"\n    }\n}\n```\n\nIf you want to set the target version, write as follows.  \n\n* https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor#1.0.0\n\nTo update the version, rewrite the version as described above.  \nIf 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.  \n\n```json\n{\n  \"dependencies\": {\n      \"jp.co.cyberagent.audioconductor\": {\n      \"version\": \"https://github.com/CyberAgentGameEntertainment/AudioConductor.git?path=/Packages/AudioConductor\",\n      \"depth\": 0,\n      \"source\": \"git\",\n      \"dependencies\": {},\n      \"hash\": \"...\"\n    }\n  }\n}\n```\n\n## Create setting assets\n\nYou Create assets from **Assets \u003e Create \u003e Audio Conductor**.  \nThis menu can also be opened from the context menu of the project view.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/create_assets_01.png\" alt=\"Create Assets\"\u003e\n\u003c/p\u003e\n\n### Create runtime settings asset\n\nYou create a runtime settings asset by selecting **Settings**.  \nCan create more than one of this asset, but only one can be used.  \nYou edit it in the inspector.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/create_assets_02.png\" alt=\"Runtime Asset\"\u003e\n\u003c/p\u003e\n\n### Create editor settings asset\n\nYou create a editor settings asset by selecting **EditorSettings**.  \nOnly one of this asset should be created in a project.  \nYou edit it in the inspector.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/create_assets_03.png\" alt=\"Editor Asset\"\u003e\n\u003c/p\u003e\n\n### Create cue-sheet assets\n\nYou create a cue-sheet assets by selecting **CueSheetAsset**.  \nThis may be created as many times as needed.  \nYou edit it in the editor window that open from the inspector. See [Edit cue-sheet](#edit-cue-sheet) for more information.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/create_assets_04.png\" alt=\"CueSheet Asset\"\u003e\n\u003c/p\u003e\n\n## Edit cue-sheet\n\nThe operation selection buttons vertically aligned on the left side switch between panes.  \nFrom the top: [Edit cue-sheet parameters](#edit-cue-sheet-parameters), [Edit cues/tracks](#edit-cuestracks), [Other operations](#other-operations).  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/edit_cuesheet_01.png\" alt=\"Select Pane\"\u003e\n\u003c/p\u003e\n\n### Edit cue-sheet parameters\n\nIn this pane, you edit the cue-sheet name, concurrent play control, volume, pitch, etc.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/edit_cuesheet_02.png\" alt=\"Edit CueSheet Parameters\"\u003e\n\u003c/p\u003e\n\n### Edit cues/tracks\n\nThis pane consists of a multi-column list and an inspector.  \nAt the top of the list is a toggle button to show/hide columns and a search field.  \nIn this pane, you can add, delete and edit cues/tracks.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/edit_cuesheet_03.png\" alt=\"Edit Cues/Tracks\"\u003e\n\u003c/p\u003e\n\n#### Add cues/tracks\n\nAdd a cue/track from the context menu. Tracks can only be added with the parent cue selected.  \nYou can also add a cue/track by drag-and-drop an AudioClip in project onto the list.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/edit_cuelist_01.png\" alt=\"Add Cues/Tracks\"\u003e\n\u003c/p\u003e\n\n#### Remove cues/tracks\n\nRemove cues/tracks from the context menu.  \nYou can also remove them with the backspace key or delete key.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/edit_cuelist_02.png\" alt=\"Remove Cues/Tracks\"\u003e\n\u003c/p\u003e\n\n#### Edit cue/track parameters\n\nSome parameters of cues/tracks are shown on the list.  \nYou can edit Values from pull-down menus or input fields.  \nWhen cues/tracks are selected, detailed parameters are displayed in the inspector. You can also preview the cue/track.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"50%\" src=\"./Images/edit_cuelist_03.png\" alt=\"Edit Cues/Tracks in List\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"50%\" src=\"./Images/edit_cuelist_04.png\" alt=\"Edit Cues/Tracks in Inspector\"\u003e\n\u003c/p\u003e\n\n### Other operations\n\nOperations currently provided are export/import.  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"70%\" src=\"./Images/edit_cuesheet_04.png\" alt=\"Other Operations\"\u003e\n\u003c/p\u003e\n\n#### Export/Import\n\nYou can export a cue-sheet to a csv file or import from a csv file.  \nAn exported csv file will be named _[CueSheetName]_.csv.  \nIf each value over the value range when imported, it is rounded to within the value range. AudioClips are assigned if found by `AssetDatabase.FindAssets`.  \n\n## Play\n\n### Setup runtime settings\n\nThe first argument of `AudioConductorInterface.Setup` specifies the runtime configuration asset.  \nThe second argument is described in [Dispose controller](#dispose-controller).  \n\n```cs\nvar settings = Resources.Load\u003cAudioConductorSettings\u003e(\"***\");\nAudioConductorInterface.Setup(settings, OnCueSheetUnused);\n```\n\n### Create controller\n\nThe first argument of `AudioConductorInterface.CreateController` specifies the cue-sheet asset.  \nThe second argument is the index value of the cue or the name of the cue.  \nThe return value is an `ICueController` instance, which can call methods such as play/stop/pause/resume.  \nAn `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.  \n\n```cs\nvar cueSheetAsset = Resources.Load\u003cCueSheetAsset\u003e(\"***\");\n_controller = AudioConductorInterface.CreateController(cueSheetAsset, 0);\nvar trackController = _controller.Play(0);\ntrackController.AddStopAction(() =\u003e Debug.Log(\"Audio stopped.\"));\n```\n\n### Dispose controller\n\nKeep the created `ICueController` instance in the member field and dispose it when you are done using it.  \nIf a controller is disposed during play, all related audios will be stopped.  \nIf 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\n\n```cs\n_controller.Dispose();\n```\n\n## Samples\n\n### Import sample resources\n\nYou import the sample resources by pressing the Import button from **Package Manager \u003e Audio Conductor \u003e Samples**.  \nWhen import is complete, open and run the sample scene.  \n\n```\nAssets/Samples/AudioConductor/[VERSION]/Sample/SampleScene.unity\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./Images/sample_01.png\" alt=\"Import Sample\"\u003e\n\u003c/p\u003e\n\n### Sample scene\n\n- A: Select a cue\n- B: Select an index of a track\n- C: Select a track name\n- D: Play the cue selected in 1 depending on the play type\n- E: Play the track selected in 2\n- F: Play the track selected in 3\n- G: Pause/resume the audio playing\n- H: Stop all audios\n- I: Dispose all `ICueController`\n- J: Control volumes\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./Images/sample_02.png\" alt=\"Sample Scene\"\u003e\n\u003c/p\u003e\n\n### AudioMixer volume control\n\nIn order to control AudioMixer volume from scripts, you need to set in the AudioMixer inspector.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./Images/sample_03.png\" alt=\"Expose Volume\"\u003e\n\u003c/p\u003e\n\nParameter names can be changed from the Audio Mixer window.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%\" src=\"./Images/sample_04.png\" alt=\"Rename Parameter\"\u003e\n\u003c/p\u003e\n\nPlease see the following file:\n\n- [AudioMixerVolumeControlSample.cs](../Packages/AudioConductor/Samples~/Sample/AudioMixerVolumeControlSample.cs)\n- [SampleAudioMixer.mixer](../Packages/AudioConductor/Samples~/Sample/Setting/SampleAudioMixer.mixer)\n\n## License\n\nThis software is released under the MIT license.  \nYou are free to use it within the scope of the license, but the following copyright and license notices are required.  \n\n* [LICENSE.md](/LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberagentgameentertainment%2Faudioconductor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyberagentgameentertainment%2Faudioconductor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberagentgameentertainment%2Faudioconductor/lists"}