TinyArcade/BGMとSE同時再生
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[戻る>TinyArcade]]
*BGMとSE同時再生 [#d1fd7632]
プログラムが複雑になってしまったのでクラス化した。とりあ...
各チャンネルには以下の通りに登録されていて最大3音同時に再...
チャンネル0「BGM」~
チャンネル1「ひよこの鳴き声」「ジャンプ音」~
チャンネル2「やられ音」~
「ひよこの鳴き声」と「ジャンプ音」は同じチャンネルに登録...
*SoundPlayerの使い方 [#ob0b3213]
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_11...
■サウンド再生 引数はAppendの戻り値
sound_player.Play(bgm_handle);
■サウンド停止 引数はAppendの戻り値
sound_player.Stop(bgm_handle);
■loop関数で毎回呼び出す
sound_player.Update();
*サンプルソース (SoundSample2.inoのみ) [#kf645823]
#include <TinyScreen.h>
#include "SoundPlayer.hpp"
#include "TwinkleBeep04_11KHz_8bit_mono.h"
#include "hiyoko_01.h"
#include "jump_01_take2.h"
#include "Knockdown.h"
static const unsigned long FPS = 30;
static const unsigned long INTERVAL_TIME = 1000000 / FPS;
static const unsigned int BUTTON_LEFT_PIN = 45;
static const unsigned int BUTTON_RIGHT_PIN = 44;
TinyScreen tiny_screen = TinyScreen(TinyScreenPlus);
int version = 1;
unsigned long micros_time;
int bgm_handle;
int piyo_handle;
int jump_handle;
int piyo_jump_select;
int knockdown_handle;
unsigned int button_before;
void setup()
{
// 画面初期化
tiny_screen.begin();
tiny_screen.setBitDepth(TSBitDepth8);
tiny_screen.setBrightness(8);
tiny_screen.setFont(liberationSansNarrow_12ptFontInfo);
tiny_screen.fontColor(TS_8b_White, TS_8b_Black);
// ボタン初期化
pinMode(BUTTON_LEFT_PIN, INPUT_PULLUP);
pinMode(BUTTON_RIGHT_PIN, INPUT_PULLUP);
button_before = 0;
// サウンド初期化
SoundPlayer::Initialize(11025);
SoundPlayer& sound_player = SoundPlayer::GetInstance();
bgm_handle = sound_player.Append(0, TwinkleBeep04_11KHz...
piyo_handle = sound_player.Append(1, hiyoko_01_wave, st...
jump_handle = sound_player.Append(1, jump_01_take2_wave...
knockdown_handle = sound_player.Append(2, Knockdown_wav...
piyo_jump_select = 0;
sound_player.Play(bgm_handle);
micros_time = micros();
}
void loop()
{
unsigned long interval_time = micros() - micros_time;
SoundPlayer& sound_player = SoundPlayer::GetInstance();
if(interval_time > INTERVAL_TIME)
{
// ボタン判定
unsigned int button = 0;
if(!digitalRead(BUTTON_LEFT_PIN))
{
button |= 1;
}
if(!digitalRead(BUTTON_RIGHT_PIN))
{
button |= 2;
}
if(((button_before & 1) == 0) && (button & 1))
{
sound_player.Play((piyo_jump_select == 0) ? piyo_hand...
piyo_jump_select = 1 - piyo_jump_select;
}
if(((button_before & 2) == 0) && (button & 2))
{
sound_player.Play(knockdown_handle);
}
// 30FPS間隔で行う処理 (画面更新、ゲーム進行など)
char text[128];
tiny_screen.clearScreen();
tiny_screen.setCursor(0, 0);
sprintf(text, "FPS %lu", 1000000 / interval_time);
tiny_screen.print(text);
tiny_screen.setCursor(0, 12);
tiny_screen.print("Push button");
button_before = button;
micros_time = micros();
}
// 最速で行う処理 (サウンド処理など)
sound_player.Update();
}
*実行結果 [#b69e9707]
#ref(SoundSample2.jpg)
BGMは自動的に再生され左ボタンで「ひよこの鳴き声」「ジャン...
*サンプルプログラムのダウンロード [#aec19ca3]
#ref(SoundSample2.zip)~
終了行:
[[戻る>TinyArcade]]
*BGMとSE同時再生 [#d1fd7632]
プログラムが複雑になってしまったのでクラス化した。とりあ...
各チャンネルには以下の通りに登録されていて最大3音同時に再...
チャンネル0「BGM」~
チャンネル1「ひよこの鳴き声」「ジャンプ音」~
チャンネル2「やられ音」~
「ひよこの鳴き声」と「ジャンプ音」は同じチャンネルに登録...
*SoundPlayerの使い方 [#ob0b3213]
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_11...
■サウンド再生 引数はAppendの戻り値
sound_player.Play(bgm_handle);
■サウンド停止 引数はAppendの戻り値
sound_player.Stop(bgm_handle);
■loop関数で毎回呼び出す
sound_player.Update();
*サンプルソース (SoundSample2.inoのみ) [#kf645823]
#include <TinyScreen.h>
#include "SoundPlayer.hpp"
#include "TwinkleBeep04_11KHz_8bit_mono.h"
#include "hiyoko_01.h"
#include "jump_01_take2.h"
#include "Knockdown.h"
static const unsigned long FPS = 30;
static const unsigned long INTERVAL_TIME = 1000000 / FPS;
static const unsigned int BUTTON_LEFT_PIN = 45;
static const unsigned int BUTTON_RIGHT_PIN = 44;
TinyScreen tiny_screen = TinyScreen(TinyScreenPlus);
int version = 1;
unsigned long micros_time;
int bgm_handle;
int piyo_handle;
int jump_handle;
int piyo_jump_select;
int knockdown_handle;
unsigned int button_before;
void setup()
{
// 画面初期化
tiny_screen.begin();
tiny_screen.setBitDepth(TSBitDepth8);
tiny_screen.setBrightness(8);
tiny_screen.setFont(liberationSansNarrow_12ptFontInfo);
tiny_screen.fontColor(TS_8b_White, TS_8b_Black);
// ボタン初期化
pinMode(BUTTON_LEFT_PIN, INPUT_PULLUP);
pinMode(BUTTON_RIGHT_PIN, INPUT_PULLUP);
button_before = 0;
// サウンド初期化
SoundPlayer::Initialize(11025);
SoundPlayer& sound_player = SoundPlayer::GetInstance();
bgm_handle = sound_player.Append(0, TwinkleBeep04_11KHz...
piyo_handle = sound_player.Append(1, hiyoko_01_wave, st...
jump_handle = sound_player.Append(1, jump_01_take2_wave...
knockdown_handle = sound_player.Append(2, Knockdown_wav...
piyo_jump_select = 0;
sound_player.Play(bgm_handle);
micros_time = micros();
}
void loop()
{
unsigned long interval_time = micros() - micros_time;
SoundPlayer& sound_player = SoundPlayer::GetInstance();
if(interval_time > INTERVAL_TIME)
{
// ボタン判定
unsigned int button = 0;
if(!digitalRead(BUTTON_LEFT_PIN))
{
button |= 1;
}
if(!digitalRead(BUTTON_RIGHT_PIN))
{
button |= 2;
}
if(((button_before & 1) == 0) && (button & 1))
{
sound_player.Play((piyo_jump_select == 0) ? piyo_hand...
piyo_jump_select = 1 - piyo_jump_select;
}
if(((button_before & 2) == 0) && (button & 2))
{
sound_player.Play(knockdown_handle);
}
// 30FPS間隔で行う処理 (画面更新、ゲーム進行など)
char text[128];
tiny_screen.clearScreen();
tiny_screen.setCursor(0, 0);
sprintf(text, "FPS %lu", 1000000 / interval_time);
tiny_screen.print(text);
tiny_screen.setCursor(0, 12);
tiny_screen.print("Push button");
button_before = button;
micros_time = micros();
}
// 最速で行う処理 (サウンド処理など)
sound_player.Update();
}
*実行結果 [#b69e9707]
#ref(SoundSample2.jpg)
BGMは自動的に再生され左ボタンで「ひよこの鳴き声」「ジャン...
*サンプルプログラムのダウンロード [#aec19ca3]
#ref(SoundSample2.zip)~
ページ名: