DIAVIS-wiki
サウンドライブラリMinimに関するメモ #contents &br;&br; ---- *Minimとは [#i33f178e] Minimは,Processing環境における開発のために,より簡単にオーディオライブラリを使用するための,JavaSound APIと,少しのTritonus,JavazoomMP3SPIを使用するサウンドライブラリ. ライセンスは,GNU Lesser General Public License (LGPL). Javadocは,http://code.compartmental.net/minim/javadoc/ 以下から,.jarファイルだけや,javadocも含めたfull distributionもダウンロード可能. http://code.compartmental.net/tools/minim/ loadFile Stringでファイルを特定. バッファサイズを指定可能. バッファサイズを指定しない場合は,1024. *Minimの再生可能なファイル形式 [#rc308c56] -wav -au -aif -snd -mp3 サウンドファイルは,sketchのdataフォルダの中 もしくは,絶対パス(ex."C:\foo\bar\thing.wav").しかし,Appletでは動かない. URLの場合(ex."http://www.mysite.com/mp3/song.mp3"). しかし,セキュリティ上の制限から,Appletとして動作させる場合は,Appletと同じドメインからしか読み込めない. 但し,アプレットの署名により,この問題を回避できるとのこと. スケッチを終了させる前に, MinimのloadFIleで得た,AudioPlayerのcloseメソッドを呼ぶこと. 続いて,MinimのStopメソッドを呼ぶこと. *構造について [#oac0f8bd] ・2つの基本となるクラス -Controller -AudioSource -2つの基本となるクラス --Controller --AudioSource ・4つのインターフェース -Playable -Effectable -Polyphonic -Recordable -4つのインターフェース --Playable --Effectable --Polyphonic --Recordable ・AudioSourceは,3つのAudioBuffere(サンプルバッファ)を定義する. -left -right -mix -AudioSourceは,3つのAudioBuffere(サンプルバッファ)を定義する. --left --right --mix -これら3つのサンプルバッファは,単なるfloat配列. -これら3つのサンプルバッファは,右チャネル,左チャネル,ミックスされたチャネルを個別に保持. -サンプルバッファは,以下のどちらかによって継続的にオーディオ(課長周波数)として更新される. ---ファイルからの読込み ---AudioSIgnalによって生成 -AudioSourceからの派生(?).以下のクラスは,サンプルへのアクセスを提供. --AudioPlayer --AudioOutput --AudioInput --AudioSample -AudioSourceは4つのインターフェイスのうち2つを実装する. --Recordable --Effectable -AudioPlayerは -AudioSourceもしくはControllerでできることはすべてAuioPlayerでできる. *Controller [#gec0b2f3] **controlsの出力 [#fbfd65ee] -JavaSoundは,プログラムとシステム間のオーディオの転送に<Line>を使用する. -各Lineは,panning, balance, gain, volumeのようなコントロールを持っている. -このことの利点は,自分で上記のコントロールの実装について気にする必要がないこと. -(怪しい)欠点は,あなたのアプリケションがオーディオを再生するとき,サンプルを受け取った後でエフェクトを実施すること. -このことが意味することは,何らかのステレオファイルを極端に右に再生するバランスセットで再生できるが,あなたがアクセスするサンプルには少しの違いも見られないということ. -すべてのラインにおいてすべてのコントロールが使用可能ではない. -printControlsメソッド.controllerに対して可能な生後のリストをPDEコンソールに出力. ・これら3つのサンプルバッファは,単なるfloat配列. ・これら3つのサンプルバッファは,右チャネル,左チャネル,ミックスされたチャネルを個別に保持. ・サンプルバッファは,以下のどちらかによって継続的にオーディオ(課長周波数)として更新される. -ファイルからの読込み -AudioSIgnalによって生成 -コンピュータによって利用できるコントロールが違う. -これらを確かめるため,Controllerは,hasControlメソッをを提供する. -Controllerは6つの静的メンバを持っている. --BALANCE --GAIN --PAN --MUTE --SAMPLE_RATE --VOLUME ・AudioSourceからの派生(?).以下のクラスは,サンプルへのアクセスを提供. -AudioPlayer -AudioOutput -AudioInput -AudioSample AudioOutput out; out.hasControl(Controller.PAN) ・AudioSourceは4つのインターフェイスのうち2つを実装する. -Recordable -Effectable ・AudioPlayerは ・AudioSourceもしくはControllerでできることはすべてAuioPlayerでできる. **コントロールのセッティング [#pd59993e] getterとsetterは以下の通り. -setBalance(float value) -getBalance() -setGain(float value) -getGain() -setPan(float value) -getPan() -setVolume(float value) -getVolume() ***レンジ [#ub66f1c3] -balance: -1から1 -gain: 大抵-80から6 -pan: -1から1 -volumeは知らないとのこと.使えた試しがないかららしい. *AudioSource [#j4ebb7b1] -AudioSourceは3つのAudioBufferメンバと,,RecordableとEffectable interfacesを定義する. -あなたはAudioSourceを決して直接作成しない. それは,単にクラスのAudioPlayer,AudioSample,AudioOuput,およびAudioInputのための一般的な機能性を提供するために存在している. **AudioBuffer [#h454cd37] -size()メソッドは,bufferの長さを返す. -get(int i)は,bufferのi番目のfloat値[-1,1]を返す. *Polyphonic 多声 [#n323e8a0] * AudioSnippet [#q0df4628] -Snippetは切れ端とかの意味 -メモリへの読込み.と再生. -小さいファイルの再生で,サンプルへのアクセスが必要ない場合に利用. -ただし,すぐにOutOfMemoryになる可能性が高い. -サイズが大きなファイルを再生したい場合には,AudioPlayerを使うべき. *AudioOutput [#z426be3a] -AudioOutputはコンピュータのサウンドカードへのコネクション. -AudioSignalのアタッチングによるサウンドのリアルタイム合成に利用できる. -AudioOutputオブジェクトはMinimから以下の5つのうち1つのメソッドによって取得可能. :AudioOutput getLineOut()|specifiy either Minim.MONO or Minim.STEREO for type :AudioOutput getLineOut(int type)|bufferSize is the size of the left, right, and mix buffers of the output you get back :AudioOutput getLineOut(int type, int bufferSize)|sampleRate is a request for an output of a certain sample rate :AudioOutput getLineOut(int type, int bufferSize, float sampleRate)|bitDepth is a request for an output with a certain bit depth :AudioInput getLineOut(int type, int bufferSize, float sampleRate, int bitDept| *クラス [#m625f6c8] **BeatDetect [#o716e1e6] BeatDetectクラスは,ビート(rhythmic onsets)のためのオーディオストリームの分析を可能にする.BeatDetectの中の2つのアルゴリズムは,Frédéric Patinという人による,Beat Detection Algorithmsの論文の中に記述された2つのアルゴリズムに基づいているとのこと. BeatDetectを使用するためには,draw()の中で,解析したいAudioBufferを渡した上でdetectメソッドを呼ばなければならない. BeatDetectには,以下の2つのモードがある. -sound energy tracking -frequency energy tracking ***sound energy tracking [#h6642b66] バッファのレベルはlevel()によって返され,各フレームのinstant energyとして用いられる.ビートは,相対的に1秒前の音に対して,この値において急上昇する. ***frequency energy tracking [#l79691e9] 同じプロセスが使用されるが,スペクトルを得るためにFFTが用いられ,平均幅(average bands)に分けられ,それらの幅は個々にトラックされる.結果として,周波数スペクトルの異なる部分で独立的に起こる音(キックドラムやスネアドラム)をトラックすることができる. |