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;

    }
}