asio_sink
まだ作りかけですが、何とかモノラル再生ができたのでアップしました。
ステレオだとうまく鳴らないので、どこかバグっています。
#include <hamigaki/detail/windows/com_library.hpp> #include <hamigaki/audio/asio.hpp> #include <hamigaki/audio/sine_wave.hpp> #include <boost/iostreams/copy.hpp> #include <boost/iostreams/restrict.hpp> namespace audio = hamigaki::audio; namespace io = boost::iostreams; using namespace hamigaki::detail::windows; int main(int argc, char* argv[]) { com_library using_com; // CLSID直指定 audio::asio_device asio(L"{232685C6-6548-49D8-846D-4141A3EF7560}"); asio.rate(44100.0); // 入力チャンネル数, 出力チャンネル数 asio.create_buffers(0, 1); // 5秒間、ドを再生 io::copy( io::restrict( audio::sine_wave_source(44100, 32, 261.6), 0, 4*44100 * 5 ), asio.get_sink(0) ); }
TODO:
- ステレオ再生の修正
- 再生の開始と停止が適当なのを直す
- デバイスの列挙
- 初期化の改善
- asio_sourceを作る