カテゴリ: processing
投稿者: mio
前のエントリーで、jEditのインストールと、コードのカラーリングについて書きましたが、今回はjEditの便利な機能について。


■1 短縮入力

前回少し触れた、Abbreviations(短縮入力?アブリビエイション?)なんですがが、この機能は相当便利そうです。インストールの仕方は、ここ(英語)に書いています。一応、日本語でも解説しとくと、Windowsだと、

C:\Documents and Settings\{USERNAME}\.jedit

という名前のフォルダに、ダウンロードして解凍したabbrevsという名前のファイルを、置くだけ(上書きするだけ)です。ちなみに、僕は、何を勘違いしたか、マイドキュメントのフォルダの中に、.jeditというフォルダがあるのかと思って、数時間混乱してましたが、よーく見たら、Documents and Settingsの中のユーザフォルダ直下で、マイドキュメントフォルダじゃなかった。。。。のね。ということで、jEditをインストールした時点で勝手にできるっぽい、この.jeditというフォルダに、ダウンロードしたファイルを置くと、この機能が使えるようになります。

どんな機能かというと、例えば、

sm
って書いて、その後、スペースキーを押すと、
smooth();
に変換してくれたりします。

pr

println();
は結構使えるかも。

他にも
for#i#100#
で、
for(int i = 0; i < 100; i++) {

}
とか。
for文とか打つの面倒なときもあるので便利そうです。


この定義は後から自分で編集もできるので、自分がよく使うメソッドや、定型のフォーマットを作るとさらに便利になりそうですね。ちなみに、この変換を、どのキーでやるかは、Utilities->Global Optionsの中の、Abbreviationsという項目で、Space bar expands abbrevsというのにチェックを入れとくと良いっぽいです。ちなみに、ここで、フォーマットを足したり減らしたり、再編集したりできます。このGlobal Optionsというのが、要はPreferenceってことですね。


■2 タブとか

普通ですが、jEditは複数のタブ(というかペイン)を作って、複数のファイルを同時に編集することもできます。もちろん、別ウィンドウで開くのも可能です。で、このペイン増やしたり減らしたりするのは、Ctrl+1(ペイン1つに戻す)、Ctrl+2(縦に分割)、Ctrl+3(横に分割)って感じでショートカットがあって扱いやすいです。あと、各ペインの上のあたりに、ファイル名が書いてるバーがあるんですが、そこをクリックすると、最近使ったファイルのリストが出てきて、そこからファイル名選択するだけでそのファイルを開けたりします。この機能はさりげなく便利です。サクサク動くし。

画面はこんな感じ。
jEdit


ということで、WindowsでのProcessingのプログラミングは、当分jEditを使うことになりそうです。フリーソフトというのが良いですね。Macでも使えるし。HTMLのコーディングとかにも使いやすいかもしれません。これで仕事の合間(mioは仕事ではwin使ってます)に、ちょっとProcessingやってみっか!ってのができる環境が整いました。
カテゴリ: processing
投稿者: mio
Windowsユーザにこれは、わりとオススメです。
jEdit

前回、Eclipseを紹介しましたが、Eclipseは、基本、javaの開発っぽい感じになってしまうので、Processingの文法と少し変わってきます。(正しい表現じゃない気がしますが。。)例えば、PAppletクラスのサブクラスを使ってメインのdrawなどの処理を行うことになるので、書かなければいけないことが少し増えます。

↓こんな感じ
import processing.core.*;

public class Sketch071020 extends PApplet{
public void setup(){
size(200, 200);
stroke(155,0,0);
}
public void draw(){
line(mouseX,mouseY,width/2,height/2);
}
}


ProcessingのみだとこれだけでOKなものです。
void setup(){
size(200, 200);
stroke(155,0,0);
}
void draw(){
line(mouseX,mouseY,width/2,height/2);
}


