View on GitHub

OSCillatter

Sound & Recording Magazine support page

OSCillatter

Sound & Recording Magazine 2017年3月号 Maxで作る自分専用パッチ補足ページ

制作の経緯とか動機とか目標とか

利用方法等をさっさと知りたい方は読み飛ばして下の方にあります。


何かネタないでしょうか?

とお話がきたからなのですが、それじゃあ味気なさすぎるのでこのコラムの依頼をきっかけになぜエクスターナルを作ったかとか書きます。

何を提供するか/作るか迷いましたが、今回は音じゃなく音周辺を魔改造することにしました。 やっていることはこの2つです。

何をどうするかはサンレコのWebか雑誌で確認ください。 ご覧になってる方の創作や発想のヒントになれば幸いです。

前身の作品の話

これが ray.twitteroauth の元です。私の別のプロジェクトで ray.sniff~ というのがありまして、それとTwitter Streaning APIを組み合わせTwitterをベースに様々な情報を送り合ってみんなで演奏しよう。 という試みです。動画は途中バージョンのものでHEAD1 はもう少し変化しています。

この時もTwitter Streaming APIを利用していました。 Twitterに貼られる画像やSoundCloudの音源、 誠に残念ながら今は亡きVine動画、gmaps.jsによる位置情報表示をWebブラウザが担当し、 OSCでMaxを制御する部分はPHPサーバからOpen Sound Control for PHP を利用してMaxにOSCデータを送っていました。

……これHEADの話かもしれません。この動画の時点ではPHPでのTwitter Streaming APIのテストがうまく動かなくて、 C言語とcURLを使った方法では動いていたので、 PHPからC言語のプログラムをexec で呼び出し、出力をPHPで受け取り、OSCはosc.phpでMaxへ送るようにしていた気がします。

最終的に、ray.sniff~ からの通信データの音、SoundCloudの音源、 Vineのループ音源とループ映像/投稿された画像によるVJ—みんなで寄ってたかって 行うセッション。全てのデータ共有が映像へ音へ反映され、コミュニケーション即ち音源となり得る場を作り出す試み。 それがこのプロジェクトです。

ray.twitteroauthつくることになってしまった話

OSCtterのTwitter Streaming API部分をMaxオブジェクトにしたのがray.twitteroauthです。

これができたら誰でもTwitterでOSCをツイートして遠隔地にあるMaxパッチを、ほぼリアルタイムに制御することができるんですよ。 アドレスさえ知ってたら会場/配信関係なく観客全員がライブに参加できるんですよ? 何か専用アプリ入れる必要もなしに。すごくないですか?

というのが製作動機かつ、掲載のお話をいただいた時に推した部分です。

最初はmaxurlでできるんじゃないかと思っていました。 maxurl、ヘルプ見ていただくと分かるのですが、さっき登場したcURLをMaxで使えるようにしたオブジェクトなんです。 こんなサンプル (日本語はこっちが詳しい) がアップロードされているし、これでいけんじゃね? 使ったことあるから大体の使い方わかるし。って簡単に考えてました。

まー無理でしたね。maxurlが使いにくいのと、Twitter OAuth 突破用REST APIヘッダの準備が無理でした。

なので、前回同様いろんなライブラリを引っ張ってきて継ぎ合わせて、 前回のC言語のプログラムを流用してMaxオブジェクトを作ろうってなったんです。

制作ぐだぐだ話

ここ飛ばして大丈夫です。

まー動かないっすわ。Twitterの仕様が変わったのか、それともライブラリ使い方間違っているのか。 開発と同時期にTwitter DevelopperサイトのOAuth Testが落ちてるし

あとlibOAuth(Github) の開発が止まっているのか最新のOpenSSLに対応していない。

他のライブラリならよかったのだけれど、OpenSSLの更新追従できてないのはマズいだろう、 と思ったのでOpenSSL最新のものに対応したlibOAuthを作ったり。

動くようになってMaxに移植したらMax自体がフリーズして戻ってこなくなり、 cURLのドキュメント読んで内部処理を変更したり。

そんなことをしていたら原稿の締め切り直前までプログラムが動かないという。 無事期限内にデータを渡すことができてほんとよかった。

制作したエクスターナルの紹介

今回実は2つエクスターナルを作っています。 ざっくり説明すると以下

現状の注意点

macOS 64bitのみで動作します。

32bit版、及びWindows版は間に合いませんでした。

GETメソッドしか動きません

しか対応してないです。自分のタイムラインか全ツイートの1%は取得できますが、 ハッシュタグや発信地域でフィルタリングすることができません。

