Max/MSP/Jitter」カテゴリーアーカイブ

雰囲気メガネのMIDI/OSCプロトコル

間もなく(おそらく)出荷される雰囲気メガネでは、独自のアプリケーション開発のためにSDKが提供されます。これはObjective-CまたはSwiftというプログラミング言語を用いる本格的なものなので、もう少しお手軽な方法としてMIDIとOSCを用意しています。OSC(OpenSound Control)はMaxなどで簡単に扱えますし、MIDIなら鍵盤を弾いたり、ツマミをグリグリするだけです。

MIDIやOSCをサポートしているウェアラブル・デバイスやモノのインターネットと呼ばれる製品は珍しいと思いますが、これこそが雰囲気メガネの特徴のひとつですね。そこで、ここでは一足早く雰囲気メガネのMIDIとOSCのプロトコル【暫定版】を説明します。正式なドキュメントは開発者向けサイトで公開されるはずです。

雰囲気メガネでのMIDI/OSC

MIDIもOSCも雰囲気メガネのiOSアプリに対してデータを送り、アプリは雰囲気メガネとリンクされている必要があります。つまり、雰囲気メガネ・アプリがMIDIやOSCと雰囲気メガネとの中継役になるわけです。雰囲気メガネ・アプリでは設定ボタンからMIDI/OSC画面を開いて設定を行い、この画面でのみMIDIやOSCを受け取るようになっています。

Fun-iki-MIDI-OSC

雰囲気メガネのMIDIプロトコル

MIDIに関しては、MIDI/OSC画面でMIDIスイッチをオンにするだけで、それ以外の設定はありません。MIDIのすべての経路を受け入れて、すべてのMIDIチャンネルを受け付けます。CoreMIDIに対応していればネットワークMIDIでもバーチャルMIDIでも構わないし、物理的なMIDIインターフェースでも構いません。最近登場したMIDI Over Bluetooth LEも制約があるようですが一応動作しました。何らかのMIDIメッセージを受け取ると、MIDIスイッチの左横にある小さな丸が点滅します。

Network MIDI

MIDIメッセージでは、まず、もっともポピュラーなノート・オンおよびノート・オフ・メッセージに対応しています。MIDI鍵盤を弾けば雰囲気メガネがピカピカと色とりどりに光るわけです。雰囲気メガネの紹介ビデオでもグランド・ピアノを弾いているシーンがありましたね(気分はディスクラビア)。この場合は、ノート・ナンバーを色相として扱い、どのオクターブでもド(C)が赤色で12半音で色環を一周する割当になります。ベロシティは明度の指定で、最大値である127なら最も明るく光り、数値が小さいと弱い光りとなり、0なら光りが消えます。強く(速く)鍵盤を叩くほど明るく光り、鍵盤から指を離せば光りが消えるわけですね。ノート・オフ・メッセージはどのような値でも光りが消えます。

MIDIノート・オン・メッセージ
ノート・ナンバー:色相(図参照)
ベロシティ:明度(0:消灯〜127:最も明るい)

Fun-iki-midi-note
MIDIノート・オフ・メッセージ
消灯

ノート・オンとノート・オフでは色相と明度しか指定できないので、彩度はコントロール・チェンジの1番で指定します。これはモジュレーションなので、多くのMIDIキーボードでは鍵盤の左横にあるホイールやレバーを動かせば彩度が変わります。ただし、コントロール値がゼロの時に彩度が最大で色がはっきりし、値が大きくなるにつれて彩度が下がって白っぽくなります。モジュレーションを上げて「白熱」した演奏になるわけです。

MIDIコントロール・チェンジ
コントロール・ナンバー1(モジュレーション):彩度(0:彩度最大〜127:彩度最小)

指定した色に変化する遷移時間はコントロール・チェンジの5番と56番で設定できます。コントロール・チェンジの5番はポルタメント・タイム、同じく65番はポルタメント・スイッチですから、それっぽいですよね。コントロール・チェンジ5番の値が0であれば遷移時間は0秒、127であれば4秒とリニアに変化します。コントロール・チェンジ65番の値が0から63までなら遷移は無効、64から127までなら遷移が有効になります。

