趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
効果音の再生

概要

効果音を鳴らすためのモジュールです。
SDL_mixer を利用しており、WAVE, AIFF, RIFF, OGG, VOC フォーマットのファイルを再生することができます。

API

インストール

hobby_robot_sdk パッケージをインストールすると音楽用の API が利用できます。
インストール手順については、以下のページをご覧下さい。

サンプル

引数で渡された曲のファイルを、指定された回数だけ再生するサンプルです。

#include <cstdlib>
#include <iostream>
#include "Sound_effect.h"
#include "delay.h"
#include <cstdio>
using namespace hrk;
using namespace std;
namespace
{
void print_usage(const char* program_name)
{
cout << "usage: " << program_name << " <file> [play times]" << endl;
}
}
int main(int argc, char *argv[])
{
// 再生するファイル情報の取得
const char* program_name = argv[0];
if (argc < 2) {
print_usage(program_name);
return 1;
}
const char* effect_file = argv[1];
int loop_times = 1;
if (argc >= 3) {
loop_times = atoi(argv[2]);
}
// 再生するファイルの読み出し
Sound_effect sound_effect;
if (!sound_effect.register_alias("effect", effect_file)) {
cerr << "Sound_effect.register_aliast: " << sound_effect.what() << endl;
return 1;
}
cout << "current volume: "
<< sound_effect.volume_percent() << " [%]" << endl;
// 再生
for (int i = 0; i < loop_times; ++i) {
int play_id = sound_effect.play("effect");
while (sound_effect.is_playing(play_id)) {
delay(0.100);
}
}
// リソースの解放
sound_effect.unregister_alias("effect");
return 0;
}