153 lines
3.2 KiB
C++
Raw Permalink Normal View History

2014-03-18 11:13:00 +01:00
/**
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license MPL v2.0 (see license file)
2014-03-18 11:13:00 +01:00
*/
2016-10-02 21:51:38 +02:00
#include <etk/types.hpp>
2014-03-18 11:13:00 +01:00
2016-10-02 21:51:38 +02:00
#include <audio/river/Interface.hpp>
#include <audio/river/Manager.hpp>
#include <audio/ess/ess.hpp>
#include <audio/ess/debug.hpp>
#include <ejson/ejson.hpp>
2018-10-23 22:19:32 +02:00
#include <etk/uri/uri.hpp>
2014-03-18 11:13:00 +01:00
2016-07-19 21:43:58 +02:00
ememory::SharedPtr<audio::river::Manager> g_audioManager;
ememory::SharedPtr<audio::ess::Effects> g_effects;
ememory::SharedPtr<audio::ess::Music> g_music;
2014-03-18 11:13:00 +01:00
2015-04-11 13:20:46 +02:00
void audio::ess::init() {
g_audioManager = audio::river::Manager::create("ewol-sound-set");
2016-07-19 21:43:58 +02:00
g_effects = ememory::makeShared<audio::ess::Effects>(g_audioManager);
g_music = ememory::makeShared<audio::ess::Music>(g_audioManager);
2014-03-18 11:13:00 +01:00
}
2015-04-11 13:20:46 +02:00
void audio::ess::unInit() {
g_effects.reset();
g_music.reset();
g_audioManager.reset();
2014-03-18 11:13:00 +01:00
}
2017-08-28 00:08:27 +02:00
void audio::ess::soundSetParse(const etk::String& _data) {
ejson::Document doc;
doc.parse(_data);
2016-04-20 21:19:11 +02:00
ejson::Object obj = doc["musics"].toObject();
if ( obj.exist() == true
2018-06-19 22:13:48 +02:00
&& g_music != null) {
2016-04-20 21:19:11 +02:00
for (auto &it : obj.getKeys()) {
2017-08-28 00:08:27 +02:00
etk::String file = obj[it].toString().get();
EWOLSA_INFO("load Music : '" << it << "' file=" << file);
g_music->load(file, it);
}
}
2016-04-20 21:19:11 +02:00
obj = doc["effects"].toObject();
if ( obj.exist() == true
2018-06-19 22:13:48 +02:00
&& g_effects != null) {
2016-04-20 21:19:11 +02:00
for (auto &it : obj.getKeys()) {
2017-08-28 00:08:27 +02:00
etk::String file = obj[it].toString().get();
EWOLSA_INFO("load Effect : '" << it << "' file=" << file);
g_effects->load(file, it);
}
}
2015-07-01 21:03:26 +02:00
}
2018-10-23 22:19:32 +02:00
void audio::ess::soundSetLoad(const etk::Uri& _uri) {
etk::String data;
etk::uri::readAll(_uri, data);
soundSetParse(data);
2015-07-01 21:03:26 +02:00
}
2017-08-28 00:08:27 +02:00
void audio::ess::musicPlay(const etk::String& _name) {
2018-06-19 22:13:48 +02:00
if (g_music == null) {
return;
}
g_music->play(_name);
2015-07-01 21:03:26 +02:00
}
void audio::ess::musicStop() {
2018-06-19 22:13:48 +02:00
if (g_music == null) {
return;
}
g_music->stop();
2015-07-01 21:03:26 +02:00
}
void audio::ess::musicSetVolume(float _dB) {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return;
}
g_audioManager->setVolume("MUSIC", _dB);
}
float audio::ess::musicGetVolume() {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return 0.0f;
}
return g_audioManager->getVolume("MUSIC");
}
void audio::ess::musicSetMute(bool _mute) {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return;
}
g_audioManager->setMute("MUSIC", _mute);
}
bool audio::ess::musicGetMute() {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return 0.0f;
}
return g_audioManager->getMute("MUSIC");
2015-07-01 21:03:26 +02:00
}
2017-08-28 00:08:27 +02:00
int32_t audio::ess::effectGetId(const etk::String& _name) {
2018-06-19 22:13:48 +02:00
if (g_effects == null) {
return -1;
}
return g_effects->getId(_name);
}
void audio::ess::effectPlay(int32_t _id, const vec3& _pos) {
2018-06-19 22:13:48 +02:00
if (g_effects == null) {
return;
}
g_effects->play(_id, _pos);
}
2017-08-28 00:08:27 +02:00
void audio::ess::effectPlay(const etk::String& _name, const vec3& _pos) {
2018-06-19 22:13:48 +02:00
if (g_effects == null) {
return;
}
g_effects->play(_name, _pos);
}
void audio::ess::effectSetVolume(float _dB) {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return;
}
g_audioManager->setVolume("EFFECT", _dB);
}
float audio::ess::effectGetVolume() {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return 0.0f;
}
return g_audioManager->getVolume("EFFECT");
2015-07-01 21:03:26 +02:00
}
void audio::ess::effectSetMute(bool _mute) {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return;
}
g_audioManager->setMute("EFFECT", _mute);
2015-07-01 21:03:26 +02:00
}
bool audio::ess::effectGetMute() {
2018-06-19 22:13:48 +02:00
if (g_audioManager == null) {
return 0.0f;
}
return g_audioManager->getMute("EFFECT");
2015-07-01 21:03:26 +02:00
}
2014-03-18 11:13:00 +01:00