Program Listing for File MusicControlPannel.cpp
↰ Return to documentation for file (include/audioRender/ManualMix/MusicControlPannel.cpp
)
#include "MusicControlPannel.hpp"
// #undef HWY_TARGET_INCLUDE
// #define HWY_TARGET_INCLUDE "MusicControlPannel-inl.h"
// #include "hwy/foreach_target.h"
// #include <hwy/highway.h>
#include "Decoder.hpp"
#include "MusicControlPannel-inl.h"
#include "PDJE_LOG_SETTER.hpp"
MusicControlPannel::~MusicControlPannel()
{
}
bool
MusicControlPannel::LoadMusic(litedb &ROOTDB, const musdata &Mus)
{
if (!deck.try_emplace(Mus.title).second) {
critlog("failed to load music from MusicControlPannel LoadMusic. "
"ErrTitle: ");
critlog(Mus.title);
return false;
}
return deck[Mus.title].dec.init(ROOTDB, Mus.musicPath);
}
bool
MusicControlPannel::CueMusic(const UNSANITIZED &title,
const unsigned long long newPos)
{
auto safeTitle = PDJE_Name_Sanitizer::sanitizeFileName(title);
if (!safeTitle) {
critlog("failed to sanitize title from MusicControlPannel CueMusic. "
"ErrTitle: ");
critlog(title);
return false;
}
if (deck.find(safeTitle.value()) == deck.end()) {
warnlog("failed to find music from deck from MusicControlPannel "
"CueMusic. ErrTitle: ");
warnlog(title);
return false;
}
deck[safeTitle.value()].dec.changePos(newPos * CHANNEL);
return true;
}
bool
MusicControlPannel::SetMusic(const UNSANITIZED &title, const bool onOff)
{
auto safeTitle = PDJE_Name_Sanitizer::sanitizeFileName(title);
if (!safeTitle) {
critlog("failed to sanitize title from MusicControlPannel SetMusic. "
"ErrTitle: ");
critlog(title);
return false;
}
if (deck.find(safeTitle.value()) == deck.end()) {
warnlog("failed to find music from deck from MusicControlPannel "
"SetMusic. ErrTitle: ");
warnlog(title);
return false;
}
deck[safeTitle.value()].play = onOff;
return true;
}
LOADED_LIST
MusicControlPannel::GetLoadedMusicList()
{
LOADED_LIST list;
for (auto &i : deck) {
UNSANITIZED originTitle = PDJE_Name_Sanitizer::getFileName(i.first);
list.push_back(originTitle);
}
return std::move(list);
}
bool
MusicControlPannel::UnloadMusic(const UNSANITIZED &title)
{
auto safeTitle = PDJE_Name_Sanitizer::sanitizeFileName(title);
if (!safeTitle) {
critlog("failed to sanitize title from MusicControlPannel UnloadMusic. "
"ErrTitle: ");
critlog(title);
return false;
}
return deck.erase(safeTitle.value()) != 0;
}
HWY_EXPORT(GetPCMFramesSIMD);
bool
MusicControlPannel::GetPCMFrames(float *array, const unsigned long FrameSize)
{
return HWY_DYNAMIC_DISPATCH(GetPCMFramesSIMD)(
tempFrames, L, R, FaustStyle, deck, array, FrameSize);
}
FXControlPannel *
MusicControlPannel::getFXHandle(const UNSANITIZED &title)
{
auto safeTitle = PDJE_Name_Sanitizer::sanitizeFileName(title);
if (!safeTitle) {
critlog("failed to sanitize title from MusicControlPannel getFXHandle. "
"ErrTitle: ");
critlog(title);
return nullptr;
}
if (deck.find(safeTitle.value()) == deck.end()) {
warnlog("failed to find music from deck. Err from MusicControlPannel "
"getFXHandle. ErrTitle: ");
warnlog(title);
return nullptr;
} else {
return deck[safeTitle.value()].fxP;
}
}
bool
MusicControlPannel::ChangeBpm(const UNSANITIZED &title,
const double targetBpm,
const double originBpm)
{
auto safeTitle = PDJE_Name_Sanitizer::sanitizeFileName(title);
if (!safeTitle) {
critlog("failed to sanitize title from MusicControlPannel SetMusic. "
"ErrTitle: ");
critlog(title);
return false;
}
if (deck.find(safeTitle.value()) == deck.end()) {
warnlog("failed to find music from deck from MusicControlPannel "
"SetMusic. ErrTitle: ");
warnlog(title);
return false;
} else {
deck[safeTitle.value()].st->setTempo(targetBpm / originBpm);
return true;
}
}