音楽作製の基礎3:移動するオブジェクトのデータ抽出

自動作曲

要旨

先回のblog「ディスプロポーション」で使うプログラムを作製している際に、お椀の中の球体を増やし、それぞれが楽器のノート・ナンバーに対応するようにすれば、ディスプロポーションを音として表現できる例になるな、と思いました。映像全体が大きく変化する場合は、映像からデータ抽出します。私の場合は映像の複雑さをデータとして利用してきました。しかし後で見ていただきますが、映像全体はあまり変化がないが、部分は変化しているという映像も多くあります。この場合、変化する場所が決まっていると、その部分を切り出し、拡大して変化を得る方法があります。しかし変化する部分が比較的小さく、かつ、あちこち移動する場合はこの方法も使えません。その際、今回の方法なら曲にできます。またお椀の中の球体が動く例は、揺らぎを作る方法にもなっています。揺らぎを作る方法は、2026.06のblog「映像による音生成4・・・」の海岸の音の作製や、2026.01.19の「映像による音生成3・・・」の炎の音の作製、のように、変調信号としても利用することができます。現象の解釈としては「擾乱を伴う反復系」の例とも言えます。

作製例

まず作製した映像を視聴していただきましょう。

球が3つになっている点が、先回のblogと違っています。またお椀の底の高さ方向の動きにランダム性を入れています。底の動きで球の動きが複雑になるところが面白いところです。音楽は先回はディジタルシンセで作製しましたが、今回はMIDIです。3つの球はそれぞれ別の楽器に対応しています。プログラムは基本的なところは、2026.02.06のblog「音楽生成の基礎2:データから音楽を作る方法」と同じですが、細かくは随分と違っています。何分古いプログラムを少し変えて使っているので説明を省きます。2026.02.02のblog「音楽生成の基礎1:データから音楽を作製するための準備」では、気温のデータを読み込みましたが、今回はTouchDesignerで作製した球の動きをデータにして、udp通信のOSCプロトコルを使ってMAXに送っています。通信方法は「音楽生成の基礎1:・・・」と同じです。データがTouchDesignerで作製した動的な値である点が違っているだけです。動きのデータはx, y, zの位置ですが、お椀の底の中心からの距離に変換したデータと、これらの3つの球の平均値に変換しています。中心からの距離のデータがMAX側で各楽器のノート・ナンバーに変換されます。そして3つの球の平均値が音の強さベロシティに使いました。ベロシティは3つの楽器共通です。ですので、音の大きさは3つの球が籠の外側の時に音は大きく、中心に集まると小さくなるように抑揚がついています。

移動するオブジェクトのデータの作り方

TouchDesigner側のプログラムは、TouchDesignerが用意しているBullet Solverを使います。オブジェクトは球とお椀ですが、これらはactorと呼ばれます。動くactorである球はDynamicに、動かないactorであるお椀はStaticに設定します。球がお椀に衝突する振る舞いをシミュレーションできます。球を複数用意するのにreplicator COMPを使います。これらの説明は、Youtubeの「https://www.youtube.com/watch?v=1kDCUhx7uUg」にありました。参考にしてください。この動画と異なる部分は、お椀の底をmagnet SOPとmetaball SOPを使って動かしている点と、球の位置を取り出している点です。特に球の位置(x,y, z)を取り出す部分は、底の影響を受けた後の位置を直接取り出すことができ素晴らしい機能です。この部分のプログラムを次に示します。

repricatorで球を複製し、それぞれをobjet CHOPを使って(x, y, z)を取り出します。それぞれのobject CHOPのTarget Objectにactor1, item0, item1を設定し、OutputタブのComputeをMesurements、positionに設定するだけです。これは大変便な機能です。注意点としては、actorへの入力はPolygonである必要があります。お椀はMeshで作りますが、actorの前でconvert SOPによりPolygonに変換する必要があります。

まとめ

ディスプロポーションを曲で表現してみました。球の位置(x, y, z)をobject CHOPを使うことで取り出すことができます。つまり衝突後の位置を追っていくことが可能です。音楽の面では、映像の変化が部分的であちこち動く場合に、映像の複雑さをデータとして使う方法では、値が小さくなり曲に変換しにくい問題がありましたが、今回の方法ではそれを解決しています。またこの方法は音を変調したりする際に使う揺らぎのデータ作製に使えます。

コメント