Device 30 Twitter経由で世界中とセッションできるパッチ by leico
ファイルをダウンロードする→Max Patch
※Macのみの対応となります
OSC over Twitter
Maxerの皆様こんにちは、leicoといいます。偉大な先輩方や恩師が参加しているこの企画に加わることができて、光栄に思います。本稿では先輩諸氏が既にユニークで素晴らしい音響処理のパッチをシェアしているので、今回僕は、あさっての方向からクレイジーなパッチを紹介したいと思います。
具体的には、手軽に世界中から自分のパッチを操作できるようにするというものです。どうやってそれを実現するかと言うと、私たちはSNSという便利なサービスでほぼリアルタイムに情報共有をしていますから、これを利用します。ものすごい精度や速度が求められる場合を除いて、専用回線やサーバを用意するのは労力と時間とお金の無駄です。既にあるものに相乗りさせてもらいましょう。
今回は、バックボーンにTwitterを用いてMaxパッチを操作します。なぜTwitterなのかと言いますと、①“Twitter Streaming API”を用いることでほぼリアルタイムでツィートを取得できる、②テキスト・ベースでやりやすい/分かりやすい/データが軽い、③バルスに耐える堅牢性、④将来URLを読めば写真/動画なども扱える可能性、といった理由です。
ストリーミングを受信する方法ですが、Maxに用意されている[maxurl]オブジェクト単体では不可能です。CYCLING '74のWebサイトにはFlickr用のサンプルが掲載されていますが、Twitterはより複雑な認証を行う必要があります。デフォルトのMaxでは認証部分を実装できないので、新たなエクスターナル[ray.twitteroauth]を制作しました。
今回のパッチではTwitter API群の中からuserstreamを用いています。これは過去にさかのぼることはできませんが、接続開始からほぼ遅延無しで自分のタイムラインを取得できるものです。自分やフォロワーのつぶやき、誰かのリプライなどを即座に受信できます。
次に、どのようなパラメーターをどう送るのかを考えてみましょう。少しトンチをきかせると、“/left/bpm 130/right/beat 16”といったツイートを送受信できることが分かります。そう、OSCを送受信できるのです。なので[udpreceive]を用いるときと同じような割り当て処理で、パラメーターを操作できます。また今回音量を操作するアドレス“/gain”には[line]が設けてあります。そのため“/gain 音量 到達時間 音量 到達時間...”、例えば“/gain 0 1000”で、0dBまで1秒で変化するようになっています。2つ以上の遷移設定も可能ですし、音量だけ渡せば即座に変化します。
パッチの構成と処理内容
[ray.twitteroauth]からのツイート・データはjson文字列(シンボル)で出力されます。[message]オブジェクトを介するとデータが変化してしまいますので、扱いに注意してください。jsonデータはいったん[dict]に入り、[dict]から必要なツイート・データを抜き出します。今回はリツイートした内容のテキスト、または取得したツイートのテキストを抽出しています。存在しない要素にアクセスすることがあるので、コンソールにエラーが大量に出力されますが、支障ありません。
演奏パッチでは左右別々の[metro]が用意され、[metro]のタイミングに合わせて[click~]が駆動し、パルスが出力されるだけのシンプルなものです。Twitter側から操作可能なのは左右の[metro]のBPMとビート、そして何サンプルのパルスを送るかという変数で、設定した変数に合わせランダムなパルス波が生成されます。そのほかは[live.gain~]の音量、[metro]のオンとオフで、対応するアドレスがパッチ内のコメントになっています。
エクスターナルの最新版やTwitter Streaming APIの利用方法ついて誌面では書き切れないので、サポート・ページを作成しました。こちらを参照いただけると幸いです。
leico
【leico Profile】カール・ストーンのゼミでMaxと出会う。ネットワークと音に関する表現を模索中。最近は大規模会場向けのラインアレイ音響シミュレーションで遊んでいたり。
CYCLING '74 MaxはMI7 STOREでオーダー可能