Archives

You are currently viewing archive for September 2007
カテゴリ: processing
投稿者: mio
FullScreen API for Processing
スキャンコンバータを買う覚悟をしていましたが、買わなくて済みそう。(プレゼンテーションモードで出力したのをスキャコンで拡大するしかないのかと思ってました)

ちなみに、これは外部ライブラリではないようです。

使い方は簡単、sketchファイル(.pdeファイル)と同じフォルダに、fullscreen_api.pdeと、fullscreen_texturehelper.javaというファイルをコピーして、メインのsketchファイルのsetup()関数内に以下の3行を追加する。

setFullScreen( true );//ファイル実行直後に自動的にフルスクリーンにするかどうか
setResolution( 640, 480 );//sketchファイルの解像度と合わせる。
createFullScreenKeyBindings();//Command+Fでフルスクリーンにできるようにする

後は、スケッチファイルを実行後、Command+Fで、フルスクリーンにできます。
マウスが画面に出ちゃうところが難点。
マウスのポインタは消せるんだろうか?

フルスクリーンモードぐらい、デフォルトの機能で入ってて欲しいもんですね。

fullscreen
↑同じフォルダに入れると、編集画面はこんな感じ。

おまけ
このプログラムのバグ除去のやりとり。
頑張れhansiさん!

2007/09/03: oscP5 VS. MaxLink

カテゴリ: processing
投稿者: mio
ということで、ProcessingとMax/MSPで通信するときに、oscP5とMaxLink、どっちがいいのか、どう違うのかを調べてみました。MaxLinkもウェブをちゃんと読むと、UDPによる通信であるとわかりました。

以下、比べやすいように、同じ内容のものを2通りの方法で書いています。どちらとも、3本のマイクで、RGBの色をコントロールするというシンプルなものです。


■oscP5

oscP5

oscP5の場合、Maxから受信したデータを解析しないといけないのと、Max側からデータを送るときも、[ prepend /R ]みたいに、何のデータかをラベリングしないといけないのでそれがちょっと面倒でした。その代わり、通信するときの変数の数が増えたりしたときには、こっちの方が安全そうです。あと、このプログラムでは端折っていますが、ProcessingのプログラムのoscEventメソッドの中では、変数の型のチェックもしたほうが良いでしょう。


■MaxLink

MaxLink

こっちは、かなりプログラムは単純になります。まず、Max側ですが[mxj jk.link]をおいて、インレットとアウトレットの数を指定するだけです。今回の場合、Processing側からMaxにデータを送ることはないので、アウトレットは0。

Processing側も至って簡単、setup()メソッドの中で、link.declareInlet( "Processingの中のプロパティ名" );とするだけ。このとき、link.declareInletの処理の順番が大事で、Processing側の処理の順番と、Max側のインレットの順番をあわせないといけません。


■どう使い分けるか

以上の結果を踏まえると、やりとしたい変数の数次第かなと思いました。変数の数が少なければMaxLinkの方が、プログラミングが楽です。ただ、変数の数が5個とか6個とか増えてくると、MaxLinkの場合、インレットの順番と、declareInretの順番をあわせるのが大変そうです。なので、そういう場合は、oscP5でちゃんと解析したほうが良いかと。

それから、oscP5は、oscEventというFlashでいうところのイベントハンドラ的なメソッドを使って、Maxからの情報を取得するので、どこで通信しているのかが明確でわかりやすいような気もします。

あとは、MaxLinkはMax専用なので、Max以外のものとも連携する場合なんかは、oscP5に統一したほうが良いかなぁと思ったりもしました。

以上。

今回の比較にMIDIは入っていませんが、UDPが面白そうだったのでUDPだけにしました。
カテゴリ: processing
投稿者: mio
OSCについて調べること半日以上、やっと通信できました。かなり色んなところでハマったけど、実はそんなに難しいことではなかったみたい。


■Processingと、Max/MSPをOSC経由で連携させる方法

oscP5(Processingのライブラリ)をダウンロードして、インストール


・ProcessingのExamplesから、oscP5sendReceiveを開く
・17行目あたりの、oscP5 = new OscP5(this,12000);
 となっているところの、12000を12001など、12000以外に変更する。
 (これは受信用のポート番号)
・26行目あたりの
 myRemoteLocation = new NetAddress("127.0.0.1",12000);
 の方はそのままで。
 (これは送信用のポート番号)


・Max/MSPのパッチを、以下の画像のように組む。
 udpsendと、udpreceiveで、送るときのポートを12001、受信は12000にする。
 (12001、12000は、Processing側とそろっていれば良い)
 ※udpsend、udpreceiveは、Max/MSP4.6以降でしか使えないので
  それ以前のものを使っている人は、前のエントリを参考にしてください。

oscP5


どうも、Processing側の受信用ポート番号と、送信用ポート番号を同じにしてしまうと、Processing内部で信号が伝達してしまって、Max/MSP側にそれが伝わらないようようです。なので、Processingと、Max/MSPで通信したいときは、

・Processing側の受信用ポート番号 = Max/MSP側の送信用ポート番号
・Processing側の送信用ポート番号 = Max/MSP側の受信用ポート番号
且つ
・Processing側の受信用ポート番号 ≠ Processing側の送信用ポート番号