なので、Eclipseで実行することを前提に書くのは、小規模なプログラムの場合面倒だったりします。で、もしかしたら、EclipseではProcessingを実行せずに、単にエディタとして使うという手もあるのかもしれませんが、Processing独自のメソッドなんかのカラーリングの仕方とかがちょっとよく分からなかったので、他にTextMateぐらいの感覚で使えるエディタが、Windowsにないのか調べてみました。(Eclipseでのカラーリングの仕方知ってる人いたら教えてください。)


そこで出てきたのが、jEditというオープンソースのプログラム用エディタ。
TextMateみたいに、TextMate側からProcessingを呼び出して、ファイルを実行するみたいなのは、できるのかどうか良く分かりませんでしたが、Processingのコードのカラーリングができて、画面も結構綺麗なので、良いかなと思っています。

↓画面はこんな感じです。
jEdit

コードのカラーリング方法は、
このProcessing用のコード・カラーリング設定ファイル(XMLファイル)をダウンロードして、Program Files->jEdit->modesというフォルダに突っ込む。で、このmodesというフォルダにある、catalogというファイルをエディタで開いて、

<MODE NAME="processing" FILE="processing.xml" FILE_NAME_GLOB="*.pde" />

という行を一行足す。

これでOK。

英語の解説は、以下のサイトに載っています。このサイトに載っている、ショートカットみたいな機能が相当便利そうなので、こっちも要研究ですな。
http://www.processinghacks.com/hacks/jedit

解説してくれているのは、Karsten Schmidt (aka toxi)さんという人で、Processingの使い手っぽいし、もしかしすると、jEditは結構良いのかも。Windowsだと。
http://toxi.co.uk/


■外部エディタ使う場合

preference
↑このように、
Use external editorにチェック入れましょう。
すると、Processingの編集画面では編集できなくなって、混乱がなくなります。
ちなみにMacのTextMateだとファイル保存すると、TextMate側で読み込みなおしたりしてくれるので、このチェックを入れなくても良いっぽいですが、他でやる場合はチェックを入れておいたほうが良さそうです。
カテゴリ: processing
投稿者: mio
ずっと前から気になってた、Eclipseをついに使ってみました。Processing用のテキストエディタについては、MacではTextMateという気の利いたテキストエディタがあったのですが、Windowsはどれが良いのか分からないというのもあって、Eclipseを試してみようと思いました。Eclipseというと、レベルの高いプログラマーが使う、超レベルの高いソフト、みたいなイメージだったんですが、意外と簡単に使えることが発覚。Processingのフォーラムをがんばって解読してインストールしました。

以下、日本語且つ画像付きという超分かりやすい解説を作ったんで、僕みたいに英語の文章を読むのに50メートル走を全力で走りきるぐらいのエナジーを必要とする人は是非ご覧ください。ちなみに、Mac版のEclipse使いたい人は、英語ですがこちらが画像付きで親切かも。


まずは、Eclipseをダウンロードしましょう。
http://www.eclipse.org/
http://www.eclipse.org/downloads/
僕は、Eclipse IDE for Java Developers - Windows (78 MB)というのをダウンロードしました。(これで問題なかったです)他のサイトだと、eclipse-SDK-3.1.2-win32.zipとか、JavaSDKとか書いてたんですが、多分これのことかと。違ったら教えてください。

インストールの仕方はここが画像つきで分かりやすいかな。

で、Eclipse起動しましょう。
以下、画像付きで、EclipseでProcessingのコーディングと、実行する方法となります。


Eclipse起動
ばーん。起動ぐらい猿でもできるけど、相手がEclipseだけに、起動しただけで感動してしまった。。

Eclipse_Processing
起動したらこんな感じ。(もしかしたら別の画面だったかも)ここから、Processingのプロジェクトを作って、Processingのライブラリを読み込んだりして、ProcessingをEclipseから使えるようにします。

» 続きを読む

カテゴリ: processing
投稿者: mio
関数の中のローカル変数を別の関数の中から参照できないのは知っていましたが、関数の中でもif文の中で定義した変数をif文の外から参照しようとするとエラーになるみたいです。また、関数の中で変数を定義する場合は、その値が使われる前に必ず値を入れておかなければ、エラーになります。(エラーとなって、実行できません)

boolean a = true;
void func1()
{
if( a==true)
{
int b = 1;
}
println( b );
}

これはエラー。
FLASH(AS2)とかだと、if文の中を通らなかったときに、undefinedとしてくれるけど、Processingの場合は、ちょっと厳しいみたいです。
要は、絶対undefinedにはならないようにしないといけないみたいです。
また、関数の外で変数を定義するときは関数の名前だけでOKですが、関数の中で定義するときは、同様の理由で、その変数が使われる前に必ず値を入れておかないといけないようです。

つまり、

void func1()
{
int b;
println( b );
}

はもちろんエラーとなります。
また、以下の場合もエラーです。
void func1(){
boolean a = true;
int b;
if( a==true)
{
b = 1;
}
else if(a==false)
{
b = 2;
}
println(b);
}

ただ、else ifじゃなくて、elseにするとエラーは出ません.
void func1(){
boolean a = true;
int b;
if( a==true)
{
b = 1;
}
else
{
b = 2;
}
println(b);
}

以上、if文の中で変数の値を入れる場合について書きましたが、そこまで考えるのは面倒なので、なるべく、最初に初期値も入れてしまいましょう。

以下のような感じで。
void func1()
{
int b=1;
println( b );
}

または、
void func1()
{
int b;
b=1;
println( b );
}



■おまけ

以下のようなことをしても意味はないですが、
定義した変数を参照しないプログラムになっていれば、
エラーは出ないようです。
void func1()
{
int b;
}
カテゴリ: processing
投稿者: terada
Processing標準のIDEが使いにくいのでTextMateを使ってみることにしました。
徳井さんの記事とおり、TextMate本体とGetBundleをインストールし、BundleにProcessingを追加することはできました。でも、PDEファイルを編集してショートカットを使ってみると、古いバージョンのProcessingが立ち上がってしまうなど上手くいきませんでした。調べてみると、Processingのバージョンによってアプリケーション名や呼び出しのスクリプトが異なるようで、TextMateのBundle Editorで修正作業が必要でした。以下は、Processing 0125 BETA用です。

まず、TextMateで「Bundles > Bundle Editor > Show Bundle Editor」からエディタを開きます。そして、Run In Processingのコマンドを以下のように変更します。

-
Save: Current File
Command(s):
osascript <<EOF
tell application "Processing 0125" to run
tell application "Processing 0125" to activate
tell application "Processing 0125" to open POSIX file "${TM_FILEPATH}"
delay 1
tell application "System Events" to tell process "Processing"

keystroke "r" using command down
end tell
EOF
Input: None
Output: Discard

Bundle Editorの設定図
-

以上でおしまい。
これで、ファイルを編集して「コンマンド+R」すれば、Processingが立ち上がり、ファイルが開き(すでに開かれている場合は再読み込みされます)、実行されるところまで自動的に行われます。Processingの立ち上がりに多少時間がかかるものの、まま快適です。TextMateはお試し版だけど、ActionscriptやPHPにも対応してるし、よさそうなら購入しようと思います。

*追記*
Processing側でエラーが出た時に、直接Processingの方で書き換えてセーブすれば、TextMate側でもちゃんとその修正を読込み直してくれるのが手間いらずですごくいい!

<参考URL>
TextMate
GetBundle
TextMate日本語入力プラグイン
Processing用のエディタ(徳井直生さん)
Processing.org Discussion : Processing + Textmate

» 続きを読む

カテゴリ: 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以上に、英語の文章を読まなきゃいけない。。脳は疲れないといいますが、英語読むときは疲れる気がします。