INDEX(各項目ごとの目次)

[HOME]  [Processing関係]  [Arduino関係]  [マテリアル関係]  [秋葉原工作マップ]

2008年用ですが、部分的に内容を更新しています(2010/06/14)。
また、[建築農業工作ゼミ2009-2010]とも連動していますので、そちらにも幾つかサンプルがあります。
:

7/28/2008

Processing サウンド3/テンポ

引き続きSoniaライブラリでの音の制御についてです。今回は曲や音源のスピード(テンポ)を変えてみたいと思います。Soniaでは、setRate()もしくはsetSpeed()で、容易に動的にテンポを変換できます。setRate()の場合は括弧内に0~88200までの値が入ります。その音源の基準のサンプルレートが44100であれば、22050を代入すると半分のスピードになり、88200で2倍のスピードになります。基準のサンプルレートを調べるにはgetRate()を用います。通常なら44100あたりに設定されていると思います。setSpeed()の場合は、0~2.0までの小数点が括弧内に入ります。0.5で半分のスピード、2.0で2倍のスピードになります。今回はsetSpeed()を用いて、マウスを上下(Y軸方向)にドラッグするとテンポが動的に変化するプログラムにします。

*音源データは、前回書いたようにスケッチフォルダ内にdataフォルダを作成し、その中に入れておいて下さい。
*プログラムをランさせた時に「Exception in thread "Thread-2" java.lang.OutOfMemoryError:...」のような赤文字のエラーが出たら、メモリーが足りないということなので、MacosXの場合はメニューバーのProcessing>環境設定を選択し(ウィンドウが現れる)、「Set maximum available memory to ... MB」の欄に256MBなど充分なメモリー(曲や音源のサイズ)を記入し、チェック欄にチェックを入れて下さい。Windowsの場合は、File>Preferencesを選択し、同様に充分なメモリー数を記入しチェックを入れて下さい。


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

void setup() {
//とりあえず画面を200角に設定
size(200,200);
//Sonia開始
Sonia.start(this);
//括弧内に音源名を指定し設定する
tune = new Sample("music.wav");
//音源のサンプルレートを調べる
println(tune.getRate());
//音源の再生
tune.play();
}

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

//マウスをドラッグしたとき
void mouseDragged(){
//マウスY座標値を0~2.0の範囲で割り当てる
float tempo=map(mouseY,0,height,0,2.0);
//テンポ(スピード)設定
tune.setSpeed(tempo);
}

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


map()には、1つ目の値が元となるマウスY座標値を入れ、2つ目の値にはその最小値、3つ目がその最大値、4つ目は変換された後の最小値、5つ目が変換された後の最大値を入れます。変化する値をスケーリングしたりオフセットを設けたりして変換させるときに使うと便利です。setSpeed()は0~2.0の値が入るので、マウスY座標値を0~2.0の範囲で変換させるということになります。

関連:
Processing サウンド4/スクラッチ」--曲をスクラッチ演奏する
Processing サウンド2/逆再生」--逆再生の音源をつくる
Processing サウンド1/Sonia」--音源の再生/停止/ポーズする

*MacOSX(Intel)の場合、新たにJSynプラグインをインストールする必要があります。ここをクリックすると、インストール画面に移動します。移動先のページ上の「Click Here to Install JSyn Plugin」のボタンを押してインストールしてください。

 iTunes Music Store(Japan)

0 件のコメント:



[目次:Processing関係]  [HOMEへ戻る]  [目次:Arduino関係]