18
SimpleAudioEngine カスタマイズ 株式会社シュハリ  松浦 晃洋

SimpleAudioEngine のカスタマイズ

Embed Size (px)

Citation preview

SimpleAudioEngine カスタマイズ

株式会社シュハリ  松浦 晃洋

自己紹介• 松浦 晃洋!• 株式会社シュハリ 代表取締役!• 株式会社スマートエデュケーションチーフエンジニア!

• Cocos2d-x 開発のレシピ執筆

• @syuhari!

• facebook.com/syuhari

リズムタップ

リズムオンステージ

SimpleAudioEngineをいじる!

• BGM を同時に2つ再生

• 効果音の同時再生数を増やす

• 効果音毎にボリュームを変える

• ピッチを変えて再生

• BGM にシーク機能を追加

OpenALとは

• 3Dオーディオの API

• 音源とリスナを3次元空間に配置して、音が立体的に聞こえるようにすることが可能

SimpleAudioEngineをいじる!

• BGM を同時に2つ再生

• 効果音の再生数を増やす

• 効果音毎にボリュームを変える!

• ピッチを変えて再生

• BGM にシーク機能を追加

効果音毎にボリューム設定• OpenAL のゲインを使用

• ゲインとは距離減衰

• 音源からどれくらい離れているかにより音の大きさが変わる

• ドップラー効果など再現可能

SimpleAudioEngineをいじる!

• BGM を同時に2つ再生

• 効果音の再生数を増やす

• 効果音毎にボリュームを変える

• ピッチを変えて再生!

• BGM にシーク機能を追加

ピッチを変えて再生• OpenAL のピッチを変える

• ピッチとは音の高低、再生速度の違い

• BGM のピッチを上げるとスーパーマリオのようにゲーム終盤でプレイヤにプレッシャーをかけたり

iOS

-(ALuint) playEffect:(NSString*) filePath loop:(BOOL) loop pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain { … return [soundEngine playSound:soundId sourceGroupId:0 pitch:pitch pan:pan gain:gain loop:loop]; … }

SimpleAudioEngine_objc.m

unsigned int playEffect(const char* pszFilePath, bool bLoop, float gain, float pitch);

SimpleAudioEngine.h

private int doPlayEffect(final String pPath, final int soundId, final boolean pLoop, float gain, float pitch) { // play sound int streamID = this.mSoundPool.play( soundId, gain, gain, Cocos2dxSound.SOUND_PRIORITY, pLoop ? -1 : 0, pitch); … }

Cocos2dxSound.java

Android

SimpleAudioEngineをいじる!

• BGM を同時に2つ再生

• 効果音の再生数を増やす

• 効果音毎にボリュームを変える

• ピッチを変えて再生

• BGM にシーク機能を追加

シーク機能を追加• 指定秒数までスキップしてから再生

• 現在再生中の秒数を取得

iOS

-(void) setBackgroundMusicCurrentTime:(float)currentTime { ! [as setCurrentTime:currentTime]; !}

SimpleAudioEngine_objc.m

void setBackgroundMusicCurrentTime(float currentTime);

SimpleAudioEngine.h

public void setBackgroundMusicCurrentTime(float sec) { ! … ! int msec = (int)(sec * 1000.0f); this.mBackgroundMediaPlayer.seekTo(msec); ! … !}

Cocos2dxMusic.java

Android

サウンド関係の問題点• Galaxy S4 はシークにバグがある

• 指定した秒数からずれる

• ズレ方はバラバラ

• Nexus5 の再生の問題

• 容量の大きいファイルを再生するとおかしくなる

• 長時間ストリーミング再生しているとおかしくなる

まとめ• リズムゲームを作るなら

• iOS だけなら簡単

• Android は端末毎にかなりクセがあるので調整にかなり時間がかかる