[macOS] Maxを64bitで起動する方法

Maxについて

ツールバーのMax -> About MaxでMaxのバージョンが確認できます。

インストール時の初期設定ではMaxは32bitで動作しています。

過去開発されたエクスターナルの多くが32bitのみ対応で放置されているからです。

求ム:エクスターナルのコントリビューター

Maxのバージョンの変更方法です。Finderでアプリケーションフォルダを開き、 Max.appで右クリック、情報を見るを選択します。

情報を見る

Max.appの情報ウィンドウ中央辺り、

Max.appの情報

となっているので

と変更します。

この状態でMaxを起動した時32bitのままの場合は、macOSを再起動させてみてください。

これで64bitモードで動作します。

Twitter Streaming APIを使うために必要な準備

参考

電話番号を登録する

電話番号登録画面

Twitterアプリを作成するには、まず電話番号の登録が必要です。

アプリを作成するTwitterアカウントにログインして、「設定」メニューの「モバイル」を開きます。

以下のように、電話番号を入力します。

  • 「国/地域」…「日本」
  • 「電話番号」…先頭の「0」が「+81」に変わるので、それ以降の番号を入力

電話番号を入力したら、その電話番号宛にショートメール(SMS)が送信されるので、 そこに記載されている認証用コードを入力します。


Twitter Appsでアプリ作成

https://apps.twitter.com/にアクセスします。

Twitter Application Management

画面の Create New App をクリックします。

アプリの概要を記述して同意

App Description

画像の内容を、各々の目的や領域に合わせて記述して、利用許諾に同意してCreate your Twitter Applicationでアプリケーションを作成します。

作成成功すると作成したアプリのDetailsタブにジャンプしますが、 よく他の人と名前被りが発生して作成できないことがあります。

各種キーを取得

必要となるのは

の4種類です。

自分のアカウントのキーに関してはKeys and Access Tokensタブで確認、取得が可能です。

API Key and Token

Access Token、Token Secretはページ下部、Create my access Token をクリックすると取得できます。

Token and Secret

ここまでで必要なキーが取得できました。

役立つかもしれない情報

Twitter活用Tips&注意事項

Maxエクスターナルオブジェクトとは

連載で既にいくつか出てきてますが、特に解説もなかったと思うので少し紹介します。 Maxに元から入っているオブジェクトで大抵のことは実現することができます。が、それだけでは実現不可能なことが まれによく あります。 そういう問題に直面した際、Maxには他のプログラミング言語でオブジェクト制作する機能があるんです。

その機能を使って、個々人が作ったMaxオブジェクト、それがMaxエクスターナルオブジェクトです。 パッチではないです 。内部は C/C++ 、最近では FAUST というものを使って記述されていたり。 DAWで言うところのAUやVSTのようなものです。Maxパッチと同様、そしてVSTと同様にこちらも世界中で制作され共有されてます。

このオブジェクト、デフォルトのMaxでは実現困難な処理を行うものが数多く存在し、速度も高速ですが、OSやCPUに依存します。 macOS用はmacOSで、Windows用はWindowsで制作しなければなりません。 またMaxが32bit版なのか64bit版なのかということも問題になってきます。 32bit用で64bit用は動きませんし、64bit用で32bit用は動きません。

Maxエクスターナルオブジェクトオススメインストール方法

オプションのファイル初期設定

Maxのツールバーのオプション -> ファイル初期設定を見ると

ファイル初期設定

書類/Max 7/Libraryにリンクが貼られていることがわかります。 こちらに例えばexternalsフォルダを作成し、必要なエクスターナルをインストールすると使用可能になります。 フォルダ名externalsはわかりやすい名前で大丈夫です。

様々なMaxのバージョンが混在している環境の場合、例えば書類/Max/externalsフォルダを作成し、 個々のMaxのファイル初期設定で書類/Max/externalsフォルダを加えると全てのバージョンで利用できるようになります。

フォルダを加えた状態

この時、右側のSubfoldersを

としておくと中にフォルダあった場合、フォルダの中身も検索します。

ray.って何?

名前空間として使っています。 他のエクスターナル製作者とオブジェクト名が被ってしまうとMaxで呼び出せなくなるので、 自分の製作したオブジェクトにはray.を付けています。

インスパイア元はIAMASの赤松正行教授です。

その他

リポジトリ

最新バージョンはこちら。雑誌刊行時は同一。

共同開発者募集

ray.twitteroauth/ray.OSCiter利用ライブラリ


1
git用語で最新のデータのこと。