MIDIコントロール・チェンジ
コントロール・ナンバー5(ポルタメント・タイム):遷移時間(0:0.0秒〜127:4.0秒)
コントロール・ナンバー65(ポルタメント・スイッチ):遷移設定(0〜63:有効、64〜127:無効)

さらに、コントロール・チェンジの16番、17番、18番を使ってHSB形式で光りを設定することもできます。これらは汎用操作子の1番から3番で、汎用だから何でも良いでしょうってことです。

MIDIコントロール・チェンジ
コントロール・ナンバー16(汎用操作子1):色相(0:最小〜127:最大)
コントロール・ナンバー17(汎用操作子2):彩度(0:最小〜127:最大)
コントロール・ナンバー18(汎用操作子3):明度(0:最小〜127:最大)

遷移時間の設定以外は、どのMIDIメッセージを受け取っても、ただちに雰囲気メガネの色が変わります。これは、できるだけ簡単に、まさに演奏するように雰囲気メガネをコントロールしたいとの意図です。しかし、逆に言えば効率的ではありませんし、MIDIでは左右個別に色を設定することはできません。より柔軟なコントロールにはOSCをお勧めします。

雰囲気メガネのOSCプロトコル

OSCを利用する場合は、送信するMacやiPhoneと雰囲気メガネ・アプリが動作しているiPhoneとを同じWi-Fiネットワークに繋ぎます。OSCの受信ポート番号はデフォルトで2061で、どこかで聞いたような数値ですが、任意のポート番号に変更しても構いません。雰囲気メガネ・アプリが動作しているiPhoneのIPアドレスが表示されているので、送信元からはこのIPアドレスに対して設定したポート番号でOSCパケットを送ります。OSCのスイッチをオンし、何らかのOSCパケットを受信すれば、スイッチの左横の小さな丸が点滅するはずです。

OSCパケットのフォーマットは以下の通りで、/fun-iki/performというアドレスに続けて7つの数値を与えます。最初の3つの数値は左側レンズの色をHSB形式で指定し、いずれも0.0から1.0までの範囲の実数です。続く3つの数値は右側レンズの色です。最後の数値は指定した色に変化する遷移時間を秒数で指定します。遷移時間として指定できる有効な数値の範囲は0.0秒から655.34秒で、分解能は0.01秒です。

/fun-iki/perform <左色相> <左彩度> <左明度> <右色相> <右彩度> <右明度> <遷移時間>

例えば、次のパケットを送ると、左側は明るい赤色に、右側は暗めの青色にすぐに変わります。

/fun-iki/perform 0.0 1.0 1.0 0.666 1.0 0.5 0.0

そして、次のパケットと送ると、両側のレンズの光りが2秒かけてゆっくり消えます。

/fun-iki/perform 0.0 0.0 0.0 0.0 0.0 0.0 2.0

ちなみに、OSCでは実数を使って細かく制御できるように思えますが、しかし、高い精度は期待しないでください。iPhoneなどのディスプレイに比べると、雰囲気メガネのカラーLEDの色域や精度は広くないですからね。また、データを送ってから色の変化が始るまでの時間的な遅れや、単位時間あたりに送れるデータ量の制限もあります。演奏するように雰囲気メガネをコントロールしたいものの、大量のデータを送ればパケ詰まりになります。このような制限はMIDIでも同じで、実際にデータを送って光り方を確かめながら制作していただけると良いかと思います。

雰囲気メガネのシミュレータ

雰囲気メガネはMIDIやOSCによって光り方をコントロールできるようになっています。そこで製品より一足先にMaxで作成した雰囲気メガネ《非公式》シミュレータを公開します。これで雰囲気メガネへどのようにMIDIメッセージやOSCパケットを送れば良いかが分ると思います。

OSC-Fun'iki 1.0

MIDI-Fun'iki 1.0 SimFun'iki 1.0

雰囲気メガネ《非公式》シミュレータ(Maxパッチ)をダウンロード

