Help us understand the problem. What is going on with this article?

Unityアセット MASTER AUDIO の使い方

image.png

マニュアルで紹介されている機能を、自分用で翻訳・まとめたものです。

自信のない箇所は (?) がついています。

マニュアル:MASTER AUDIO
ドキュメント:MASTER AUDIO Documentation
アセットストア:Master Audio: AAA Sound Solution
ビデオ:Master Audio 2.7 Unity plugin - streamlined workflow & improved pro mixer!

サウンドを再生する

コードから再生する

参考:Triggering Audio With Code!

名前空間

using DarkTonic.MasterAudio; 

基本的に以下のメソッドを呼ぶので良い(?)

MasterAudio.PlaySound(string soundGroupName, float volumePercentage, float pitch, float delaySoundTime, string variationName);

その他のシチュエーション

以下はPlaySound()と同じだが、 PlaySoundResult objectを返さないためGC Allocが発生しない。

MasterAudio.PlaySoundAndForget(string sType, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

以下は渡したVector3でサウンドを再生する

MasterAudio.PlaySound3DAtVector3(string sType, Vector3 sourcePosition, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

以下は、PlaySound3DAtVector3()と同じだが、 PlaySoundResult objectを返さない。

MasterAudio.PlaySound3DAtVector3AndForget(string sType, Vector3 sourcePosition, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

以下は渡した特定のTransformにてサウンドを再生する。

MasterAudio.PlaySound3DAtTransform(string sType, Transform sourceTrans, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

PlaySound3DAtTransformと同じだが、サウンド再生中は位置を追跡し続ける。

MasterAudio.PlaySound3DFollowTransform(string sType, Transform sourceTrans, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

PlaySound3DFollowTransform()と同じだが、 PlaySoundResult objectを返さない。

MasterAudio.PlaySound3DFollowTransformAndForget(string sType, Transform sourceTrans, float volumePercentage, float? pitch, float delaySoundTime, string variationName);

PlaySoundResultObject

PlaySoundResult objectは再生後のコールバックを実行する際に必要。

PlaySoundResult objectには以下のプロパティがある。

  • SoundPlayed (boolean):スケジュールされているか、再生に失敗しなければTrueを返す。
  • SoundScheduled (boolean):遅延して呼ぶ設定をしている場合にFalseを返す。
  • ActingVariation (SoundGroupVariation):とりあえず現状は必要でなさそう。良く分からない。ここでボリュームをセットするな的な事が書いてある。

コードなしで再生する

参考:Triggering Audio Without Writing Code!

コードなしで音声を再生する場合、GameObjectにコンポーネントを付与する必要がある。

Ambient Sound

image.png

Event Sounds

参考:Event Sounds

Monobehavior関係でサウンド再生を呼び出せるらしい。
OnEnable()、OnTriggerEnter()…etc

image.png

Button Clicker

NGUI用なので使用することはほぼないでしょう。ボタン音であれば、EventSoundsコンポーネントを使用するので良さそうです。

Footstep Sounds

参考:Footstep Sounds
collision / triggers系の処理で、Event Soundsより細かいことができるものらしい。

image.png

Mechanim State Sounds

参考:Mechanim State Sounds

メカ二ムの状態に合わせてサウンドを再生できる。

Mechanim State Custom Events

参考:Mechanim State Custom Events

概要をパッと読んだだけでは、Mechanim State Soundsと違いがよく分からなかった。

サウンドを停止する

MasterAudio.StopAllOfSound(string soundGroupName);

選択されたグループのサウンドを全て停止

MasterAudio.FadeOutAllOfSound(string soundGroupName, float fadeTime);

選択したグループのサウンドを指定時間でフェード

音量を変更する

参考:Triggering Audio With Code!

MasterAudio.MasterVolumeLevel

0~1までの値をセットする。Master Mixer Volumeを操作する。

MasterAudio.GetGroupVolume(string soundType);

選択したグループ音量を取得する

MasterAudio.SetGroupVolume(string soundType, float volume);

選択したグループ音量をセットする

MasterAudio.MuteGroup(string soundType);

選択したグループ音量をミュートする

MasterAudio.UnmuteGroup(string soundType);

選択したグループ音量をアンミュートする

GroupMixerで読み込むテンプレートを決定する

Resourcesフォルダから読み込んで使用したい場合は、Master Audioコンポーネント内のGruop Mixer > Gruop CreationでAudioSourceTemppleを ResourceFileにしておく。Apply AudioSource Templates To Allを忘れずに。

image.png

Audio Mixerのグループを適用したい場合

ゲームでよくあるようにBGM、SE、Voice、Ambienceなど、グループごとに設定できるようにするにはBus Controlを設定する。

グループ設定画面
image.png

Bus Controlを新規作成します。
image.png

適用させたいAudioMixerのグループをBus Controlへ設定します。
tempsnip.png

グループにBusを設定します。
image.png

以上で、AudioMixerグループを弄って、一括で音量を変更することができます!

AudioMixerにアクセスしてボリュームなどを弄りたい

専用のメソッドがあっても良さそうだけど、以下のようにしてアクセスできた。

var mixer = MasterAudio.GrabBusByName("Bus名").mixerChannel.audioMixer ;

シーン間で使用する

引用:Best Practices

put a Master Audio game object with "persist across scenes" checked in your Bootstrapper Scene (a "loading" Scene that is never revisited after startup). Only put Sound Groups in the MA game object that you will need in every Scene as all Audio Clips in the game object will be constantly taking up audio memory (using Resource Files or turning Preload Audio Data off will not though).

image.png

Persist Across Scene にチェックを入れる。

全シーンの全プレイリストを作る

引用:Best Practices

Tip: You can create all Playlists for all Scenes in this persistent MA game object if you are using all Resource Files or turning Preload Audio Off for songs so no audio memory will be used except by songs that are playing at that time.

Resourcesフォルダにクリップは突っ込んでおこう。

パフォーマンスに関して

参考:Audio Memory Allocations

パブリッシャは以下を勧めていました。

  • mp3でなく.wavを使おう
  • LoadTypeはStreamingに、Compressionの設定はしましょう。
  • 不定期で使うものはResourcesフォルダへ入れておきましょう。

オーディオファイルの一括処理

Bulk Audio Importerというものがあり、圧縮設定を一括変換する・拡張子を変更することができる。

image.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away