波形のトリミングと残響エフェクト

波形のトリミング?

トリム=無駄な余白を削る。
波形の場合は、時間として、最初と最後の無音部分を削ることになります。

そんなに削って問題ないか?

大丈夫だ。やってみよう。
ほとんどの人は音をDAWなどで作ると思う。録音でもシンセサイザーの音でも。
で、DAWでは範囲を指定して「バウンス」だったり、「パブリッシュ(共有)」だったり「ミックスダウンをエクスポート」だったりでwavファイルとして出力します。
この時、範囲を指定してバウンスするのですが、波形は結構余韻が長いことが多い。
DAWは通常、余韻が切れると「プツ」っというノイズになるので、そうならないように配慮されていることが多い。
また、範囲を指定しても少しずれている時があって、前方に無音が入ってしまうことがある。 これもDAW的には前方に波形があると出だしに「プツ」というノイズを避ける場合があるため。

なぜ削るのか?

無駄なデータは削減したい。
発音管理上も、聞こえない音にリソースはあまり割きたくない。
実質聞こえない音は波形レベルで削るとゲームのサウンドシステムにも負担が少ない。

無音は必要か?

無音が本当に必要か不要かは判定できない。
無音がタイミングの調整に大事だったり、言語によってはその余白で意味合いが変わってしまったり。

波形エディタで厳密に

ogg vorbis ≧ HCA = AAC > mp3DAWではざっくりとしか範囲を指定していないが、波形エディタならより細かく見れる。
CRI AtomCraftでも「マテリアル」で波形をみれます。

なお、mp3などの場合ブロックサイズとよばれる最小サンプル数の制限があるため、適当な位置で切ってもずれてしまうことがあるので注意。
これを気をつけないとループ再生などもうまく繋がらない。ので、wavが扱える環境ならwavで出力した方が良い。最終段階でmp3のような圧縮コーデックを使うと良い。

なお、CRIのHCAはmp3のような「編集可能な最小サンプル数制限」はないので、どこで切っても綺麗にループが繋がります。(*1)

*1)厳密にはストリーム再生の関係で極端に短いループは作れないが、ブロックサイズのような固定倍数である必要はないので実用上問題ない。

具体的な削り方

超基本ですが、ここは波形の加工風景をざっとみてみましょう。

アタック(音の立ち上がり)をいじる

この前方の無音部分。ここをなるべく削ることで「レイテンシー」と呼ばれる部分を削れます。
アタックが遅い音は反応が遅いように感じる。意図的でないならばアタックが早めな音にするか、波形編集で弄ってしまうと良い。

カット&フェード
このとき、先頭には波形エディタの「フェードイン」を使うと良い。これは、0始まりの波形に強制できるため、出だしの「プツ」ノイズを起こさないようにできる。

リリース(音の終わり)をいじる

この後半の部分。長いテール(余韻)がある。
この波形で見えている部分の半分は音としてはほとんど聞こえないレベル。

カット&フェード
ここは、大胆にカットし、波形エディタに「フェードアウト」のツールがあればそれをかけてしまうのが良い。
ちょっと音の消え方がタイトになるけど、手動「ノイズゲート」だと思って切ってしまおう。(プリレンダ的な意味で、エフェクトかけ採り)

サイズも小さくなるし、同時発音時などの無駄な重なりを軽減し、全体としてスッキリさせることができる。
ゲームでは、何が多重に再生されてしまうかわからないので、余韻の長い音はなるべく避けた方が良い。

リアルタイムのエフェクトを使う

残響を足し算するエフェクト


余韻があまりにないと寂しいときはリアルタイムの「リバーブエフェクト」で後がけすれば良い。
ADX2ではDSPバス設定でリアルタイムのエフェクトを設定できます。

残響を引き算するエフェクト


他にも、音のアタック、リリース感を変更するエフェクトとして「コンプレッサー」があります。
「コンプレッサー」はある意味自動で音の前後をトリミングをしていともいえる。「ノイズゲート」も。
DAW上であらかじめそれらをかけて、ある意味「無響室」「残響がデッドな部屋」で収録したようなデータにしておき、ADX2側でエフェクトをかけると、素材を一つに音の広がりを調整したり、リアルタイムで変更するといった音にすることができます。

リアルタイムのエフェクトを使わない例

たとえば、システム音(ゲームの決定、キャンセル、選択などの音)で、空間のエフェクトの表現は固定化されていたり、ゲーム中でも比較的他の音が鳴っていない状況であれば、DAWの豪華なエフェクトを存分にかけたテール(余韻)の長い音を使うのも印象的で良いかもです。

洞窟で響くシステム音?


システム音が、たとえばゲームが洞窟で響いてしまうとかだと、少し混乱するかもしれません。
ゲーム内のアイテムが鳴っている音なら響いても良いですが、システム音は別世界の音なのでエフェクトをかけない方が良いかもです。
こういった時に、システム音にエフェクトをかけないようにするには、ADX2ではキューの「バスセンド」で送る/送らないで調整が可能です。

カテゴリ分けして調整を楽に


「カテゴリ」で「システム音」のカテゴリを用意しておくと整理しやすいでしょう。

リアルタイムのエフェクトを調整

エフェクトへの送る量も「バスセンド」で調節可能です。これはプログラムから直接変更もできます。

AISACを使う


ゲーム中では、エフェクトの量を空間の広さに応じて、あるいはキャラとの距離に応じて変化させたくなります。そういった場合は「AISAC」や「距離減衰AISAC」を使うことで、デザインをCRI Atom Craft側で、コントロールをプログラム側でと分担できます。
「カテゴリ」に対してもAISACを使うことができるので、先ほどのシステム音が「ドライすぎて浮いてしまった・・・」といった時にすぐに反映させることもできます。

スナップショットを使う


また、全体のエフェクトをシーンによってがらっと変えたい場合は「DSPバス設定」の「スナップショット」を切り替えるといった方法もあります。
デザインをCRI Atom Craft側で、「スナップショット」の切り替えをプログラム側でと分担できます。