萩萩日記

世界に5人くらい存在するかもしれない僕のファンとドッペルゲンガーに送る日記

ライブ会場で演奏している曲をTwitterを通じてみんなに操作してもらう方法

ライブ来てくれてありがとう日記はまた書きます。

とりあえず自分の備忘を兼ねて、こないだのライブでやった「in T - trance variation of Terry Riley's in C powered by Twitter」の実現方法など。ちなみに映像はここにUstの録画があるみたい(僕は未見)。

で、今回は、というか今回もProcessingを使ってプログラムを書きました。ほんで、in Cって曲は「パルスと呼ばれる一定の音の上で、みんなで順番に音のパーツを繰り返して演奏」する曲だから、本当は「次のパーツに行く」という処理をTwitterを介してやるようにしたかったのね。なのだけど、音のループ終わりで発生するイベントがわからず、結局やったのは、「ハッシュタグ #in_t をつけてつぶやくと、リアルタイムにフィルタがかかったり外れたり」というものでした。ま、実際やってみたら、このぐらい簡単な方がライブ向きだったなとは思ったけど。

さて、肝心の実現方法。

これが実はカンタンで、Processing用のTwitter Streaming APIライブラリであるTweetStreamをダウンロードして展開し、現れたtweet_streamってフォルダをProcessingのlibrariesフォルダの中に入れておくだけ。あとはサイトにあるサンプルを見ながら作ればオーケー。

僕の場合は#int_tってハッシュタグを検索したかったので、setupで、

TweetStream s = new TweetStream(this, "stream.twitter.com", 80, "1/statuses/filter.json?track=%23in_t", "screen_name", "password");
s.go();

ってやっておいてから、TweetStreamで定義されてるtweetってイベントで、

void tweet(Status tweet) {
  tweetedBy = tweet.user().screenName();

  filterValue = filterValue == 1 ? 0 : 1;

  applyFilter();
}

てな感じで、「ツイートした人のスクリーンネーム」を取得して、フィルタのオンオフを切り替えて、実際のフィルタの設定(applyFilterメソッド)を呼び出す感じ。「三項演算子使うの変じゃない?」とか「グローバル変数とか使うやつは死んだ方がいい」とか言わないでね。なんせライブの前の日の夜8時からようやく作り始めたので(笑)。

ま、というわけで、「きっと誰かがライブラリ作ってるだろう」という目論見で進めて正解だったという訳でした。

よかったよかった。