openFrameworks 基本動作 音楽編

   

今月末のiPhoneの勉強会に備えて、昨年7月以来、久々にopenFrameworksをやろうと本を引っぱり出してきました。
第二回目です。

Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門



波形を生成する


ここでは本の例題にそって、気づいたことを記載していきます。

P151から出てくる最初の例「音響合成」で出てくるコードの中で新しく関数が出てきます。

audioRequest()
ofSoundStreamSetup()



audioRequest()

まず、audioRequested()は、draw() やupdate()などと同じさまざまなイベント実行関数が含まれているクラスを”ofSimpleApp”に属しています。
設定したチャンネル数で、指定したサイズの波形をサウンドとして出力するための機能です。

ofSoundStreamSetup()

サウンド出力の設定を行います。
出力のチャンネル数、入力のチャンネル数、ofSimpleAppへのポインタを指定します。

チャンネルはよくわからないが、ステレオが2ch。
ヤマハの電化製品で5.1chなどある。音が2つの方向から聞こえるのが2chだと思います。

まずは、ofSetColor()で色を設定するように、ofSoundStreameSetup()でサウンドを設定します。

具体的なaudioRequest()の中身


TWO_PI

TWO_PIは6.28318530717958647693の値をもつ数学的な定数である。直径における円の円周率である。三角関数sin() とcos()と組み合わせると便利である。とProcessingのサイトに載ってました。円周率の2倍っぽいです。

サンプリング
音の波形を一定の時間で区切り、その区切った時間ごとに、波形の一を計算し数値の集合に変換します。
サンプリングを一秒間に何回行うかの単位を、サンプリング周波と言います。

今回の例では、サンプリング周波(sampleRate)で44100と指定されています。

定位 音の距離?

位相 時間みたいです?

周波数 一秒間に何回周期(一周期は波一回)があるか。周波数が高いと、音が高くなる。


バッファとは一時記録の領域です、バッファサイズはそのサイズ。終わると自動的に消去される。


音声を入力する


先ほどは、新しく音声を出力していましたが、今度は既にある音を波形に変換します。



audioReceived()は音が発生したときに呼び出される関数です。
これで配列の中に、信号の配列、バッファサイズ、チャンネル数を格納します。



ファイルを呼び込んで音楽を再生する


ofSoundPlayerクラスを利用する。
まずはインスタンスを作り、その後に色々はメソッドを使い音楽をコントロールします。


float * ofSoundGetSpectrum(int nBands);
再生中の音のボリュームを取得


Related Posts Plugin for WordPress, Blogger...