ホーム < ゲームつくろー! < Ogg Vorbis入門編
その1 Ogg Vorbisライブラリのインストール
この章ではOgg Vorbisライブラリを使うための準備を行います。
@ ライブラリファイルの生成
Ogg VorbisのSDKはXiph.Org Foundationのサイトからダウンロードできます(http://www.xiph.org/downloads/)。沢山ありますが「libogg」及び「libvorbis」をダウンロードして下さい。解凍すると、liboggフォルダとlibvorbisフォルダがあります。これらの中に必要なファイル群が揃っています。
OggもVorbisもライブラリファイル(.lib)は提供されていません。まずはそれらのライブラリファイルを作成します。liboggフォルダの中にwin32フォルダがあります。この中にogg.dswというVisual Studioのワークスペースがありますので、これを開いてください。VS2005をお使いの方は変換するように促されますので、指示に従ってVS2005用に変換して下さい。
プロジェクトが開くと「ogg_dynamic」と「ogg_static」の2つのプロジェクトが含まれているのがわかると思います。前者が.dllを作るプロジェクト、後者が.libを作るプロジェクトです。ソリューションの構成を「Release」にしてビルドして下さい。これで先のフォルダに「Dynamic_Release」と「Static_Release」の2つのフォルダが作成されたと思います。今回扱いたいのはStatic_Releaseフォルダ下にあるogg_static.libファイルです。
続いてVorbis側に移ります。こちらは色々と面倒があります。ダウンロードして解凍したlibvorbisフォルダのwin32フォルダに移動します。ここにVS2003とかVS2005という魅力的なフォルダがあるのですが、この中のプロジェクトは「実行しません!」。と言うのも、この中のプロジェクトでライブラリを作成すると、アプリケーションでOgg
Vorbisを扱う時に動的ライブラリであるDLLを強要されてしまうためです。配布する時にDLLを渡せば良いのですが、それはちょっと面倒です(DLLの恩恵はもちろんありますが…)。今回はDLLではなくてすべて静的なライブラリであるLIBファイルで事を進めたいんです。そこで、win32フォルダにある「vorbis_static.dsp」というファイルを実行します。これは静的なライブラリファイルを作ってくれるプロジェクトです。
開いたプロジェクトをRelease版でビルドすると「ヘッダーファイルが無いよ」というコンパイルエラーが出ます。これはlibvorbisがOgg側のヘッダーファイルに依存しているためです。そこでメニューからプロジェクトのプロパティを開き、[構成プロパティ]→[C/C++]→[全般]にある「追加のインクルードディレクトリ」に先ほどのliboggフォルダにあるincludeフォルダを指定します。これでヘッダーが無いコンパイルエラーは無くなります。
この状態でビルドすると今度はリンカーエラーが出ます。これもvorbisがOgg側のライブラリファイルに依存しているためです。Oggライブラリは先ほど作りましたogg_static.libです。これにパスを通します。[構成プロパティ]→[ライブラリアン]→[全般]にある「追加のライブラリディレクトリ」に先ほど自動作成されたogg_static.libがあるフォルダを指定します。さらに「追加の依存ファイル」にogg_static.libを追加します。これでビルドすると通るはずです。warningが山ほど出ますが動作には問題ありません。win32/Vorbis_Static_Releaseフォルダにvorbis_static.libがあれば正解です。VS2003の場合も同様にパスを通せばビルドできます。
これでOggライブラリとVorbisライブラリが揃いました。
実は、もう1つ「vorbisfile_static.lib」というライブラリを作ります。このライブラリはOgg Vorbisファイルを扱いやすくしてくれる高レベルAPIを提供してくれています。このライブラリを作るためのプロジェクトファイルはwin32フォルダの「vorbisfile_static.dsp」です。これを起動してプロジェクトを開きます。
このままRelease版でビルドするとやはりヘッダーが無いとコンパイラに文句を言われます。libvorbisfileはOgg側とVorbis側の両方に依存しています。ヘッダーはOgg側だけのようなので、oggフォルダのincludeフォルダをヘッダーのパスとして通します(通し方は先ほどと同じ)。ライブラリは両方に依存しています。双方のライブラリへのパスを[ライブラリアン]の[全般]で通し、追加のリンクファイルにogg_static_libとvorbis_static.libの両方を記述します。これでビルドするとうまくいくはずです。win32/VorbisFile_Static_Releaseフォルダにvorbisfile_static.libがあれば正解です。
ここで作成した3つのライブラリファイル(ogg_static.lib、vorbis_static.lib、vorbisfile_static.lib)を使ってプログラムを組んでいきます。
A テスト環境の構築
早速ライブラリを使いたいわけですが、いきなり本腰入れた事はしません。まずはライブラリの使い方を知ってからクラス化なりを考えるわけです。そこでテスト環境を作っておきましょう。Ogg VorbisはWin32アプリケーションである必要はありませんので、コンソールアプリケーションをテスト環境にします。
コンソールアプリケーションの作り方はきっと皆さん熟知されていると思いますので省略します。とりあえずmain関数がある空っぽの環境を作ってください。ここに先ほど作成した静的ライブラリ(.lib)をリンクします。まず、ライブラリをどこか適当な場所にコピーしてください。もちろん、先ほど作った場所においておいても一向に構いません。パスさえ通ればOKです。
プロジェクトのプロパティで先ほど行ったように[リンカ]→[全般]にある「追加のライブラリディレクトリ」にogg_static.lib、vorbis_static.libそしてvorbisfile_static.lib全部に対してパスを通します。ライブラリの指定はプロジェクトのプロパティ内の「追加のリンクファイル」に記述してももかまいませんし、プログラム上で#pragima commentでリンクしても構いません。お好きな方をお使い下さい。あと、ヘッダーファイルへのパスも忘れずに設定してください。ヘッダーの位置は@の時と同じく双方のライブラリのincludeフォルダです。
もう一つ、このままですとLIBCMTライブラリの競合が起きてしまいます。そこで[構成プロパティ]→[リンカ]→[入力]にある「特定のライブラリの無視」に「LIBCMT」を追加して下さい。これでライブラリの競合は無くなります。
追加のリンクファイルにライブラリファイルを記述しなかった場合、プログラム側に次のようなライブラリへのリンクを書き込みます:
ライブラリへリンクする #pragma comment ( lib, "ogg_static.lib" )
#pragma comment ( lib, "vorbis_static.lib" )
#pragma comment ( lib, "vorbisfile_static.lib" )
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#pragma commentディレクティブでライブラリへリンクできます。これでコンパイルしてみてエラーが出ずに通ればテスト環境は完成です。
B Ogg Vorbisの情報
Ogg Vorbisに関するドキュメントは各フォルダのdocフォルダ内にあるindex.htmlにあります。実際のプログラムの組み方はvorbis側のドキュメントにあるようです。Xiph.Org Foundationのサイトにもオンラインドキュメントがあります(http://www.xiph.org/doc/)。
C Ogg Vorbisファイルの作成方法
Ogg Vorbisファイルを作るにはエンコーダを使うのが一番だと思います。私は「Rip!AudiCO」や「BonkEnc(オフィシャルサイトはこちら)」というフリーソフトを使用しています。Vectorでoggと検索すると沢山出てきますので、扱いやすい好きなソフトを選択すると良いでしょう。
テスト環境も整いましたので、次章からはライブラリを使って何らかの音を鳴らしてみようと思います。