ダウンロードしたアーカイブには3つのファイルが含まれていて、そのうちSimFun’ikiがシミュレータ本体で、MIDI-Fun’ikiはMIDIメッセージ送信のサンプル、OSC-Fun’ikiはOSCパケット送信のサンプルとなっています。Maxでプログラミングされる方はMIDI-Fun’ikiやOSC-Fun’ikiを改造すれば良いですね。Maxを使わない場合も同等のMIDIメッセージやOSCパケットをSimFun’iki(を開いているMaxアプリケーション)に送ればOKです。SimFun’ikiは雰囲気メガネのように光る(色が変わる)はずです。実際に雰囲気メガネを使う場合は、ペアリングしたiOSデバイスに対してMIDIメッセージやOSCパケットを送信するだけです。

もっとも、シミュレータは雰囲気メガネの挙動を忠実に表しているわけではありません。雰囲気メガネはディスプレイのように色域が広いわけでも、応答が速いわけでもないからです。応答速度などは出荷直前まで調整が続けられますので、現時点では具体的な数値を挙げられません。ただ、高速に光が点滅するようなコントロールは無理だと考えたほうが良いですね。そのような制限もありますが、ご自身のアイディアで雰囲気メガネを制御する楽しさと可能性にご期待いただければ嬉しいです。よろしくお願いします〜!

12月20日は大垣・名古屋でMIRAレクチャー

Cycling’74でMIRAを開発しているSam Tarakajian氏が来日中で、IAMASでMIRAやMaxに関するレクチャーをしていただくことになりました。MIRAはMaxと連携してiPadをコントローラとして活用するアプリで、Maxでボタンやスライダーを置けば、そのままiPadで動作します。同じネットワークに繋ぐだけの手間要らず、呆気ないくらい簡単なので、OSC云々だった人は脱力間違いなし。あまりにもシンプルなので、この機会に周辺情報を深く尋ねようと思っています(笑)。

さらに同じ日の夜に開催されるSC名古屋勉強会でもMIRAのプレゼンテーションがあります。こちらはHTML5版のSuperColliderであるCoffeeColliderの開発者mohayonao氏のレクチャーがメインなので、MIRAに関しては短時間になる見込みです。ご興味のある方は、どちらかにご参加いただければ幸いです。

MIRA

MIRA & Max レクチャー
 講師:Sam Tarakajian (Cycling’74)
 日時:2013年12月20日(金)15:00〜16:30
 会場:IAMAS 本校舎3F 小ホール
参加費:無料(要事前申込)

CoffeeColliderがやってくる!〜SC名古屋特別編〜
 講師:mohayonao
 日時:2013年12月20日(金)19:00~21:00
 会場:カフェパルル
参加費:800円(1ドリンク付き)
【詳細・申込】

5月23日より杭州でワークショップ

Workshop “Experimental Mobile Music”
Period: May 23 – May 31, 2013
Place: China Academy of Art, School of Intermedia Art

5月23日より31日までChina Academy of Artで「Experimental Mobile Music」と題してワークショップを行います(行いました)。

ChinaAcademyOfArt

ワークショップ「Experimental Mobile Music」
期間:2013年5月23日~5月31日
場所:China Academy of Art, School of Intermedia Art

と、実際には告知ではなく事後報告になったのは、中国でのインターネット事情ゆえでした(日本にいる間に告知すべきって話ですが…)。同国ではTwitterやYouTubeなど主要なサービスが使えないだけでなく、かなりのサイトへのアクセスが制限されています。akamatsu.orgもしっかりブロックされていて、プロキシなど抜け道を教えてもらったものの、エントリーを公開するまでには至らなかったという次第。

ともあれ、ワークショップで使ったスライド(堂々の100枚)を公開しましたので、興味のある方はご覧になってください。いくつかの音楽系モバイル・アプリを試すところから始まり、MobMuPlatでPd(Pure Data)パッチを動かし、libpd/pd-for-iosでアプリを作り、最後に受講者がパフォーマンスを披露するという流れでした。MobMuPlatはとても簡単ですが、制限が多くアプリは作れないので、後半のlibpd/pd-for-iosがオススメです。

1月29日はThe Leap Hackathon

