maaash.jp

what I create

クロスプラットフォームな音声IO portaudioを試す

週末にもりもり更新されるブログです。
クロスプラットフォームとかほんとめんどくさいけどやってみるよ。

音声のとこもマイクからの入力とか再生とかプラットフォーム依存だよなーと思ってたらportaudioがよいかも。
PortAudio – portable cross-platform Audio API

自分と同じようにlibjingle使ってみてる人がいて
Libjingle for Mac OS X

Support for OS X was written several months ago, by defining a new sound card type in mediastreamer (a third-party framework included in libjingle), making use of the cross-platform PortAudio API to do interaction with the audio hardware. We never tested it, so we assumed it didn’t work. Fortunately, a quick test proved that wrong ! So now we are down to one unsupported platform: Windows. Because PortAudio is cross-platform, it should in theory work on other platforms as well, including Windows.

Windowsではまだ動いてないみたいだけどMacで動いてると。
では、Windowsで動かそう。

Using the PortAudio SVN repository
ソースを入手
“` svn co https://www.portaudio.com/repos/portaudio/trunk .[/code]

VC7.1向けのslnが入ってるので(!)2005にコンバートして開ける。
・コンパイラのincludeに Microsoft Platform SDK/include と Microsoft DirectX SDK (August 2008)/include をいれる
・同様にリンカの方にも入れる
ASIOsteinberg開発者登録したのにログインできなくてSDK手に入らないのでプロジェクトから削除

Windows旧来のMMEではその遅延時間(発声してから出力されるまでのタイムラグ)は500から200ミリ秒、Direct Soundでも100から50ミリ秒、Mac OSのSound Managerで50から20ミリ秒とされているが、ASIOの場合はバッファ容量などの設定によって異なるが、10ミリ秒以下、環境によっては1ミリ秒以下となる場合もある

これは魅力的なんだけどなぁ
・リンクが通らないので pa_win_waveformat.c を追加

すればビルドできる。C++のラッパもある。
fmfm

これを使ってlibjingleのMediaEngineをつくろう

Comments