Creative Coding向けのシーケンサーについて

[クリエイティブコーディング Advent Calendar 2016](http://qiita.com/advent-calendar/2016/creative-coding)、勢い余って1日目に参加します。
勢いだけで書いているので、指摘コメント大歓迎です。

# Creative Codingとは
映像や音、照明を利用してアート&テクノロジーするためのプログラミングのこと。
(って書くとなんかすげーださいな…)
![Creative_coding_breakout_modification.png](https://qiita-image-store.s3.amazonaws.com/0/13971/6c9543d3-9405-e199-4375-6c2c3fcd0ee1.png)
(画像は[Wikipedia](https://en.wikipedia.org/wiki/Creative_coding)より)

[Wikipedia](https://en.wikipedia.org/wiki/Creative_coding)の概要文をGoogle翻訳させると…

> Creative Codingは、何か機能的ではなく表現力のあるものを創造することを目指すコンピュータプログラミングの一種です。ライブビジュアルやVJの作成、ビジュアルアートとデザイン、アートインスタレーション、投影と投影マッピング、サウンドアート、広告、プロダクトプロトタイプなどの作成に使用されます。

だそうです。

## 代表的なツール/フレームワーク
* [openFrameworks](http://openframeworks.cc)
* [vvvv](https://vvvv.org/)
* [Cinder](https://libcinder.org)
* [Quartz Composer](https://ja.wikipedia.org/wiki/Quartz_Composer)
* [Vuo](http://vuo.org/)
* [Max/MSP](https://cycling74.com/products/max/)
* [Pure Data](http://puredatajapan.info)
* [Processing](https://processing.org)
* [Unity](https://unity3d.com)

ちょっと前ならAdobe Flashとかも入ってたんでしょうね。
js製ライブラリなども多数あるので、挙げ始めたらきりがないです。
それぞれの概要や作例については[田所先生の講義資料](http://yoppa.org/ma2_14/5566.html)や[馬場先生の資料](http://tetsuakibaba.jp/index.php?page=workshop/startup/main)がとても参考になります。
いずれも特徴があって、有償/無償、映像に強い、音響処理に強い、ビジュアルプログラミング、と用途と目的に合わせて選ぶことができます。

## エ・オト・アカリ、全部制御したいんだ！
きっと、どれを選んでもできます。
でも、それぞれの得意を活かして、連携させることでもっと楽にいろんなことができる場合もあります。
例えば、「openFrameworksで描いた絵に合わせて、Max/MSPで音を作る」など。
この手の成果物は往々にしてPCリソース的に重くなりがちなので、複数台で負荷分散できた方が嬉しいですし、
試行錯誤するにも、1つの巨大なソースコードより、それぞれに分かれていた方がやりやすい場面は多いと思います。

## 連携させるための代表的なプロトコル
やろうと思えばTCP/IPやUDPで独自プロトコルを作っても良いでしょうが、前述のフレームワークはだいたい下記のプロトコルがすぐ使えるようになっています。

### 映像
プロトコルではないですが、MacOSなら[Syphon](http://syphon.v002.info)、Windowsなら[Spout](http://spout.zeal.co)を使うと複数画面の同期などが比較的簡単に実装できます。

### 音響
[MIDI](https://ja.wikipedia.org/wiki/MIDI)も、厳密には音そのもののデータではないですが、楽器的なものを相手にやり取りする際には非常に便利です。

### 照明
灯体に[DMX512](https://ja.wikipedia.org/wiki/DMX512-A)端子があったら、PCから簡単に輝度や色、動きを制御できます。
DMX制御できる照明は[1,500円](http://amzn.to/2goGjBZ)ぐらいでも売っているので、自宅開発とかテストに一つ持っていても良いですよね。

### その他
[OSC](https://ja.wikipedia.org/wiki/OpenSound_Control)は、本来は音声伝達用プロトコルとして生まれたらしいですが、その柔軟性から、ちょっとしたデータのやり取りからタイミングの同期など様々な場面で使われています。
詳しくは[田所先生の講義資料](http://yoppa.org/ma2_10/2279.html)をどうぞ。

## シーケンサーを使ってみよう
センサーなど外部入力に呼応するインタラクティブな作品の場合、例えば「openFrameworksで描いた絵に合わせて、Max/MSPで音を作る」ならば、前述のプロトコルを駆使して指揮者となるのはopenFrameworksが良いかもしれません。

一方で、プロジェクションマッピングなどでは「起動して最初の10分間はA状態を、その後20分間はB状態、そしてまたA状態に戻る」のように時間ドリブンだったりします。
そういう場合、指揮者役をわざわざプログラミングするのは面倒なので、タイムライン型のシーケンサーを使うこともできます。

### Vezer
Imimotが作る[Vezer](http://imimot.com/vezer/)は割と新しめの気鋭のシーケンサーです。
![vezer_screenshot_01.jpg](https://qiita-image-store.s3.amazonaws.com/0/13971/591e59c8-8755-bab4-c728-43ad2a6299da.jpeg)
無料のデモモードではセーブができませんが、一回試用してみる価値はあると思います。

### Duration
YCAM製の[Duration](http://www.ycam.jp/archive/software-hardware/open-source-software/duration.html)はソースコードも[公開](https://github.com/YCAMInterlab/Duration)されています。
![software-hardware_duration_duration-1.jpg](https://qiita-image-store.s3.amazonaws.com/0/13971/8bca66cc-e91c-780c-2118-57715251aa70.jpeg)
OSCに特化してますが、前述の通り、OSCそのものがめちゃくちゃ柔軟なので、Durationだけでできることは沢山あります。

### OSCurator
![OSCurator.png](https://qiita-image-store.s3.amazonaws.com/0/13971/a758c8d4-b07c-c801-0557-153177c82717.png)

[OSCurator](https://osculator.net)はシーケンサーというより、中継器ですがご紹介します。
単純なOSCの宛先やメッセージを編集しながら中継したり、MIDI-OSCを相互変換したりすることができます。
Logic XをOSCでどうしても制御したいなど、ちょっと特殊な事情が付きまとう時に非常に便利です。

### QLab
Figure53の[QLab](https://figure53.com/qlab/)も、厳密にはシーケンサーではなく映像音声照明をマルチに扱えるプレイヤーですが。
素材さえあればプログラミングすることなくCreative Codingらしきものができてしまうのですが、
ちゃんとOSCを送受信する仕組みやDMXを吐く機能も持っています。
![QLab_3_Screenshot.png](https://qiita-image-store.s3.amazonaws.com/0/13971/732d4f53-4f26-7deb-7f0c-50660b8370dd.png)
(画像はVersion3です)
値段が高い($399〜)のが玉に瑕です。

## まとめ
それぞれの使い方についてはリクエストがあったらそのうち書きます。

Rhizomatiks Researchの真鍋さんが[WIREDの記事](http://wired.jp/series/wired-audi-innovation-award/24_daito-manabe/)でこんな風に語っていました。

> 最近ではゲームエンジンの「Unity」や「openFrameworks」といったプラットフォームの登場によって、誰でもできるようになりました。結果的に、いま、テクノロジーの新しさではなくコンテンツで勝負していく時代になったわけです。

本当にその通りで、だからこそツールなりシーケンサーなりを上手に使って、妄想→具現化→試行錯誤のスピードをもっと上げていきつつ、ツールの限界が表現力の限界にならないよう気をつけたいと思います。