hamigaki.png (2451 bytes)

前のページ 上に戻る ホーム 次のページ

チュートリアル

基本的な使い方

基本的な使い方

Hamigaki.Audioを使用した簡単な例として、Ogg Vorbisファイルを再生するプログラムを紹介する。

#include <hamigaki/audio/vorbis_file.hpp>
#include <hamigaki/audio/pcm_device.hpp>
#include <boost/iostreams/copy.hpp>

namespace audio = hamigaki::audio;
namespace io = boost::iostreams;

int main()
{
    audio::vorbis_file_source vf("doremi.ogg");
    io::copy(vf, audio::pcm_sink(vf.format()));
}

Hamigaki.AudioにおけるオーディオデバイスはBoost.IostreamsのSource/Sinkのモデルとして実装されている。ここではSourceとしてvorbis_file_sourceを、Sinkとしてpcm_sinkを使用している。

vorbis_file_sourceはOgg Vorbisファイルを読み出すSourceである。コンストラクタの引数としてファイル名を指定する。

pcm_sinkはPCMデータを再生するためのSinkである。Source/Sink間のデータのやり取りは同じフォーマットで行う必要がある。そのため、pcm_sinkのコンストラクタにはvorbis_file_source::format()から取得したpcm_formatを渡す。

Sourceからデータを読み取り、Sinkへ書き出すにはboost::iostreams::copy()を用いる。もちろん、boost::iostreams::read()boost::iostreams::write()も使用できる。

Source/Sink間のフォーマットが同じであれば、SourceとSinkは自由に変更できる。例えば、WAVファイルをOgg Vorbisファイルに変換するプログラムは次のように書くことができる。

#include <hamigaki/audio/wave_file.hpp>
#include <hamigaki/audio/vorbis_encoder.hpp>
#include <boost/iostreams/copy.hpp>

namespace audio = hamigaki::audio;
namespace io = boost::iostreams;

int main()
{
    audio::wave_file_source wf("doremi.wav");
    io::copy(wf, audio::vorbis_file_sink("doremi.ogg", wf.format()));
}
製作著作 © 2006 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