takeyohのおぼえがき

気になったこと、試したことの記録です。

SRPで飛行機を飛ばすmodを作る(ジェット音作成・設定編)

SRPで飛行機を飛ばすためのkn5とksanimの作り方、およびtarck modでの設定内容を書きました。これで、”音もなくしずか~に”空を飛ぶ飛行機が完成しました。

でも、飛行機がこんなに低空飛行しているのに、音が全くしないのはやっぱり気に入らない!どうしてもあの「ぐぉ~~~~~ん!」という爆音を再現したいと思いました。

実際、公式WIKIにも音を出すための設定があることはわかりました。

github.com

これを見る感じだと、bankファイルを使って、その音源のIDとその周辺のパラメータをEVENTで設定すればいいんだね、フムフム・・・。となり、bankファイルを作って組み込んでみたものの、全く意図したとおりにならずかなり苦労しました。

(皆様にもだいぶご協力いただきました。ありがとうございます!)

ということで改めて内容を整理し、順を追って作り方を解説する覚書第2弾です!

 

まず、bankファイルを作成する方から。

今回は飛行機のジェット音1つだけあればよいので、一つの音源だけをbankファイルにします。

そもそも使う音源はどこかから持ってきたり、加工したりして作成する必要があります。が、その説明は割愛します。

ちなみにbankに組み込む音源はmp3ではなくwaveファイルにするとよいです。mp3はループ再生したときに音が切れることがあるので。

ジェット音のwaveファイルが作成できたので、さっそくfmodを起動します。

いつもは車の音源を作るので、carフォルダの下に作成しますが、今回は飛行機用なので、別途新しいフォルダ(airplane)を直下に作成しました。

そしてそのフォルダの下に、jetというイベントを新規で作成しました。

そして忘れないうちに、banksへのアサインもやっておきます。

jetイベントを選択して右クリック→Assign to Bank→New Bankと進んで、新しいBankファイル名を設定します。(今回はairplaneというのを作りました。上記例は作成済みなので名前すでに入ってしまってますが。)

 

続いて音関係の設定をしていきます。

jetイベントをクリックすると、右にTimelineが表示されるので、そこにジェット音の音源waveをドラッグ&ドロップします。

音源の上の黒い部分を右クリックして、Add Loop Regionを選択すると、ループ用の青いバーが追加されます。

青いバーの左右を音源の左右に合わせると、この間でループ再生されるようになります。

最初やった時はここまで設定してbankファイルを作成していたのですが、これだけでは設定が足りませんでした。

距離に応じたボリュームの設定は、fmod側で行う必要があるのです。

(この辺ゲーム製作者だったら当たり前のことなんでしょうね・・・。ここに気付くまでにかなり時間かかりました。)

Timelineタグの右にある「+」をクリックして、Add Built-In Parameter→Distanceをクリックすると、Distanceというタブが追加されます。どこまでの距離を設定するのか聞かれるので、離れる距離を設定します。今回は飛行機からのジェットエンジン音なので、2000m(2km)まで設定しました。(車の音なら、例えば10mくらいとかいうこともあるかもしれませんね。)

追加されたDistanceタブをクリックすると、横に0~2000まであるバーが出来ています。白いバーをつかんでスライドさせると、右のOverviewで音源のポジションが移動していくのが見えると思います。

0m部分に白いバーを持ってきて、左上の再生ボタンを押すと、ジェットエンジン音が鳴ります。でも、白いバーを右にスライドさせていくと、すぐに音が消えてしまいます。あれ?

これは、マスターの音源が足りていませんでした。

Audio1の下にあるMasterを法をクリックして選択すると、下に3D Pannerというのが表示されます。

この中にある「Min&Max Distance」のバーを左右目いっぱいまで広げます。今回は距離が2kmもあるので。もっと近い距離でのみ鳴らす場合は、Max側を適切なスケールにとどめておくとよいです。

続いて、距離に応じてボリュームを小さくする設定!

同じくDistanceタブを選択している状態でAudio1を選択し、下にあるVolumeのつまみを右クリックして、Add Automationを選択します。

すると、Audio1の下にVolumeという行が追加されます。

そしてこの行で距離に応じた音量を設定します。マウスで調整できるので難しくないです。せっていするとこんな感じになります。

