映像による音生成2

サウンド

はじめに

先回のblogに引き続き、「映像による音生成」を検討致します。今回の特徴は音自体が変化する場合、例えば、クルマのエンジン音のように、アクセルを踏むと、低音から高音に移るといった場合、どのように生成すればよいかを考えます。特に図形を利用して音変化を付ける方法を紹介します。

変化する音の生成方法:従来例

ゲーム等で使うエンジン音やモーター音を作る極簡単な方法は次のようなものです。アクセルを踏んでいないアイドリングの時の音をA、アクセルを一杯に踏んだ音をBとします、A,Bは実測した音です。Aは低い音でBは高い音になるのが一般です。アクセルを踏んだ信号に合わせて、AとBの重みを変えていきます。アイドリングの時はAの重みが1でBはゼロ、べた踏みの時はAがゼロでBが1です。その間はアクセルを踏むにつれ、Aの重みは下がり、Bの重みをあげます。そして両者の音を合成して全体を作ります。より一般的には2軸用意します。エンジン回転数とアクセル開度です。準備する音はエンジン回転数もアクセル開度も低い時、エンジン回転数が高い時、アクセル開度が高い時、どちらも高い時の4つの音です。それぞれの音に対してエンジン回転数に関する重み、アクセル開度に関する重みを設定します。そしてエンジン回転数とアクセル開度に応じた音をそれぞれ合成することで音を作製します。パラメータに対して周波数変調を掛ける場合もあります。このような作製方法は特開平10-169564 「車両用エンジン模擬音発生装置」、特開平10-177161 「エンジン模擬音発生機構」に書かれています。この手法はパラメータを複雑さパラメータAと複雑さパラメータBのように違うパラメータにして、4つの音も別の音、例えば波の音や鳥の鳴き声等とすると、エンジン音と同様、パラメータ値に応じで様々な音が合成できます。これについては特願2017-140571「音生成装置、音生成制御プログラム」に記載しています。こうした重みを利用した音合成を使う手法は非常に強力です。

図形を使った音の生成

今回はこれと全く違った変化する音の作り方を紹介します。前回のblogと同様、形状変化を元にした音の生成方法です。今回は前回のblogと違ってホワイトノイズを使わず、audioosc CHOPを使って三角波を利用しました。三角波や矩形波を使い基本波を発生させ、それに変調を掛け、フィルタによって音を調整します。これはアナログシンセサイザーで音を作るのと同じです。audioosc CHOPを元にソフトでアナログシンセサイザーを作製することに相当しています。図形を使うのはビジュアル化を兼ねるためで、音の観点からは必ず必要というわけではありません。しかし動きと同期した音を生成するのに役立ちます。私は形状変化から音を作ろうとしています。先回の例がそれです。今回、形状変化に図形を使った場合です。エンジンの回転数が上がると周波数が高くなるわけですが、これは発振器の周波数を上げることで実現できます。この後フィルターやイコライザーで音を調整します。しかしこれだけではいかにも単調に変化する音です。そこで変調を掛けて低い時と高い時の違いを作ります。結局変調することなのですが、この変調データをどうして作るのかという点が、図形を動かすことで作製することが特徴です。それではまず、図形による変調が無い場合を聴いていただき、その次に図形を使った変調をした場合を見ていただきましょう。

図形を利用した場合は、低い周波数でバタバタバタという、周波数を変えるだけでは得られない音が入っています。この音は図形と同期しており、中心の円の空いた部分が小さくなる場合が、低い周波数でバタバタした音になります。この時、三角形のサイズの変化は大きくなっています。反対に高い周波数では、中心の円の空いた部分が大きくなり、三角形のサイズの変化は小さくなっています。このように図形の変化に応じて音に変化を与えることができています。それではプログラムを見てみましょう。

audioosc CHOPは三角波を出力します。先回のblogではホワイトノイズを変調していましたが、今回は三角波を利用します。lfo CHOPで周波数を可変にしています。映像を使って変調しない場合は、三角波の出力がaudiofilter CHOP, audiopara CHOPに入り、音の調整をしているだけです。最初の音のプログラムはこれだけです。
次に図形による変調を加える場合を述べます。audioosc CHOPの三角波の後にmath CHOPがあります。この部分に図形から作製した信号を入れることでミキシング(乗算)します。次に図形部分を中心にしたプログラム部分を示します。

一番左のcircle TOPを変形した三角形が回転しながら、サイズが変更されます。上の映像はサイズ変更の周波数が10Hzの場合です。これが変調する信号の元になります。回転する角度は一定です。三角形の頂点の一つを選択し、その頂点の時間変化を求めます(x,y)。この軌跡を描いたのが、limit CHOPです。これを角度をずらして合成し、それをsop to CHOPでデータ化、bind CHOPでデータの最終値を検出します。この値をmath CHOPに入力してaudioosc CHOPとミキングしています。その後はフィルタによる音調整です。三角形のサイズの変化が大きいと映像の円が小さくなり、サイズ変化が小さいと映像の円が大きくなります。
この構成は元のaudioosc CHOPの三角波をどのように変調するかという問題で、三角形を動かすことによって変調しています。図形から音を生成するメリットは、先回のblog同様、映像と音の同期です。映像と音とを同時に扱えるTouchDesigner的な使い方と言えます。

まとめ

先回のblogと今回のblogで映像を利用して音を生成する手法を紹介しました。結局していることは変調で、変調する周波数を何から作るかという問題でした。動きの変化から作る場合、衝突の量から作る場合、そして今回、図形を動かすことで作る場合を紹介致しました。視覚と同期するという点がメリットです。先回のblogで述べたように、音の生成はAIが不得意です。そこに人の感性が活かせると思います。TouchDeisgnerでもソフトシンセを作製できることが分かりました。アナログのハードウエアシンセはもっともっと豊富な機能を備えています。これを真似してソフトシンセを組んでみると、様々な音が生成できるでしょう。

コメント