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で良さそう。

OpenframeworksとSuperColliderのOSCによる連携

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から音がでるはず。

oscSenderExample.zip

Openframeworksで日本語を表示する(Mac OSX Leopard)

試行錯誤しているうちに、何がどうなったのかよくわからなくなってしまったため、

おおまかな流れしか紹介できないですが、OFで日本語表示します。

fontconfigfreetypequesoglcインストール

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さん


xcodeプロジェクトファイル(fonttest.zip)

書き換えたfonts.conf

画像データを立体csvに変換

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

Openframeworksでsqliteを扱う

openframeworksとsqlite

sqlite_simple.zip

xcodeのプロジェクトファイルです。

データベース名がplaces.sqliteですが、そこは適宜変更してください。

lalalila神に感謝

http://www.sqlite.org/quickstart.html

のC++のサンプルをxcode3.0でコンパイルすると

22: error: ‘exit’ was not declared in this scope
といわれるので、冒頭に

#include<cstdlib>

using namespace std;

を追加する

macportでboostをインストールする

% sudo port clean boost
% sudo port install jam
% sudo port install boost

mac port経由でlibcacaインストール

http://linux.die.net/man/1/cacaview

textmateの便利そうなのがあったんだ、こんなことしなくても良かったのかな

http://code.google.com/p/action-coding/wiki/Tutorial

最後のほう、Textmateから使う

action-coding

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

うごいた。