この記事シリーズでは、Unity公式が配布しているゲーム「2D Character」にWwiseでサウンドを組み込む方法を綴っています。
※当ブログではMacOS環境で作業を進めています。他OSを使用している場合は表示や操作方法に差異がある可能性があります。
はじめに
前回の記事では、足音の効果音を実装しました。効果音の次はBGMです。
今回は縦の遷移を用いたインタラクティブミュージックを実装してみます。
※この記事では「Unity2019.3.2f1」を使用しています。お使いのバージョンによっては操作方法が異なる場合があります。
※Unityの用語や操作をある程度理解している方向けです。
-1.縦の遷移とは
-2.Wwiseに音源を読み込む
-3.トラックの再生範囲を設定する
-4.Music Playlist Containerでループを設定する
-5.「Switch」を設定しBGMを切り替える
-6.小節単位でBGMを切り替える
-7.BGMを再生させるためのEventを用意する
-8.Sound Bankを作成する
-9.Unityへ
1.縦の遷移とは
仕組みを作る前に縦の遷移とは何かの解説をします。
縦の遷移とは簡単に言うと「アレンジの変化」です。フレーズはそのままにアレンジやパートが増減し展開を変化させる手法をいいます。
この縦の遷移や他のインタラクティブミュージックにについては、サウンドプログラマの「じーくどらむす」さんのスライドやブログが大変参考になりますので、是非読んでください。
「インタラクティブミュージック」という、ゲームと音楽の関係性。連載開始。
https://note.com/geekdrums/n/n0466da94d5e3#ammJB
2.Wwiseに音源を読み込む
音源の用意
今回は8小節のアルペジオフレーズを3つ用意しました。
BGM+0
BGM+1
BGM+2
数字が上がるにつれて曲全体のキーが1つずつ上がっていき、ドラムパターンも盛り上がるような構成になっています。
このように段階的にBGMのキーが上がる演出というのはあまり使われない手法なのですが、変化がわかりやすいように大袈裟にしてみました
最終的なゲームの中でのBGM演出としては、プレイヤーがステージを上に昇っていくごとに、BGMのキーも上がっていくというものを目指します。
Music Playlist Containerの追加
WwiseでBGMを組み込む場合、Music Playlist Containerというオブジェクトの中にサウンドファイルを入れ込むことになります。
このオブジェクトは展開の順番や、何回リピートするか等、基本的なBGM構成を設定するためのものです。
Project ExplrerのAudioタブ>Interactive Music Hierarchy>Default Work Unit を右クリックで、Music Playlist Containerを選択します。
Music Segmentの追加
次に今作成した「BGM」Music Playlist Containerの中に「Music Segment」を追加します。
「BGM」Music Playlist Containerを右クリックし「Music Segment」を追加します。
このMusic Segmentの中にBGMを構成するサウンドを入れ込みます。
Music Trackの追加
「Music Segment 1」に先の3つのトラックを追加します。
これでインタラクティブミュージックの構成ができました。
階層ごとに設定する項目が違ってややこしいのですが、インタラクティブミュージックを作るにはサウンドの断片ごとに細かく扱う必要があるので、こういう段階構成が用意されているのだと思います。
3.トラックの再生範囲を設定する
音楽トラックをWwiseに読み込んだら、まずは再生範囲を設定する必要があります。
LayoutをInteractiveにした上で、先ほど作成した「Music Segment 1」を選択します。
すると右下のMusic Segment Editorウインドウにトラックの波形が表示されます。緑のマーカーと赤のマーカーの間が再生範囲になります。
初期設定だと2小節目に赤マーカーがあると思うので、9小節目に移動させます。
これで再生範囲の設定ができました。
4.Music Playlist Containerでループを設定する
Music Playlist ContainerではBGMのAメロ、Bメロといった展開の順番を決めたり、逆に展開をランダムにするといった、BGMの基本構造を設定することができます。
今回は8小節単位でループさせる設定をします。
まずLayoutをInteractive Musicにして、先ほど作成した「BGM」Music Playlist Containerを選択します。
右下に「Music Playlist Editor」ウインドウが表示されるので、先ほど作成した「Music Segment 1」をドラッグします。
Music Playlist Containerでは4つの再生モードが選択できますが、今回はMusic Segmentが1つだけなので、単純に順番に再生される「Sequence Continuous」モードのままにします。
再生モードの種類については下記のリンクで解説されています。
右端にあるLoop Countの項目で、トラックのループ回数を設定することができます。
初期状態では「1」に設定されているので、下の矢印をクリックし「Infinity」にすると無限にループする設定になります。
5.「Switch」を設定しBGMを切り替える
次にどういったパラメータで変化させるのか等の仕組みを構築していきます。
試しに今何も設定していない状態で「BGM」Music Playlist Containerを選択し再生させてみると、3つのトラックが同時に鳴ってしまいます。
これをまずSwitchというパラメーターを使い、1つずつ鳴らすようにします。
Switchを用意する
まずSwitchとはなにかというと、インタラクティブにサウンドを変化させる要素である、Game Syncsオブジェクトの1つです。
Switchを設定することにより、リアルタイムにサウンドファイルを切り替えすることができるようになります。
Game Syncsオブジェクトについては以下の記事でまとめていますので是非読んでください。
まずは Project Explorer ウインドウの
Game Syncsタブ>Switches>Default Work Unit を右クリックしSwitch Groupを追加します。
名前は「Level」とします。
さらに、この「Level」Switch Groupの中に「_00」「_01」「_02」というSwitchを作成します。
オブジェクトの名前の先頭に数字を入力することができないので、「_」を入れています。
これでBGMを切り替えるためのSwitchを作成できました。
SwitchをBGMに割り当てる
次にBGMにそれぞれのSwitchを割り当てます。
まず、Layoutを「Interactive Music」に設定してから、先ほど読み込んだ「BGM+0」を選択します。
すると、右上のウインドウの中に「Track Type」を選択する欄があるので、「Normal」から「Swicth」に変更します。
すると、すぐ下の欄で先ほど作成した「Level」Switch Groupを選択できるようになるので、設定します。
その下の 「Default Switch/State」という欄は、ゲーム側からデータが渡されない場合にデフォルトで選択されるSwitchを設定する場所なので、とりあえず「_00」で大丈夫です。
次に、画面右下のウインドウを見ると、読み込んだ音源の波形情報が表示されていると思います。
ここの「BGM+0」波形トラックの所にある、黄色い帯のような表示を右クリックすると、割り当てるSwitchを設定することができます。
「BGM+0」には「_00」Switchを割り当てます。
同様の手順で、「BGM+01」、「BGM+02」にもそれぞれ「_01」、「_02」を設定します。
これでSwitchをそれぞれのBGMに割り当てることができました。
再生して確認する
設定したSwitchが適用されているか、実際に再生して確認してみます。
「Music Segment 1」を選択した状態で、Transport Controlウインドウで先ほど設定したSwitchを選択し、再生させることができます。
これで再生しながらSwitchを切り替えると、対応したBGMに移行する、、、はずなのですが、その時点で再生されているトラックが終わらないと、次のトラックに移行しません。
これは狙ったサウンド演出とは異なります。
6.小節単位でBGMを切り替える
次に、トラックの展開を引き継ぎつつ、小節単位でBGMを切り替えるようにしたいと思います。
まず「BGM+0」を選択し、右上のMusic Segment Property Editorウインドウの中のTransitionsタブを選択します。
このTransitionsタブでは、トラック間の遷移のタイミングやフェードインアウトの有無などを設定することができます。
ウインドウの中のTransition欄を選択し、下の「Exit source at」の項目で初期設定の「Next Cue」から「Next Bar」に変更します。
「Next Cue」は次のトラックの開始位置で遷移するという設定、「Next Bar」は次の小節で遷移するという設定です。
これで小節単位でBGMを切り替える仕組みができたので、BGMのプログラムは完成です。
再生しながらSwitchを切り替えて確認してみましょう。
7.BGMを再生させるためのEventを用意する
あとはゲーム内で再生させるためのEventを用意し、作成したBGMに紐付ける必要があります。
Project Explorerウインドウ>Eventタブ>Events>Default Work Unitの中に新たにEventを作成し、名前を「Music_Start」とします。
「Music Start」を選択し、右上のEvent Editorウインドウに先ほど作成した「BGM」Music Playlist Containerをドラッグします。
これで「Music Start」EventとBGMを紐づけることができました。
8.Sound Bankを作成する
最後に「Music Start」Eventを「_2dCharacterSB」SoundBankに入れてSoundBankを作成すればWwiseでの作業は終了です。
LayoutをSoundBankに変更し、「_2dCharacterSB」SoundBankを選択した上で、右下のEvent Viewerから「Music_Start」をドラッグします。
該当する項目を選択した上で、Generate Selectedボタンをクリックすれば完成です。
9.Unityへ
Wwiseでのプログラミングが完了したので、Unity側の設定にいきます。
ここまで読んでいただきありがとうございました。
次の記事
aa