1月29日のGeekLabではThe Leap Motion Controllerのハッカソンを行います。約2時間で手2本指10本な何かを作っちゃおうという試み。それはいいんだけど、問題はLeap Motionはまだ販売されておらず、国内では(全世界でも)実機を持っている人が少ないってこと。

そこで今回はLeap MotionのデータをOSCでブロードキャストして、全員で共有できるようにします。さらにデータの記録・再生機能も付けたので、サンプル・データも提供します。これで事前にThe Leapの雰囲気が分かると思います。

手順は以下の通り。

1. The Leap Hackathon.zipをダウンロードする。
2. MaxまたはMax runtimeを起動する。
3. aka.leapmotion-send.maxpatを開く。
4. Sendをチェックする。
5. Recorderメニューからreadを選ぶ。
6. sample dataフォルダ内のいずれかのファイルを選ぶ。
7. Recorderメニューからplayを選ぶ。
(Startは実機からデータを受け取る場合なので不要)

aka_leapmotion_hack

以上の手順で記録したデータが再生され、リストにデータが表示され、3Dグラフィックスで指先が表示されます。同時にOSCでデータが送信されるので、これをMaxやらSuperColliderやらOSC対応の開発環境で受け取って処理してください。ポート番号は3000にしています。Maxの場合は同梱のaka.leapmotion_receive.maxpatから始めると良いと思います。

Leap Motionから得られるデータは複数のOSCメッセージに分けて連続的に送られ、/leap/frame_startに始まり、/leap/frame_endで終わるまでが1フレーム分になります。この間に/leap/frameや/leap/handといったメッセージが必要数に応じて入ります。例えば、指が3本認識されている場合は、/leap/fingerメッセージが3個あるわけです。それぞれのメッセージはアドレス文字列の後にIDや位置などの数値がスペースで区切られて続きます。例えば、/leap/fingerメッセージの内容は以下の通りです。

/leap/finger finger_id hand_id frame_id time position_x position_y position_z direction_x direction_y direction_z velocity_x velocity_y velocity_z width lenght isTool

サンプル・データからも分かりますが、Leap Motionからのデータはかなり詳細かつ大量なので、これをどのように料理するかが腕の見せ所ですね。ちなみに、現在のaka.leapmotion 0.2はLeap SDK 0.6.9の内容を元にしており、0.7.0以降に加わった新しい機能には対応していないので、今後さらにデータが増えそうです(その気になれば)。

また、私が持っているLeap Motionのデベロッパー・ユニットはRev.4で、製品版ではレンズや赤外線LEDの品質が向上するそうです。なので、今回のデータは参考程度にしていただくとして、現状よりもさらに認識が向上することも期待したいですね。

aka.leapmotionリリース

Leap Motion社の3次元センサーThe Leap Motion controllerのDeveloper unitが届いたので、Maxオブジェクトaka.leapmotionを作成して公開しています。Leap Motionはまだ製品版は発売されておらず、受け取ったデバイスも外装なしの基盤剥き出し状態でしたが、動作自体は安定しています。

aka.leapmotionはLeap Motionから得られるデータを忠実に出力しており、ヘルプ・パッチから分かるようにかなりの量のデータが得られます。基本的には人の手や指の認識に特化しており、手に持ったペンやお箸なども(指ではないものとして)認識できます。認識範囲はそれほど広くないものの、テルミン的な範囲はOKかと思います。

ちなみにLeap Motionのデバイスは二つのカメラの画像をUSBでMacに送り、Macで動作するLeapアプリケーションが画像解析をしているようです(想像)。このため、MacBook Pro (Mid 2012, 2.7GHz)でのLeapアプリケーションのCPU使用率は、何もない状態で30%、片手を認識すると40%、両手なら50%といった具合です。Maxオブジェクトではデータを受け取るだけなのでCPU使用率は少なくて済みます。なお、このマシンは4コア・8スレッドなのでフル稼働なら800%となり、単純にはLeap Motionは全体の数パーセントを使っていることになります。

ともあれ、現状のLeap Motionは具体的に何かができるわけではなく、デベロッパーによるアプリケーションの充実を目指している状況のようです。マルチタッチ・トラックパッドのエミュレーションなども期待したいところですね。

