hiloyaの日記

2011-09-28

SDLでサウンドキャプチャ(失敗)

マイクから入力した音にエフェクトをかけてリアルタイムに出力する
プログラムを作ろうとしている。


とりあえずSDL Audioで波形を指定しながら流していく出力はうまくできた。
環境はWindowsXPで、言語はD言語



次はマイクからの入力だけれど、SDL1.2ではサウンドキャプチャAPI
まだ実装されていなくて、開発中の1.3で実装される予定らしい。

http://torsion.org/witten/sdl/
ここで、SDL1.2.4でサウンドキャプチャできるようにしたパッチを発見。これを使えばSDL1.2で音を取り込める、のだろうか?


とりあえず試してみた。あとから同じようなことをするときに
困らないように自分用メモ。
今回やったことは

SDLのソース(SDL1.2.4.tar.gz)を探してダウンロード

BCCインストール

patchは、http://cetus.sakura.ne.jp/softlab/toolbox1/index.html
のpatch.exe(windows版)を使わせてもらう。

SDLのソースのroot directoryにdiffファイルを持ってきて、
patch.exeにパスを通した状態で、
patch.exe -p 1 < SDL-1.2-record.diff
これでソースが変更される。

Borland/freebccディレクトリで、
make -f SDL.mak
SDLビルド

出来上がったSDL.dllからDMDのimplibでD言語用libファイルを作成。

これで、DLLインポートライブラリはOKのはず。

これで desired_spec.format |= AUDIO_INPUTでrecordingを指定してみたが、一般保護違反で落ちる。

いろいろ弄ってもうまくいかず。
ADUIO_OPTPUTは問題なく動く。
D言語周辺がなにかまずいのか?

ここで、ダメ元で同じのをCで書いてBCCコンパイルしてみる。
結局、Cで書いてみたけれど、おんなじところで落ちる。

環境がWindowsなのもまずいのかもしれない。


SDLの描画関連のAPIには慣れているので、リアルタイムエフェクトソフトを作るときに、SDLで全部完結してしまえば楽だと思ったけれど、どうも難しい気がする。
出力ONLYのソフトシンセならSDLだけで十分作れそう。


でもやっぱりエフェクタが作りたいので、次はPortAudioやOpenALについて調べてみよう。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/k002/20110928/1317217051