processing proce55ing sonia jsyn

f:id:peroon:20081115231207g:image

音楽ライブラリを使ってみた。

昨日本屋に行って、processing本を見て、ライブラリを使っていないことに気づいたので、音楽ライブラリsoniaを使ってみた。soniaを使ったJavaアプレットを動かすにはjsynプラグインが必要なので、まずjsynをインストールした。そしてprocessingでsoniaライブラリを使ってコードを書いてみたら、音楽再生ができた。(環境はVistaインストールはこちらを参照

フーリエ変換も可能なようなので、高い音が鳴るときには円を大きく描くなど、音と絵が連動した作品が作れそう。もう少しいじってみる。

proce55ing sonia reference

f:id:peroon:20081116000235j:image

レファレンスを参考に、何が出来るのかをまとめてみる。
<Soniaオブジェクト>

start():周波数設定
stop():正しく終了するために必要
getStatus():jsynがインストールされているか調べる

<Sampleオブジェクト>

Sampleオブジェクト:音楽ファイルをここに読み込む。メソッドたくさん。
play():演奏
repeat():リピート
repeatNum():指定回数リピート
stop():ストップ
read():フレームごとにデータ取得(アナログ)
readChannel():〃(ステレオ)
write():Sampleオブジェクトの指定フレームに書き込み
writeChannel():〃
getPan():(左右のバランスを調整するパラメータ)「パン」を取得
setPan():
getRate():サンプルレートを取得
setRate():
getSpeed():
setSpeed():
getVolume():
setVolume():
isPlaying():演奏中かどうか
getNumFrames():トータルのフレーム数
getCurrentFrame():現在のフレーム数
connectLiveInput():Sampleオブジェクトの信号をLiveInputに渡す(?)
getSpectrum():説明が書いてない!
saveFile():wavに書き出し

<LiveInputオブジェクト>(フーリエ変換FFT)ならこれ!マイク入力も)

start():
stop():
getLevel():マイクからのボリューム取得
getSpectrum():マイク音源をFFT(fast fourier transformation)(コレ!)
spectrum[]:説明が書いてない!
useEnvelope():FFTデータにフィルター処理
useEqualizer():FFTデータの周波数を均一化
startRec():
startRecLoop():
stopRec():

<LiveOutputオブジェクト>

start():
stop():
startStream():
stopStream():
liveOutputEvent() {:説明無し
LiveOutput.data[] :説明無し

音声や音源から周波数成分を取得できるようだ。あとは、「声が大きいほど円が大きく描画される」など、描画と組み合わせれば面白いものがつくれそうだ。

でかい本屋「ジュンク堂書店」

f:id:peroon:20081115232337j:image

昨日行って、見て回るだけでも足が棒になった、福岡天神のジュンク堂書店。平成1年の時点では、日本で2位の売り場面積みたい。最大級っていうのは間違いないようだ。こうなったら1位の池袋店にも行ってみたい。

1:ジュンク堂書店 池袋本店  約2,000坪 豊島区
2:ジュンク堂書店 福岡店   約1,700坪 福岡市中央区
3:ジュンク堂書店 大阪本店  約1,500坪 大阪市北区
4:紀伊国屋書店  新宿南店  約1,400坪 渋谷区
5:ジュンク堂書店 神戸三宮店 約1,200坪 神戸市中央区

processing proce55ing sonia

ここのコードを参考に、いじっていこう。

//ライブラリを取り込む
import pitaru.sonia_v2_9.*;
//音源tune(名前は任意)を用意
Sample tune;

//再生/停止の切替フラグを用意
//falseの時停止、trueの時再生とする
boolean start=false;

void setup() {
//とりあえず画面を200角に設定
size(200,200);
//Sonia開始
Sonia.start(this);
//音源名を指定し設定する
tune = new Sample("sound.wav");
}

void draw(){
//特になし
}

//クリックした場合
void mousePressed(){
if(start==false){//フラグが停止の時
start=true; //フラグを再生にする
tune.play(); //音源再生

}else{ //フラグが再生に時
start=false; //フラグを停止にする
tune.stop(); //音源停止
}
}

//Soniaの使用停止
public void stop(){
Sonia.stop();
super.stop();
}

//ライブラリを取り込む
import pitaru.sonia_v2_9.*;
//音源tune(名前は任意)を用意
Sample tune;

//再生/停止の切替フラグを用意
//falseの時停止、trueの時再生とする
boolean start=false;

void setup() {
  //とりあえず画面を200角に設定
  size(200,200);
  //Sonia開始
  Sonia.start(this);
  //音源名を指定し設定する
  tune = new Sample("sound.wav");
}

void draw(){
  //特になし
}

//クリックした場合
void mousePressed(){
  if(start==false){//フラグが停止の時
    start=true;    //フラグを再生にする
    tune.play();   //音源再生
 
  }else{           //フラグが再生に時
    start=false;    //フラグを停止にする
    tune.stop();   //音源停止
  }
}

//Soniaの使用停止
public void stop(){ 
  Sonia.stop(); 
  super.stop(); 
}

引用記法(<<と>>で囲む)と、ソースコード記法(>||と||<で囲む)を比べてみた。ソースコード記法じゃないとスペースの情報が消えてしまうようだ。