サウンドをチャンネルで管理
2013-11-25


/******************************************************** 再生 引数 _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)); player[_channel].prepare(_data, _size, _loop, _vol); } void SoundManager::play(int _channel) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); player[_channel].play(); } void SoundManager::play(int _channel, const void* _data, u32 _size, int _loop, float _vol) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); player[_channel].prepare(_data, _size, _loop, _vol); player[_channel].play(); } void SoundManager::play(void) { for (int i = 0; i < SOUND_CHANNEL_MAX; i++) { // 全て再生開始 player[i].play(); } } /******************************************* 停止 引数 _channel = チャンネル番号 *******************************************/ void SoundManager::stop(int _channel) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); player[_channel].stop(); } void SoundManager::stop(void) { for (int i = 0; i < SOUND_CHANNEL_MAX; i++) { // 全て停止 player[i].stop(); } } /********************************************************* 音量設定 引数 _channel = チャンネル番号 _vol = 音量(0.0:最小 ~ 1.0:最大) *********************************************************/ void SoundManager::set_volume(int _channel, float _vol) { assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX)); player[_channel].set_volume(_vol); } /***************************************************** マスター音量設定 引数 _vol = 音量(0.0:最小 ~ 1.0:最大) *****************************************************/ void SoundManager::set_master_volume(float _vol) { if ( SoundPlayer::set_master_volume(_vol) ) { for (int i = 0; i < SOUND_CHANNEL_MAX; i++) { player[i].set_volume(); // 音量再設定 } } } /******************************************************* 連続再生設定 引数 _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)); player[_channel].set_next(_data, _size, _loop); }
再生等の処理です。
指定されたチャンネルのプレイヤーの処理を呼んでます。
停止等の処理でチャンネルを指定しない場合は、すべてのチャンネルのプレイヤーで処理を行うようになっています。

マスター音量設定時の各プレイヤーの音量の再設定はここで行いますので、アプリ側で行う必要はなくなりました。

/*********************************************
    一時停止
                引数      _f = 状態フラグを変更するか
 *********************************************/
void    SoundPlayer::pause(Bool _f)
{
        if ( state == PLAYING ) {                               // 再生中
                if ( bqPlayerObject ) {
                        (*bqPlayerPlay)-&gtSetPlayState(bqPlayerPlay, SL_PLAYSTATE_PAUSED);             // 一時停止状態
                }
                if ( _f ) {
                        state = PAUSED;
                }
        }
}


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

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


記事を書く
 powered by ASAHIネット