木曜日, 2月 15, 2007

processing application

ちまちまprocessingをeclipseで開発してるんだけど、どうもアプリケーションの作り方がよくわからない。何かantとかを使うんだろうか。要調査なんだけど、processingにはjava modeってのがあるので、普通にeclipseで書いたプログラムをコピー&ペーストでメニューからFile選んでExport Applicationでいいじゃんてことに気付いた。java modeは

public class クラス名 extends PApplet {
void setup() {
}
void draw() {
}
}

とするだけ。setup()とdraw()内にいつも通りに書けばいい。

ちなみに最近試しに作ったやつ。FadeIn/FadeOutで音の繋ぎ目を綺麗に。audioStreamWriteの使い方は未だに謎。ドキュメントおかしいし。generateメソッド呼び出した後にfilterメソッド呼ばないと意味ないってのに気付くのにしばらくかかった。

import processing.core.*;
import krister.Ess.*;

public class SineWaver extends PApplet {
AudioStream myStream;
SineWave sine;
FadeIn fadeIn;
FadeOut fadeOut;

int i = 0;
int col =0;
int oldFreq, newFreq = 0;
boolean doFadeIn = true;

public void setup() {
Ess.start(this);
myStream = new AudioStream();
sine = new SineWave(oldFreq, (float)0.5);
fadeIn = new FadeIn();
fadeOut = new FadeOut();
size(200, 200);
frameRate(30);
}

public void draw() {
i++;
if(i>height) {
i = 0;
col = (int) random(255);
}
stroke(col);
line(0, i, width, i);
myStream.start();
}

public void audioStreamWrite(AudioStream theStream) {
newFreq = i * 10;
sine.generate(myStream);

if(doFadeIn) {
fadeIn.filter(myStream);
doFadeIn = false;
}

if(newFreq != oldFreq) {
sine.frequency = newFreq;
fadeOut.filter(myStream);
doFadeIn = true;

oldFreq = newFreq;
}
}

public void stop() {
Ess.stop();
super.stop();
}

}

1 件のコメント:

yosuke hayashi さんのコメント...

Export Applicationするときはpublic class Foo extends PApplet{}を消しておかないと、アプリが実行できませんでした。普通のprocessingでの書き方と同じ状態にしておけばいけると思います(version 0124Betaで確認しました)。