読者です 読者をやめる 読者になる 読者になる

orangeProse別館

orangeProse(本ブログ)の補助

Processingでミュージックビデオを作ったぽ

Programming book gadget music Processing

いまさらだけど、ProcessingでMVを作ってみたので、プロセスを、自分用にメモ。

ReasonとAbleton Liveで楽曲を作り、SoundCloudにアップ。ジャケ写(カバーアート)は過去に自分が撮影したものを、フォトショで加工し、Processingでさらに加工した。この写真の別バージョンは、500pxに以前アップした:

Lake Inawashiro, evening by Hideo Saito on 500px.com

カメラはOLYMPUSのPen Lite。RAW現像も、付属のソフトでやっている。

SoundCloundはこれ:

f:id:hidex7777:20170104211028j:plain

このカバーアートは、

  • 元の写真(RAW現像とフォトショで加工済み)を1080px四方にトリムし(Instagram向けに)
  • Processingで15ピクセルごとに色彩を走査して(loadPixel()関数を使うとpixels[]配列に入る)
  • brightness()関数で明度を取って、明るい方から順に「明るさの数値÷3ピクセル」を直径とした円で画像を埋めていく
  • 1秒に4フレームぐらいのアニメーションにする

というコードで視認しながらsaveFrame()した。

YouTube用には、もう少し複雑なことをやりたかったのだけど、結果的に、あまり動きのない、地味なビデオになった。

  • まず元の画像から、get()関数で、50ピクセル四方の正方形の画像を取得し、オブジェクト配列に入れる
  • 上述の「明るさ÷3ピクセル」の円で画面を埋める(これが初期画面)
  • フレームレート4fpsで、アニメーション
  • オブジェクト配列に入っている正方形を、ランダムに、1フレームにつきひとつ、不透明度50%で表示させる

というだけのもの。

※Processingで画像データを扱う方法については、yoppa.orgさんが参考になった。

それで結局こうなった:

地味だけど、まあ、いいんじゃないでしょうか。

動画の書き出しには、saveFrame()で画像ファイルとして全フレームを書き出して(jpgでOK)、Processingのムービーメーカーでmovを書き出す。Processingのムービーメーカーでmovを書き出すと、変換前の、「mov一歩前」みたいなファイルができて、Mac版のQuicktimeでこれを開くと、ちゃんとしたmovファイルに変換してくれる。Windows版だと、なんか変なことになる(Pro版じゃないとだめなのかな。でもサポート終わってるんだよね)。

ぼくはWindowsで書き出した画像をzipで野良うpろだに上げて(3GBぐらいあるから)、Macでmov→MP4に変換まで行い、DropboxWindowsに送り返す、という面倒くさいことをやった(WinとMacが置いてある部屋が別なので)。

WindowsのAviUtlでいろいろ編集して完成。

ついでにプレビュー版と称する10秒ぐらいのカットを書き出して、Instagramでプロモした。

Instagramにアップする時に、タグをつけるわけだけど、ふだん、Processingで遊んだ画像をアップするときにつけるタグ以外に、音楽のタグ(今回は#electronicaとか#droneとか)をつけたのだけど、ジャンルが複数に渡ると、反応がよいなあ、と思った。まあ、#droneで、あの「ドローン」のアカウントがいっぱいひっかかってしまうのだけど。

「あの」ドローン:

それと、楽曲を作り始めてから、音源をアップし、ミュージックビデオをアップし、プロモも行う、というところまでぜんぶ一人でできて、ほとんど金がかかっていないというのも、よいことだなあ、と思った(カメラのレンズが欲しいなあとは思う)。

『[普及版]ジェネラティブ・アート』は、人生で今までに読んだプログラミング入門書のなかで、一番面白かった(「普及版」を買うと、カラー版のPDFをダウンロードできて、便利)。厳密にプログラミング入門書とは言えないのかもしれないけど。線を描くのにline()関数を使えば楽だけど、それでは面白くないのでnoise()関数でパーリンノイズを使うとか、円を描くのにellipse()関数を使えば楽だけど、三角関数を使うとか。でも、無駄に遠回りしたり、無駄に面倒なことをやったりしているわけではなくて、出力が美しかったり、システムの創発特性を生み出したり、複雑さと単純さを両立させたり、といったことは、これからのプログラミング(UI/UXについても、そうだ)にとって重要なことなんじゃないか、とも思った。