見出し画像

音の絵について

「音の絵について」

1 はじめに

僕がアニメーションを作るうえで使う手法に「音の絵」がある。「音の絵」とは、簡単に言うと、音楽でアニメーションを駆動(drive)するというものだ。なお、「音の絵」の名称は、僕が命名したもので、世間一般に使われているものではない。

音でアニメーションを駆動する方法としては、Audio In CHOP Nodeを使う方法がある。これは、音の波形を取り出して利用するものだ。Houdiniの学習を進めているときに、これを試した人は多いことと思う。僕も試したことがあった。

これに対して、「音の絵」では、Midi In CHOP Nodeを使って、標準Midiファイル(SMF : Standard Midi File)のデータを利用する。言い換えれば、「音の絵」では、音のデータではなく、楽譜のデータを利用するということになる。

SMFは、通常、Midi音源を鳴らす目的で作られ、利用される。つまり、SMFで、Midi音源をコントロールする、ということになる。このコントロールの対象を、Midi音源ではなく、Houdiniで使用されるいろいろなパラメータとする手法が、「音の絵」ということになる。

同じSMFで、一方ではMidi音源を鳴らして音楽を演奏し、もう一方ではHoudiniのパラメータを駆動する。そうすることによって、理論上は、音楽とアニメーションを一致させることができる。あたかも、音楽に合わせてキャラクターが踊り、キャラクターの動きに合わせて音楽が鳴るという演出に、あるいはまた、プリプロなどに使うことができることになる。

音楽と映像とがシンクロしているアニメーション作品として、最も有名なものは、ウォルト・ディズニーが1940年に公開した「ファンタジア」だろうと思う。生のオーケストラが演奏した音楽に合わせて、色彩豊かなアニメーションが繰り広げられる名作だ。

僕は、8ミリフィルムの時代でも、アニメーションによるファンタジア・フィルムを作っていた。そして、今は、Houdiniを使って、音楽と映像と、そして文学的な要素を加えた「響想詩」というジャンルの抽象的なアニメーション・フィルムを作っている。

2 Midiデータの取得

Midiは、電子楽器をコントロールして鳴らすための規格だ(https://ja.wikipedia.org/wiki/MIDI)。Midi機器同士を接続するためのハードウエアの規格、データフォーマットなどのソフトウエアの規格が定められている。

Midiデータは販売もされているが、僕の場合は自分で作っている。Midiシーケンサソフトで音楽のデータを作り、これをSMFに出力する。僕は、Apple Logicを使っている。

そして、生成したSMFを、HoudiniのCHOPの「Midi In」ノードで取得する。

SMFには、Midiデータが格納されているが、主に使うデータは、音を鳴らす「note on」のデータと、音量などを調整するコントロール・コード「cc」のデータだ。

3 「note on」

「note on」のデータをMidi音源に送ると、Midi音源は音を鳴らす。そして、「note off」のデータをMidi音源に送ると、Midi音源は音を止める。

音の発音と停止を司るMidiデータは、「note on」と「note off」の、ふたつしかない。Midiシーケンサの上では、音が鳴っている時間、つまり音符の長さを表現するためのデータである「duration」があるが、Midiデータには、「duration」はない。また、「note on」と「note off」のデータに、鳴っている音を識別するデータは含まれていない。さらには、「note on」と「note off」とが対になっていなければいけないとか、「note on」を続けてはいけないとか、「note off」を続けてはいけないとか、そのような規約はない。実際に、ピアノの曲の場合に、同じ音を続けて打鍵することがあり、つまりこれは、「note on」を続けることを意味している。

このことは、HoudiniでMidiデータを扱う上では混乱の原因となる。実際にテストしてみると、Houdiniの「Midi In」ノードでは、「note on」と「note off」のデータの数を数えなくて、「note on」が来たらばデータをオンにし、「note off」来たらデータをオフにするようである。

なお、「note on」のデータは、音の高さのデータと、打鍵の強さのデータ(Velocity)を持っている。

(2)「cc」

「cc」は、コントロール・コードのことである。「cc」は、たとえば、音量をコントロールする。最小値は「0」で最大値は「127」である。「CC=0」のときには消音、「CC=127」のときには最大音量となる。

このことは、一見すると、分解能が127分の1であることを意味しているように見えるが、次の方法によって、127分の1よりも細かい分解能を実現することができる。

「cc」を連続的に変化させたいときに、Midiシーケンサは一般に、離散的な値の間を補完する機能を持っている。たとえば、1小節目の最初に「cc=0」を指定し、10小節目の最後に「cc=127」を指定すると、その間を、滑らかな値で保管してくれるという機能だ。この機能を使うことで、Houdiniの「Midi In」ノードの出力において、滑らかな値を得ることができる。

4 使用例

僕が、これまで作ったフィルムの中で使用した例を紹介する。

(1)キャラクターがフルートを演奏する。

人形のキャラクターがフルートを持って、実際に音楽を演奏するというアニメーションを作ったことがあった。

フルートのキーが運指の通りに動くリグと、キャラクターの指が運指の通りに動くリグを組んでおき、「Midi In」ノードの出力に従って、フルートを指を動かす、という仕組みのものだ。

いちおう動作はしたが、イーズやブラーの表現ができなくて、ぎこちない動きになった。今後の研究開発の余地が大いにある出来となった。

(2)ピアノの鍵盤を動かす

音楽に合わせて、ピアノの鍵盤を動かした。

このケースも(1)と同様、イーズやブラーの表現が課題である。

(3)水面を波立たせる

水面に雨粒が落ちたときにできる円状の波を、音が鳴ったときに発生させる、というもの。音楽によって異なる波の干渉模様ができる。

(4)オブジェクトを出現させる

音が鳴ったときに、ジオメトリを発生させる、というもの。

(5)オブジェクトを踊らせる その1

あらかじめアニメーションを作っておき、「note on」のデータで、そのアニメーションをスタートさせる、というもの。

キャラクターが踊る、蝶が舞う、花を咲かせる、蝋燭を灯す、など。

(6)オブジェクトを踊らせる その2

「cc」を使って、ジオメトリのトランスフォームのアトリビュートを増減するもの。

5 サンプル

本記事のために作ったサンプルムービー。画面中の、シーケンサ・ウインドウを除くジオメトリは、SMFで駆動している。水面、鍵盤、蝶は「note on」で、星形は「cc」で駆動している。

https://youtu.be/9XDrFQl0IFc


6 法令について

音楽のデータを使うときは、言及するまでもなく、著作権法ほかの法令に抵触しないように留意する。

必要に応じて、契約書等の文書を作成する。

ただし、音楽のデータを、音の絵のアニメーションにだけ使用し、演奏をしない場合に、著作権法の射程が及ぶかどうかについては、よくわからない。いちおう、演奏に準じた取り扱いをすることが望ましいと思われる。

7 今後の展開

「音の絵」の可能性は、まだまだ未開拓の部分が多かろうと思われる。今後も「音の絵」の手法の可能性を探り、研究開発を行なってゆきたいと考えている。

8 さいごに

ここまで読んでくださった皆様には、感謝を申し上げます。

ありがとうございました。

※この記事は Houdini Advent Calendar 2022 ( https://qiita.com/advent-calendar/2022/houdini )に参加しています。

この記事が気に入ったらサポートをしてみませんか?