C言語 OpenAL をWindowsXP MinGWで使う
C言語 ANSI C89の範囲だけでは直接音を出すアプリケーションは作れそうもない。Windows のライブラリを使えば簡単に実現できそうだったけど、OpenAL(Open Audio Library) というマルチプラットフォームなオーディオ API があるので、それをインストールしてみた。
http://connect.creativelabs.com/openal/default.aspx
OpenAL11CoreSDK.exe
freealut-1.1.0-bin
oalinst.exe
OpenAL11CoreSDK.exe
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads
Windows へのインストールは OpenAL11CoreSDK.exe をダブルクリックして行う。デフォルトのインストール先は C:\Program Files\OpenAL 1.1 SDK となっている。これは好きな場所で構わないと思う。どうも VC++ での開発を意識しているようなので、MinGWを使う場合は、いろいろファイルを移動する必要がある。
C:\Program Files\OpenAL 1.1 SDK\libs\ 内のファイルすべてを
C:\MinGW\lib\ へ移動。
C:\Program Files\OpenAL 1.1 SDK\include\ 内のファイルすべてを
C:\MinGW\include\AL\ へ移動。(AL フォルダは自分で作成)
そのほかの OpenAL11CoreSDK のファイルは使わないので、捨ててしまっても問題ないようだ。
freealut-1.1.0-bin
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads > ALUT
解凍し、その中の下記ファイルを移動する。
\lib\alut.dll は C:\WINDOWS\system32\ へ入れる。
\lib\alut.lib は C:\MinGW\lib\ へ入れる。
\include\AL\alut.h は C:\MinGW\include\AL\ へ入れる。
oalinst.exe
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads
これは作ったアプリケーションを起動するのに必要なようだ。ダブルクリックであっけないインストールが行われる。上の OpenAL11CoreSDK をアンインストールしたら、OpenALのアプリが動かなくなったので、これをインストールしたら無事動くようになった。C:\WINDOWS\system32 の中に wrap_oal.dll と OpenAL32.dll を入れるようだ。 ちなみに wrap_oal.dll を抜くと wavファイルの再生は出来ても、「HelloWorld」 としゃべるアプリは無音だった。
上記を
のようにオプションを付けてコンパイル。-lOpenAL32 -lalut は、openal32.lib、alut.libを意味する。出来たexeファイルは 9KB の小さなアプリケーション。これに再生したい wav ファイルをドラッグ&ドロップすると、コマンドプロンプトが下記のように表示され、最後まで再生される。Enter キーを押すと終了する。
OpenALでサイン波を鳴らす C言語
C言語 ANSI C89 Meadow & MinGW GCC 目次
sound programming 目次
インストール
OpenAL公式ページから以下をダウンロードする。http://connect.creativelabs.com/openal/default.aspx
OpenAL11CoreSDK.exe
freealut-1.1.0-bin
oalinst.exe
OpenAL11CoreSDK.exe
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads
Windows へのインストールは OpenAL11CoreSDK.exe をダブルクリックして行う。デフォルトのインストール先は C:\Program Files\OpenAL 1.1 SDK となっている。これは好きな場所で構わないと思う。どうも VC++ での開発を意識しているようなので、MinGWを使う場合は、いろいろファイルを移動する必要がある。
C:\Program Files\OpenAL 1.1 SDK\libs\ 内のファイルすべてを
C:\MinGW\lib\ へ移動。
C:\Program Files\OpenAL 1.1 SDK\include\ 内のファイルすべてを
C:\MinGW\include\AL\ へ移動。(AL フォルダは自分で作成)
そのほかの OpenAL11CoreSDK のファイルは使わないので、捨ててしまっても問題ないようだ。
freealut-1.1.0-bin
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads > ALUT
解凍し、その中の下記ファイルを移動する。
\lib\alut.dll は C:\WINDOWS\system32\ へ入れる。
\lib\alut.lib は C:\MinGW\lib\ へ入れる。
\include\AL\alut.h は C:\MinGW\include\AL\ へ入れる。
oalinst.exe
ダウンロード先は Creative Labs: Connect > OpenAL > Downloads
これは作ったアプリケーションを起動するのに必要なようだ。ダブルクリックであっけないインストールが行われる。上の OpenAL11CoreSDK をアンインストールしたら、OpenALのアプリが動かなくなったので、これをインストールしたら無事動くようになった。C:\WINDOWS\system32 の中に wrap_oal.dll と OpenAL32.dll を入れるようだ。 ちなみに wrap_oal.dll を抜くと wavファイルの再生は出来ても、「HelloWorld」 としゃべるアプリは無音だった。
wavファイルを再生するプログラムを作ってみる
wavファイルをドラッグ&ドロップで再生するプログラム。サンプルをいじって作ってみた。細かな部分は OpenAL がやってくれるので、関数の役割だけ知れば何とかなりそうという印象。
|
gcc wavplay.c -lOpenAL32 -lalut -s -o wavplayer |
OpenAL Player C:\sample.wav Press Enter key to exit. |
OpenALでサイン波を鳴らす C言語
C言語 ANSI C89 Meadow & MinGW GCC 目次
sound programming 目次