Mountain LionでのMax SDK

久々にMaxオブジェクトを作ろうとして、Max SDKをダウンロードしたら付属のサンプルすらビルドできない。これはビルド設定の内容が古いからでした。

OS X 10.8 & Xcode 4.5でMaxSDK-6.0.4を利用する場合は、maxmspsdk.xcconfigの33〜34行目を以下のように修正します。これでOK!

SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
MACOSX_DEPLOYMENT_TARGET = 10.8

スリープLEDパターン

先日iCufflinksなるMac Proのパワーボタンに似せたカフスボタン(シャレか?)が発売されたとか。これ形状が似ているだけでなく、マークがMacのスリープ時のLEDそっくりに点滅するらしい。同サイトのムービーを見る限り、確かにソレっぽい。

icufflinks

このスリープLEDは、穏やかな睡眠時の呼吸のように見える素敵不思議な印象を与える。小さな矩形LEDながら、MacBookやApple TVにも備わっている。なんとこれでAppleは特許を取っている。だけど特許資料にはパターンの詳細は書かれていない。

で、少しWEBサーチしてみると、それはexp(sin())じゃないかとの情報があったので、Maxで適当なパラメータでシミュレートしたのがコレ。なんとなくそれっぽいものの、違和感があるようなないような…

macsleepledpatter1-max

実はiCufflinksはオープンソース・ハードウェアであって、GitHubにプロジェクトが公開されている。アセンブリ・コードなので早々に諦めてたんだけど、良く読むとテーブルからデータを読み出しているだけでした(だけ、ってのもナンですが)。実際にMacのLEDの輝度変化を測定した結果らしい。

そのデータを拝借してMaxに組み込んだのがコチラ。LEDとLCDの特性の違いがあるけど、exp(sin())よりシックリ度が高い。ホタルの点滅にも似ているね。

macsleepledpatter2-max

と言う訳で、これらのMaxパッチです。macsleepledpattern-max.zip

マシューズさん、さようなら

マックス・マシューズさんが亡くなられたそうです。享年84。ご冥福をお祈りします。

mathews260

マシューズさんはコンピュータ音楽のパイオニア。Musicシリーズ(音楽用プログラミング言語)やRadio Baton(演奏用インターフェース)などで有名で、Max/MSP/JitterのMaxは彼の名前を冠にしています。さらに「2001年宇宙の旅」で象徴的に使われた「Daisy Bell」は忘れ難く、言わば初音ミクのお爺さんですね(人工歌唱を開発したジョン・ケリーらが祖母で、伴奏を担当し全体の牽引役でもあったマシューズさんは祖父かな、と)。

OSCならコレ【Remokon】リリース

Wi-FiでOSC (OpenSound Control)メッセージを送受信するiPhoneアプリケーションRemokon for OSCをリリースしました。RemokonとMaxやSuperColliderを使って、音楽や映像をバリバリ制御してください。i3L(無料)などを使えば、Ableton LiveなどのMIDI対応アプリケーションもコントロールできます。

remokon-all-pages_s

サポート・サイトにはRemokonやその前身にあたるakaRemoteを使ったデモ・ビデオがありますので、参考にしてくださいね。サンプル・プログラムやサポート・ライブラリもあります。

ちなみに、すでにApp StoreにはいくつかOSC対応アプリケーションがあるのですが、Remokonならではと思われる点を書いておきますね。これらにピンと来た方は是非使ってやってください。

・OSCメッセージを受信してUIを設定できるので、ライブのセットアップなどに便利。
・SCメッセージをブロードキャスト送信できるので、複数の機材を同時コントロールできる。
・iPhoneを区別するデバイスIDが利用できるので、複数のiPhoneを使うことができる。
・送受信されるOSCメッセージの情報量が多いので、高度なアプリケーションが開発できる。
・入力ポートと出力ポートを独立して設定できるので、柔軟な通信ができる。

とこんな感じかな。単純なOSCコントローラとしても使う場合にも、いろいろと便利な機能を備えているので、優秀だと思いますよ。