距離0mで5.21db、2000mで-80dbに設定してみました。この辺の音量はお好みですが、2000mで音がきちんと消えるようにしておきました。
これは飛行ルートで、大井から羽田に戻る時、上空3000mを戻るようにしており、3000mでも音が鳴る状態だと、見えない飛行機で音が出てしまうのを防ぐためです。

 

ここまで設定して、先ほどの白いバーを右にスライドしていくと、徐々に音が小さく(フェードアウト)用になればOKです。

FileメニューからBuildを選択して、bankファイルを生成、Export GUIDsを選択してGUIDsを生成します。(あとfmodファイル自体をSaveするのもお忘れなく)

すると、fmodファイルがあるフォルダの下で、Buildフォルダに移動するとGUIDs.txtというファイルが、さらにその下のDesktopフォルダに移動すると、生成されたbankファイルが格納されています。

Desktopフォルダ内にあるairplane.bankを使用します。あと、このbankファイルのGUID用として、GUIDs.txtから下記行をコピペして、新しくGUIDs_airplane.txtというファイルを作ります。

{be7b6bb0-11e4-4168-beb1-dbbb45ec1eca} event:/airplane/jet
{32047fee-5975-4726-aec9-cee868b6ae84} bank:/airplane

この辺は車用のsfxと同じですね。ただ、GUIDを記載したtxtファイルの名前は何でもよいです。(この後iniで個別に設定するので)

 

ファイルが作成出来たら、track modに設定していきます。(今回もSRP 0.9.2 PTB2を例に)
assettocorsa\content\tracks\shuto_revival_project_beta_ptb\extension\sfx

に移動します。SRP 0.9.2 PTB2ではこのフォルダが最初からあります。ほかのtrackで存在しない場合は新規で作成します。

用意できたbankファイルとGUIDのtextファイルをこのsfxフォルダの下にコピーします。

一つ上に移動して、前回作成したairplane.iniに音再生の設定を追記します。

; Sound for the airplane
[SOUNDBANK_...]
BANK = sfx/airplane.bank
GUIDS = sfx/GUIDs_airplane.txt

[EVENT_...]
ID = airplane/jet
REVERB_RESPONSE = 1
VOLUME = 1
CAMERA_INTERIOR_MULT = 0.7
CAMERA_EXTERIOR_MULT = 1
CAMERA_TRACK_MULT = 1
RELATIVE_TO = airplane
POSITION = 0,0,0
DIRECTION = 0,-1,1 

細かいパラメータはこちら。(公式WIKI

Tracks – Audio · ac-custom-shaders-patch/acc-extension-config Wiki · GitHub

セクションは2つだけ。SOUNDBANKはコピーしたbankファイルとGUIDファイルを指定します。(相対パスOK)

EVENTセクションは音を鳴らす条件を設定します。

IDはbankファイルで登録した音源のIDを指定。ID名はGUIDファイルに書かれています。

CAMERA_INTERIOR_MULTは車内視点の時の音量への乗数、

CAMERA_EXTERIOR_MULTは車外視点の場合の音量への乗数です。

RELATIVE_TOは音源を追従させるメッシュ(エンプティやオブジェクト)を指定します。このRELATIVE_TOというパラメータは公式WIKIに書かれていませんが、ちゃんと機能します。

#せっかく良い機能なんだから書いておけばよいのにね。

POSITIONは音が鳴る場所(座標)情報。RELATIVE_TOが設定されていなければtrack全体での座標ですが、RELATIVE_TOが設定されていると設定したメッシュからの相対距離になるのかな。
DIRECTIONはPOSITIONからみてどちら方向に音が出るかです。
数字は順に飛行機kn5作成時のローカル座標X,Y,Zに対応してます。

2番目の数字が-1(下方向)と3番目の数字が1(前方向)ということで、飛行機から見て下前方に音が発せられるということになります。

下だけでなく前方にも音を出しているのは、空港近くで飛行機が超低空で飛ぶ箇所があり、ここでも音を拾えるようにするためです。普通に空飛ぶだけなら、2番目の-1だけでもよいですね。

また補足ですが、一番最初に飛行機のkn5を作るときに、車と同じようにローカル座標で+Zが前方、+Yが上という向きで作っておかないと、この音の出る方向と飛行機の向きが合わなくなります。最初のモデル配置の時から、注意しておくとよいですね。

 

音の設定は以上です。第一弾の覚書で設定したものと合わせてゲームで読み込まれます。

実際に動いている様子はこちら。(第一弾と同じですが)

youtu.be

/* -----codeの行番号----- */