サウンド処理は非同期で その3
2013-11-30


// サウンドコマンド enum { COMMAND_UPDATE, // 稼働 COMMAND_PREPARE, // 準備 COMMAND_PLAY, // 再生・再開 COMMAND_STOP, // 停止 COMMAND_VOLUME, // 音量設定 COMMAND_NEXT, // 連続再生設定 COMMAND_PAUSE, // 一時停止 COMMAND_PAUSE_SYS, COMMAND_RESUME, // 再開 COMMAND_RESUME_SYS, }; /********** 稼働 **********/ void SoundManager::update(void) { set_command(-1, COMMAND_UPDATE); } /******************************************************** 再生 引数 _channel = チャンネル番号 _data = サウンドデータ _size = サウンドデータサイズ _loop = ループ回数(0:無限ループ) _vol = 音量 *******************************************************/ void SoundManager::prepare(int _channel, const void* _data, u32 _size, int _loop, float _vol) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_PREPARE, _data, _size, _loop, _vol); } void SoundManager::play(int _channel) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_PLAY); } void SoundManager::play(int _channel, const void* _data, u32 _size, int _loop, float _vol) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_PLAY, _data, _size, _loop, _vol); } void SoundManager::play(void) { set_command(-1, COMMAND_PLAY); // 全て再生開始 } /******************************************* 停止 引数 _channel = チャンネル番号 _cnt = フェード時間 *******************************************/ void SoundManager::stop(int _channel, int _cnt) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_STOP, NULL, (u32)_cnt); } void SoundManager::stop(void) { set_command(-1, COMMAND_STOP); // 全て停止 } /********************************************************* 音量設定 引数 _channel = チャンネル番号 _vol = 音量(0.0:最小 〜 1.0:最大) *********************************************************/ void SoundManager::set_volume(int _channel, float _vol) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_VOLUME, NULL, 0, 0, _vol); } /***************************************************** マスター音量設定 引数 _vol = 音量(0.0:最小 〜 1.0:最大) *****************************************************/ void SoundManager::set_master_volume(float _vol) { set_command(-1, COMMAND_VOLUME, NULL, 0, 0, _vol); } /******************************************************* 連続再生設定 引数 _channel = チャンネル番号 _data = サウンドデータ _size = サウンドデータサイズ _loop = ループ回数(0:無限ループ) *******************************************************/ void SoundManager::set_next(int _channel, const void* _data, u32 _size, int _loop) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_NEXT, _data, _size, _loop); } /********************************************* 一時停止 引数 _channel = チャンネル番号 *********************************************/ void SoundManager::pause(int _channel) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_PAUSE); } void SoundManager::pause(void) { set_command(-1, COMMAND_PAUSE); // 全て一時停止 } void SoundManager::pause_system(void) // システムによる一時停止 { set_command(-1, COMMAND_PAUSE_SYS); } /********************************************* 再開 引数 _channel = チャンネル番号 *********************************************/ void SoundManager::resume(int _channel) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); set_command(_channel, COMMAND_RESUME); } void SoundManager::resume(void) { set_command(-1, COMMAND_RESUME); // 全て再開 } void SoundManager::resume_system(void) // システムによる再開 { set_command(-1, COMMAND_RESUME_SYS); }

続きを読む
戻る
[Android プログラミング]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット