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

概要

曲を鳴らすためのモジュールです。
SDL_mixer を利用しており、WAVE, MOD, MIDI, OGG, MP3, FLAC フォーマットのファイルを再生することができます。

API

インストール

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

サンプル

引数で渡された曲のファイルを順に再生するサンプルです。
エンターキーを押すことで、次の曲の再生を行います。

#include <iostream>
#include <vector>
#include <cstdio>
#include "Music.h"
using namespace hrk;
using namespace std;
namespace
{
void print_usage(const char* program_name)
{
cout << "usage: " << program_name << " <file1> <file1> ..." << endl;
}
}
int main(int argc, char *argv[])
{
// 再生するファイル情報の取得
const char* program_name = argv[0];
if (argc < 2) {
print_usage(program_name);
return 1;
}
vector<string> play_files;
for (int i = 1; i < argc; ++i) {
play_files.push_back(argv[i]);
}
// 再生するファイルの読み出し
Music music;
for (vector<string>::const_iterator it = play_files.begin();
it != play_files.end(); ++it) {
if (!music.register_alias(*it, *it)) {
cerr << "Music::register_alias: " << music.what() << endl;
return 1;
}
}
cout << "current volume: " << music.volume_percent() << " [%]" << endl;
// 再生
const double fade_in = 1.0;
const double fade_out = 1.0;
for (vector<string>::const_iterator it = play_files.begin();
it != play_files.end(); ++it) {
cout << "play: " << *it << endl;
music.play(*it, fade_in, fade_out);
// 改行が入力されたら、次の曲を再生する
getchar();
}
// リソースの解放
for (vector<string>::const_iterator it = play_files.begin();
it != play_files.end(); ++it) {
music.unregister_alias(*it);
}
return 1;
}