ADX2でフェードインフェードアウト

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ADX2(LE)でフェードインフェードアウトの方法
いくつか紹介

目次


ボイスのEnvelopeで行う


  • エンベロープが利用できるデータは、シンプルな1キュー1ボイス

シンプルなキューであるならば、ボイスの持つシンセ機能のエンベロープを直接いじってしまうことで、フェード処理をすることが可能。


データで

  • Craftでタイムラインからウェーブフォームリージョンを選択し、
エンベロープのアタック、リリースを変更する。

大量にある場合は、
  • Craftでキューシートを選択してリスト表示で複数選択、エンベーロープのアタック、リリースを変更する。

この方法は、ローテクですが、効果は大きい。
リリースを少しだけ長めにするだけで、「プツッ」と切れない。

ただし長過ぎるリリースをつけると、なかなか音が止まらなかったりして、
発音数を多くとってしまったり、
オーバーラップが多くて音が重なって割れたりなど注意。短めなら問題ない。

キューが複雑な場合(ボイスが1つでなく複数入ったキューなど)の場合は、
おかしなことになるので注意が必要です。
(あくまで、セリフや音楽など単発で鳴らす目的のキューに対してのみ有効なもの)

もし、キューでブロック再生や、多重再生など行っている場合は、フェーダーをアタッチする方法をおすすめします。

プログラムで

  • SetEnvelopeAttackTime
  • SetEnvelopeReleaseTime

プログラムから操作する場合、キューの中のすべてのウェーブフォーム(ボイス)のエンベロープが上書きされます。

以後同一のプレーヤで再生するキューもすべて上書き状態です。
プレーヤに対して、リセットすれば初期状態(データのエンベロープ値参照)に戻ります。
少し強引なやり方ですが、キューの中身が1波形に限っている時は有用です。


キューのAISACを使う


トラックにAISACを追加してボリュームカーブを書いて、プログラムからはAISACを操作する。
AISACは非常に強力な機能ですが、こういったシンプルな事にも使えます。
他のシステムで言うとMultiFunctionやRTPCのようなものに近いです。

トラックのボリュームを直接変更できれば...と考えるかもしれません。
実はADX2ではトラックがあるかどうかすら、隠蔽されてしまいます。
エディット時にはトラックがあっても、実際のキューが必ずしもトラックを持っているとは限りません。
(トラックのパラメータはビルド時に焼き込まれているかもしれません)

プレーヤーのフェーダーを使う

プログラムで

  • AttachFader、DetachFader、SetFadeInTime、SetFadeOutTimeを使う。
Fader機能を使うと、プレーヤーは次の音が再生されるたびにクロスフェードをします。
(ただし停止時はフェードアウトはしないので、無音を鳴らすとか工夫が必要。

あくまで連続再生時のクロスフェードをサポートするフェーダーです。)
ホールド時間(間をおく・・・どちらかというとWaitかな?)なども指定できるので、クロスしないフェードもできそうです。

playbackIdで停止するとフェードアウトします。
PlayerにStopを呼ぶと即時停止します。(カットアウト)

こちらは、キューの中身が複雑であっても利用できます。(ボイスが多用された複雑なキューなど)

曲再生用のプレーヤーを使い、キューを再生すると順次自動でフェードがかかるといったことができます。


プレーヤーの音量のなめらかな変化


SetVolumeなどで音量を変更するとき、
1.0から0.0へがつっと下げる場合におこる現象として、「プツッ」という音が鳴る場合があります。

ADX2の処理では次のVolume値はなめらかに変化している様子で、この「プツッ」というノイズは発生しない様子です。

最小のサンプルバッファ分の補間が行われている。
もし「プツプツ」とした音が演出として欲しい場合は、サンプルとして用意するとノイズの音が作れるはず。

しかし、あまりに急激な変化の場合、変化の具合に微妙な差がでてくる場合があります。

ゲームエンジンなど更新フレーム間隔が音の変化に影響(階段状に変化するのがわかってしまう場合など)があります。


キューのダッキングで自動化

フェード処理がダッキング(何か音がなって、音楽が自動でちょっと小さくなるとか)
の場合

REACTでボリュームパラメータをカテゴリ間で変化させる事で、他カテゴリの発音に応じ、自動でフェード効果が発生させられます。
あらかじめ、REACT元のカテゴリ、REACT先のカテゴリを決めておく必要があります。
おおまかなカテゴリという単位で、音をグループ化しておく必要がありますが(たいていやっているはず)グループ間の音量制御を自動化する時に手頃にあつかえます。

キューのアクションで自動化(ADX2 PRO)

アクショントラックに、キューまたはトラックのボリューム変更と変化時間を与えるイベントを置く事で、キューの再生で他のキューのフェードを行う事ができます。
サンプルが無いのでそのうち用意する予定。(CRI Atom Craft V1では開けない・・・)
アクショントラックでは、先のキューまたは先のキューの任意のトラックを指定する必要があります。

アクションを持つキューの利点は、サウンドデザイナ側でキュー同士の動的な変化を作れる事で、
プログラマやスクリプトからの呼び出しは、キューのスタートだけで行えるようになる点です。(昨今のゲームエンジンはこっちの方がやりやすいかも)
どのようにふるまうかまでサウンドデザインできるので、より細かい制御が可能となります。

REACTを使わずにカテゴリ制御が行える予定です。