processingでmidi信号を扱う
Mac OS X version 10.4.8以降でprocessing上からmidi信号を扱う際は、
mmj - Mac OS X universal binary java Midi subsystem
のdownload mmjからダウンロードしたフォルダ内のmj.jarとlibmmj.jnilibを /Library/Java/Extensionsへ放り込む必要があるようです。
プロセッシング上のMIDIライブラリはpromidiで良さそう。
Mac OS X version 10.4.8以降でprocessing上からmidi信号を扱う際は、
mmj - Mac OS X universal binary java Midi subsystem
のdownload mmjからダウンロードしたフォルダ内のmj.jarとlibmmj.jnilibを /Library/Java/Extensionsへ放り込む必要があるようです。
プロセッシング上のMIDIライブラリはpromidiで良さそう。
SuperCollider入門、SuperCollider・Max・Processingの連携
ProcessingとSuperClliderの連携
http://yoppa.org/ssaw08.php?itemid=759
yoppa先生のコードを参考にOFでOSCを扱ってみました。
といってもただoscを書いただけ。
addonsのoscSenderExampleのメッセージを送っている部分を以下のように書き直しました。
ofxOscMessage m;
m.setAddress( “/s_new”);
m.addStringArg(”env-sine”);
m.addIntArg(synthId);
m.addIntArg(1);
m.addIntArg(0);
m.addStringArg(”freq”);
m.addIntArg((ofGetHeight()-y)*10);
m.addStringArg(”detune”);
m.addIntArg(((ofGetWidth()/2)-x)/30);
sender.sendMessage( m );
コンパイルしたら、以下のyoppa先生のコードをSC上でコピペしてenter(或はFn+Return)
//サーバー "myServer" を IP:127.0.0.1 port:12000で起動 s = Server("myServer", NetAddr("127.0.0.1", 12000)); s.boot; //OSCメッセージをダンプするs.dumpOSC(1); //エンベロープ付き sin波 ( SynthDef("env-sine", { arg freq = 880, amp=0.125, detune=0; var env, x; env = EnvGen.kr(Env.perc(0.001,20,1,-4), doneAction: 2); x = env * SinOsc.ar([freq, freq+detune],0, amp); Out.ar(0, x) }).send(s)); アプリケーションのウィンドウ上をクリックすると、SCから音がでるはず。
試行錯誤しているうちに、何がどうなったのかよくわからなくなってしまったため、
おおまかな流れしか紹介できないですが、OFで日本語表示します。
fontconfig、freetype、quesoglcをインストール。
quesoglcはインストール時の./configureにオプションをつけて、
./configure –with-apple-opengl-framework
とする。
そして、
usr/local/etc/fonts/font.confにパスを追加します
<!– Font directory list –>
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>~/.fonts</dir>
<!–
そこに、
<dir>/Library/Fonts</dir>
を追加して、
<!– Font directory list –>
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>/Library/Fonts</dir>
<dir>~/.fonts</dir>
<!–
多分、以上で準備は整うので、プロジェクトファイルをコンパイル&ラン。
ありがとうtadahicさん
fileNameで指定したjpg画像の明度のデータを、
Radio head ”house of card”のPVに使われているcsvの形式(x,y,z,intensity)に
書き出すものをprocessingで書きました。
レーザーをつかって撮影された本家と似たような効果はでると思います。
本当はOpenCVのfacedetectと合わせて、顔だけ取り出したかったけど、
processingのOpenCVライブラリが一定のDPI値の画像しか受け付けてくれなかったので諦めました。
良い解決方法はないかな
////////////////////////////////////////////////////////////////////////////
PrintWriter output;
PImage a;
int[][] aPixels;
int[][] values;
String fileName;
size(640, 480);
//Reading 8781.jpg in “data” folder. And output 8781.csv.
fileName=”8781″;
aPixels = new int[width][height];
values = new int[width][height];
output = createWriter(fileName + “.csv”);
// Load the image into a new array
// Extract the values and store in an array
a = loadImage(fileName + “.jpg”);
a.loadPixels();
for (int i = 0; i < a.height; i++) {
for (int j = 0; j < a.width; j++) {
aPixels[j][i] = a.pixels[i*a.width + j];
values[j][i] = int(brightness(aPixels[j][i]));
int posX=j-a.width/2;
int posY=i-a.height/2;
int posZ=(values[j][i])/3;
//Convert the value to Radiohead “House of Cards” format
output.println(posX + “,” + posY + “,” + posZ + “,” + posZ);
}
}
output.flush(); // Write the remaining data
output.close(); // Finish the file
exit(); // Stop the program
http://www.sqlite.org/quickstart.html
のC++のサンプルをxcode3.0でコンパイルすると
22: error: ‘exit’ was not declared in this scope
といわれるので、冒頭に
#include<cstdlib>
using namespace std;
を追加する
textmateの便利そうなのがあったんだ、こんなことしなくても良かったのかな
http://code.google.com/p/action-coding/wiki/Tutorial
最後のほう、Textmateから使う
ruby + processing 試してみる。
http://code.google.com/p/action-coding/
antセットアップして、
http://www.stackasterisk.jp/tech/java/ant01_02.jsp
jruby1.1.1セットアップ (macportに入ってるjruby1.0.3だとできないらしい)
% cd (jruby1.1.1を展開したところ)
% ant
あとは、
http://code.google.com/p/action-coding/wiki/Tutorial
に書いてあるようにやった。
それでtextmateでcmd+r
(eval):1 warning: already initialized constant PApplet aco.rb:74:in `load_library': undefined local variable or method `folder' for # (NameError) from aco.rb:67:in `load_all_libraries' from aco.rb:61:in `each' from aco.rb:66:in `load_all_libraries' from aco.rb:61:in `load_processing' from aco.rb:30:in `initialize' from aco.rb:284:in `new' from aco.rb:284
といったエラー。
processingをダウンロードして、
いつも使ってるprocessingとは別の場所に置き、
そのフォルダをconfig.yamlで指定してcmd+r
うごいた。