BLOG
弊社英語ブログのうち、いくつかを日本語翻訳しています。英語ブログはこちら

GameSynthで、インタラクティブなドアの「バタン」音を作ろう

現実のドアや引き出しなどは、開け閉めの勢いによって、
「カチャッ…」「バーン!」など、鳴り方が変わります。
GameSynthのメタパラメーターと各種ロジックを使って、このインタラクティブな仕組みを再現したぶつけ方で音の変わるドア衝突音モデルを作ってみましょう。
衝突音をデザイン
Clang(板の振動)モジュールは、「ガコン」という物理的なオブジェクトの衝突音を演出するのに適しており、衝突の強さをコントロールするimpactパラメーターも備わっています。今回は、さらにSaturatorモジュールに通してさらにパワー感を出しています。
また後半のCabinet(箱)モジュールは、箱のような物体が鳴っているような効果を与えるエフェクトで、
パラメーター次第では音に金属的な効果を与えることができます。
これらのエフェクトを通し、臨場感のある「バタン!」音へと仕上げました。

ちなみにこのままでは再生したパッチがすぐに停止して困るため、自動停止させないためにNoise(ノイズ)モジュールを別途接続しています。このNoiseモジュールは事実上音を発していませんが、Durationを∞設定にしているため、ランタイムでの使用において、パッチを意図的に停止しない限り再生状態はずっと続くことになります。
速度曲線を抽出
次に重要な音の発生条件ですが、まずは下図の(「速度検出」設定にした)Derivatives(微分)モジュールと、Biquad Filter(バイカッドフィルター)部分を見てみましょう。
ここの仕組みは、メタパラメーターの動作(=つまりドアの回転角度など)から速度成分を引き出し、かつそれを滑らかなカーブへと処理しています。後述しますが、このカーブによって「ドアが閉まったかどうか」を監視しています。
ためしにDerivatives、およびBiquad Filterの出力シグナルを、GameSynthに搭載されている(画面右下の)黄色いビジュアライザーと接続すると、その効果が分かるでしょう。
得られる信号が小さすぎる場合は、Derivativesモジュールのスケーリング値を増やすといいでしょう。後述しますが、誤検出が多い場合は、Biquad FilterのCutoff値とResonance値を低くするといいでしょう(カーブがさらに滑らかになります)。
ドア閉めのロジック
まずパッチ上部のComparator(比較)モジュールによって、「メタパラメーター値が0.99以上になったら、音をトリガーする」仕組みとなることがわかります。(スライダーは浮動小数点値を生成し、最大値が正確に1になるとは限らないため、閾値0.99とするのが安全でしょう)。
ここで言う「メタパラメーター値1」とは、ドアや引き戸が完全に閉じている状態(つまりそれ以上高い値へは動かず、この地点で「バタン」と鳴る位置)と考えるといいでしょう。
しかしこのままでは、メタパラメーターが1の値を保持している(つまりドアが閉まりっぱなしの状態)間、何もしなくても音がずっとバンバン…と繰り返しトリガーされてしまいます。
そこでモジュール右下のLogic Gate(論理ゲート)モジュール周辺にて、Time Shifter(タイムシフト)モジュールで一瞬前のドアの速度を取得し、それを現在のドアの速度と比較することで、(ドアが動いていないにもかかわらず発生している)不要な衝突トリガーをカットしています。
さらにClangモジュールは、そのImpactパラメーターに、(平滑化された)加速度を受けるよう接続されているため、結果として
勢いよくドアを閉めればパワーのある衝突音が生成されるようになっています。
また、Clangモジュールのポリフォニーを1に設定して、音が連続してトリガーされないようにするのもベターでしょう。
カスタマイズも可能
今回のパッチはパラメーター一つで音をコントロールでき、さらにカスタマイズもできます。
例えばこちらのブログで解説しているきしみ音を追加したり、ドアの素材に応じて音源を他のモジュールと交換したり、Saturator値を変更して迫力を調整したり、速度パラメーターを任意の入力値に変更したり。家具やシーンに合った音へとカスタマイズできます。
また、別途Mapperモジュールを使うと、「どの程度のスピードで閉めると、どの程度のパワーの音が出るのか」というリアクションも調整できるでしょう。
