![見出し画像](https://assets.st-note.com/production/uploads/images/92270589/rectangle_large_type_2_fdd00d18d9a51ff72781651214471792.png?width=1200)
音の絵について
「音の絵について」
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」で駆動している。
6 法令について
音楽のデータを使うときは、言及するまでもなく、著作権法ほかの法令に抵触しないように留意する。
必要に応じて、契約書等の文書を作成する。
ただし、音楽のデータを、音の絵のアニメーションにだけ使用し、演奏をしない場合に、著作権法の射程が及ぶかどうかについては、よくわからない。いちおう、演奏に準じた取り扱いをすることが望ましいと思われる。
7 今後の展開
「音の絵」の可能性は、まだまだ未開拓の部分が多かろうと思われる。今後も「音の絵」の手法の可能性を探り、研究開発を行なってゆきたいと考えている。
8 さいごに
ここまで読んでくださった皆様には、感謝を申し上げます。
ありがとうございました。
※この記事は Houdini Advent Calendar 2022 ( https://qiita.com/advent-calendar/2022/houdini )に参加しています。
この記事が気に入ったらサポートをしてみませんか?