と設定する必要があるみたいです。


それから、Processing側でOSCを受け取るときは、oscEventというメソッドで信号を受け取れるようです。これはFlashで言うところのイベントハンドラみたいな感じですね。


OSCと、MaxLinkのどっちを使うかというのが難しいところ。MaxLinkの方がプログラムはシンプルにできそうな気はするけど、OSCはOSCで細かいことがいろいろできそうだなぁ。あと、なんとなくだけど、OSCの方が安定しているような気もする。MaxLinkはバグっぽいのもあったし。
カテゴリ: processing
投稿者: mio
前のエントリーでも少し触れた、MaxLinkですが、これはかなり使えるような気がします。これで、Max/MSP側で音を受け取ったり解析したり加工したりしたのと、processingを連携させられる。しかも、反応速度も遅くなさそうだし、プログラムも簡単そう。

■MaxLinkインストールの仕方

とりあえず、最初のインストールがProcessingだけじゃなくて、Max/MSP側にもやらないといけないので、ちょっと時間がかかります。

基本的には、ダウンロードしたファイルの中にある、
「mac installation.txt」(winの人は、windows installation.txt)というのに沿ってフォルダやファイルを指定された場所にコピーしていけばいいのですが、Max/MSPの方は、Max/MSPの中のJavaの初期設定ファイルみたいなのを一部書き足さなきゃいけないところがあって、ちょっと緊張しました。(僕はmacでやってるのでmacの話です)普通のMaxのエクスターナルオブジェクトでしたら、ファイル一つで済んだりしますが、MaxLinkの場合はjavaのファイルをたくさんコピーする必要があるようです。

一応説明しておくと、
「/Library/Application Support/Cycling '74/java」にある
max.java.config.txtというファイルを開いて、
「max.dynamic.jar.dir "/Library/Application Support/Cycling '74/p5-sketches"」
という行を一行足せってことみたいです。 足す場所はそのファイルの中なら多分どこでもいいと思うんですが、分かりやすいように「max.dynamic.jar」と書いてある近くにこの行を足すのが良さげです。

あと、ちょっとしたことですが、Max/MSPがバージョンアップしたときとか、MaxLinkだけアンインストールしたいときのために、足したフォルダには色をつけたりしておくと後で分かりよいかも。


■使ってみた

MaxLink

これはサンプルパッチで、processingからMax/MSPにメッセージを送るタイプのもの。processingと、Max/MSPと両方のプログラムを立ち上げる必要があります。立ち上げる順番は、一応どっちからでも良さそう。ただ、メッセージを受信する側から先に立ち上げた方が良いような気はします。

細かいプログラムのルールはまだちゃんと調べていませんが、Max/MSP側は、「mxj jk.link」というオブジェクトぐらいしか使ってないし、processing側のプログラムもかなり短くて大丈夫そう。


■ちょっと作ってみた

max/msp to processing

で、せっかくなので、前回書いた、3つ以上の音声信号をMax/MSPで受け取って、それをProcessingに送るというのを作ってみました。サンプルにあったcolor_pickerというのをMax/MSP側だけ改造しました。Maxのカラーピッカーオブジェクトの上の部分が改造した(付け足した)部分です。adc~で3チャンネルの入力レベルをProcessingに送って、色を操れるようにしてみました。もちろん色を出してるのは、Jitterじゃなくて、Processingです。このぐらいのことならJitterでもできますが、割当を変えればいろんなことができるので、それが楽しみ。
カテゴリ: processing
投稿者: mio
■3つ以上のチャンネルの音の入力は受け取れないっぽい。

どうやら、Max/MSPみたいに、3つ以上の音の入力はprocessingでは受け取れないみたい。ということなので、他のソフト(Max/MSPとかPD)からOSCやMIDI、netsend(?)なんかでprocessingに送ってあげないといけないみたい。面倒だ。。

max msp

要はこういうことがprocessing単体ではできないっぽいということ。
(外部ライブラリを使っても2chまでっぽいです。)

うーむ。OSCにチャレンジしてみようかな。

maxLinkというのも気になる。
MaxからProcessingのsketchを読み込んだりもできるみたいです。凄い。

ProcessingやろうとするとMax/MSP以上に、英語の文章を読まなきゃいけない。。脳は疲れないといいますが、英語読むときは疲れる気がします。
カテゴリ: processing
投稿者: mio
processing

processingをたまーに、すこーしずつ弄っているのですが、これからは去年の今頃Max/MSPでやったみたいに、スコーシずつこのブログに書いていこうかと。

ということで、まずは多すぎるライブラリについて、processingのライブラリどこかにまとまってないのか??と思ってたら、普通にあった。
http://processing.org/reference/libraries/

全部パックになってたらいいのに。。
そして、p5のver.125から、ESSのexampleが足されたけど、今まで外部ライブラリ(?)だったESSが、最初から使えるようになったということなのだろうか?けど、ESSのサイトのサンプルは動かなかった気がしたので、一体どういうことなのかよく分かりませんでした。