プログラムが複雑になってしまったのでクラス化した。とりあえず使い方だけ説明。SDカードには対応していない。
サンプルプログラムはBGMを再生して左ボタンで「ひよこの鳴き声」「ジャンプ音」が交互に再生、右ボタンで「やられ音」が再生する。
各チャンネルには以下の通りに登録されていて最大3音同時再生される。
チャンネル0「BGM」
チャンネル1「ひよこの鳴き声」「ジャンプ音」
チャンネル2「やられ音」
「ひよこの鳴き声」と「ジャンプ音」は同じチャンネルに登録されているので後から再生された方が1つのみ再生される。
SoundPlayerはSoundStreamとSoundMixerを使用している。
そのためSoundPlayerを使用するには下記の6つのファイルが必要になる。
SoundStream.hpp
SoundStream.cpp
SoundMixer.hpp
SoundMixer.cpp
SoundPlayer.hpp
SoundPlayer.cpp
■includeファイル #include "SoundPlayer.hpp" #include "TwinkleBeep04_11KHz_8bit_mono.h" // サウンドデータ ■SoundPlayerを11025Hzで再生する設定にして初期化 SoundPlayer::Initialize(11025); ■SoundPlayerはシングルトンなのでインスタンス取得する SoundPlayer& sound_player = SoundPlayer::GetInstance(); ■サウンドプレイヤーにデータを登録 引数は左からチャンネル,データ,データサイズ,ループするかどうかのフラグ int bgm_handle = sound_player.Append(0, TwinkleBeep04_11KHz_8bit_mono_wave, static_cast<int>(sizeof(TwinkleBeep04_11KHz_8bit_mono_wave)), true); ■サウンド再生 引数はAppendの戻り値 sound_player.Play(bgm_handle); ■サウンド停止 引数はAppendの戻り値 sound_player.Stop(bgm_handle); ■loop関数で毎回呼び出す sound_player.Update();
詳しくはサンプルソースのSoundSample2.inoを見てください。