audio
Wwise

Wwiseをつかってインタラクティブミュージック(2) オーサリング編-2

前回にひきつづき、Wwiseをつかってノンリニア&インタラクティブなMusicを作りたいとおもいます。今回もオーサリング段階なのでエンジニアにとっては知らなくてもいいや、な内容ですがコンポーザーといいものを作り上げるには知っておいて損はないはずです。

Intro以外のContainerをつくる

Main1

前回かいたので簡略化して書きます。
Introの兄弟にMainのcontainerを作り、さらにその中Main1というSegmentを作成し、必要となるファイルを放り込みます。
各トラックをつくるのに必要なファイルは以下の通りです。

  • Drum: {808 drums1, shaker hihat1}
  • Hard Dram: {hard drums 1}
  • Pad: {verse pad[1..4]}
  • Bass: {bounce bass[1..4]}
  • Morse: {morse [1..4]}
  • Bell: {bell melody [1..3], 空トラックx3}

一部のトラックが短すぎる場合はトラックの右下の青四角をドラッグして伸ばします。
このとき拍単位で調整できるようにBars/Beatsボタンで小節/拍単位で変更できるモードにしておきます。
また、ループの終端をしめす赤ブロック矢印位置が5小節手前に無い場合はそこまで赤ブロックをドラッグします。
長すぎるトラックがありますが、こいつは長めのreleaseがついているだけなのでそのままにしてあげます。

スクリーンショット 2018-01-23 14.30.29.png

Main2

Main2はMain1とほとんど同じです。ただしMain containerの下にMain1の兄弟となるようにつくります。最初にMain1のSegmentをコピーし、Mainのcontainerを選択してペーストすれば複製できます。各トラックと必要なファイルは以下の通りです。メロディのBellがなくなってちょっと落ち着くループになっています。

  • Drum: {808 drums1, shaker hihat1}
  • Hard Dram: {hard drums 1}
  • Pad: {verse pad[1..4]}
  • Bass: {bounce bass[1..4]}
  • Morse: {morse [1..4]}

Breakdown

Mainとおなじ感じにBreakdownもつくってしまいます。Breakdownは新しくCrate ContainerしてBreakdown containerを作成し、その中にBreakdownSegmentを作って、その中にファイルをD&Dします。必要なトラックとファイルは以下です。

  • Pad: {ambience pad1}
  • Organ: {ambience organ1}
  • Bass: {ambience bounce bass 1, ambience legato bass[1..2]}
  • Morse: {ambience morse melody 1}
  • Marble: {intro rolling marble 1}

こいつはほとんどランダム要素がない静かなループになっています。

Container内の遷移を作る

Intro & Breakdownのループを作る

Intro, BreakdownのContainerは子のSegmentをひたすらループするだけなのでこれを先につくってしまいます。

IntroのContainerを選択すると右下のIntro Music Playlist Editorが更新されます。おそらく空っぽになっているこのウィンドウの、SequenceContinueになっている下くらいにIntroの"Segment"をD&Dします。そしてSequenceContinueの行のLoopCountの値を0にします。LoopCount=0は無限ループを意味するためLoopCountの欄がInifiniteになります
※LoopCount=-1で無限ループのほうが個人的にはすっきりします。

スクリーンショット 2018-01-23 14.55.20.png

この状態でIntroのContainerを選択して再生ボタンをおすと、Introがループしつづける様子が確認できます。

同様の手順でBreakdownもつくってしまいます。

入れ子のループを作る

Main Containerはすこしややこしいです。「Main1からはじまり、Main1とMain2をランダムに再生する」ようにしたいからです。

2つ以上のSegmentをランダムかつ無限に再生したい場合はGroupをつかいます。

まず、SequenceContinuousの下にMain1を追加します。ただし今回はInfiniteにはしません。
次にMusic Playlist Editor右上にあるNewGroupボタンを押すと先ほどのMain1の兄弟にSequenceContinuousの行が追加されます。
このSequenceContinousになっている行のドロップダウンボタンを押して、RandomStepに変更します。
最後にこのRandomStepの下にMain1, Main2をD&Dし、この行をInfiniteにします。これで「Main1からはじまり、Main1とMain2をランダムに再生する」ようになります。

スクリーンショット 2018-01-23 15.05.04.png

Container同士をつなぐ

各ContainerがあるStateにあるときにBGMをならし分けたいのでその仕組みをつくります。

Containerをまとめる

Intro, Main, Breakdownの3Containerを選択して右クリックメニュー>New Parent>Music Switch Containerを選択します。すると3つのContainerが1つのContainerの中に入ります。このContainerをMusicと名付けます。

スクリーンショット 2018-01-23 15.29.33.png

再生を切り分けるStateを作る

左上のProjectExplorerにあるAudioタブからGameSyncタブに移動します。
StatesのなかにあるDefaultWorkUnitを選択して右メニュー> New Child > StateGroupを選択してStateGroupを作成します。作成したら右クリックメニューのRenameからGameModeにリネームします。つづいてGameModeを選択して右メニュー > New Child > Stateを実行してStateを作成します。作成したらこれをIntroと名付けます。同様にしてMainとBreakdownのStateを作成します。

スクリーンショット 2018-01-23 15.37.04.png

StateとContainerを紐づける

作成したStateと各Containerを紐づけます。PlojectExplorerのAudioタブに戻ります。
戻ったら右中央にあるMusic Switch Container Association Editorの>>ボタンをおします。出るメニューからStateGroupをフォーカスすると先ほどつくったGameModeが選択肢にでるのでそれを選択します。

スクリーンショット 2018-01-23 15.34.11.png

選択すると各Stateが表示されるので、それぞれ対応するContainerをD&Dして紐づけます。

スクリーンショット 2018-01-23 15.34.30.png

 再生して確認する

ついに完成しました!Music Switch Containerを選択し、再生ボタンをおしましょう。するとおそらくなにも鳴らないでしょう。これはStateがNoneだからです。再生ボタンの直下にあるStateボタンを押します。するとGameModeのStateGroup表示されているかと思います。このプルダウンメニューをIntroやMainにしてあげれば再生できるはずです。

スクリーンショット 2018-01-23 15.57.38.png

遷移を調整する

再生はできたものの、Stateを切り替えてもすぐには遷移しないのが気になったかと思います。この遷移タイミングを調整します。
MusicContainerを選択し、右上のPropertyEditorのTransitionタブを選択します。
するとTransition a >>Any >>Anyと書かれたTableがあるかとおもいます。このSource(1個目のAny)を選択するとグレーアウトしていた下部項目が表示されるようになります。下部メニューのSource > Exit Source atをNext Barに設定します。すると書かれているとおり、どのStateも次の小節で遷移するようになります。お好みに応じてNext Beat(拍)などに設定しましょう。

スクリーンショット 2018-01-23 16.02.49.png

これでいい感じに遷移する様子が確認できるはずです。
おつかれさまでした!!!

まとめ

やはりADX2にくらべると設定する項目が多くて辛い感じですね。でも細かなところの調整をはじめるとWwiseの良さも体験できるはずです。次回はUnityへの組み込みあたりをめざします。