Program Listing for File editorTest.cpp

Return to documentation for file (include\tests\editorTest.cpp)

#include "PDJE_interface.hpp"

#include <iostream>
#include <string>
// #include <NanoLog.hpp>

int
main()
{
    std::cout << "editor tester" << std::endl;

    auto engine = new PDJE(std::string("testRoot.db"));

    if (engine->InitEditor("test", "test", "testEditorProject")) {
        std::cout << "init ok" << std::endl;
        bool Flag_Already_has_music = false;
        engine->editor->getAll<EDIT_ARG_MUSIC>(
            [&Flag_Already_has_music](const EDIT_ARG_MUSIC &margs) {
                if (margs.musicName == "testMiku") {
                    Flag_Already_has_music = true;
                }
            });
        if (!Flag_Already_has_music) {
            if (engine->editor->ConfigNewMusic(
                    "testMiku",
                    "Camellia",
                    "../../DMCA_FREE_DEMO_MUSIC/miku_temp.wav")) {

                EDIT_ARG_MUSIC temp;
                temp.musicName    = "testMiku";
                temp.arg.beat     = 0;
                temp.arg.subBeat  = 0;
                temp.arg.separate = 4;
                temp.arg.bpm      = "138";
                engine->editor->AddLine<EDIT_ARG_MUSIC>(temp);

                EDIT_ARG_MIX bpmSet;
                bpmSet.beat     = 0;
                bpmSet.subBeat  = 0;
                bpmSet.type     = TypeEnum::BPM_CONTROL;
                bpmSet.details  = DetailEnum::TIME_STRETCH;
                bpmSet.separate = 4;
                bpmSet.ID       = 0;
                bpmSet.first    = "138";
                engine->editor->AddLine<EDIT_ARG_MIX>(bpmSet);

                EDIT_ARG_MIX loadMusic;
                loadMusic.beat    = 0;
                loadMusic.subBeat = 0;
                loadMusic.type    = TypeEnum::LOAD;

                loadMusic.separate = 4;
                loadMusic.first    = "testMiku";
                loadMusic.second   = "Camellia";
                loadMusic.third    = "138";
                loadMusic.ID       = 0;
                engine->editor->AddLine<EDIT_ARG_MIX>(loadMusic);

                EDIT_ARG_MIX changeBpm;
                changeBpm.beat     = 40;
                changeBpm.subBeat  = 0;
                changeBpm.type     = TypeEnum::BPM_CONTROL;
                changeBpm.details  = DetailEnum::TIME_STRETCH;
                changeBpm.separate = 4;
                changeBpm.ID       = 0;
                changeBpm.first    = "170";
                engine->editor->AddLine<EDIT_ARG_MIX>(changeBpm);

                EDIT_ARG_MIX unloadMusic;
                unloadMusic.beat     = 200;
                unloadMusic.subBeat  = 0;
                unloadMusic.type     = TypeEnum::UNLOAD;
                unloadMusic.ID       = 0;
                unloadMusic.separate = 4;
                engine->editor->AddLine<EDIT_ARG_MIX>(unloadMusic);

                std::cout << "config init ok" << std::endl;
            } else {
                std::cout << "config init failed" << std::endl;
            }
            if (engine->editor->ConfigNewMusic(
                    "ヒアソビ",
                    "Camellia",
                    "../../DMCA_FREE_DEMO_MUSIC/miku_temp.wav")) {
                EDIT_ARG_MUSIC temp;
                temp.musicName    = "ヒアソビ";
                temp.arg.beat     = 0;
                temp.arg.subBeat  = 0;
                temp.arg.separate = 4;
                temp.arg.bpm      = "134";
                engine->editor->AddLine<EDIT_ARG_MUSIC>(temp);
            }
        }
        if (engine->SearchMusic("testMiku", "Camellia").empty()) {
            bool renderRes =
                engine->editor->render("testTrack", *(engine->DBROOT));
            bool pushRes = engine->editor->pushToRootDB(
                *(engine->DBROOT), "testMiku", "Camellia");
            bool pushResSecond = engine->editor->pushToRootDB(
                *(engine->DBROOT), "ヒアソビ", "Camellia");
            bool trackPushRes =
                engine->editor->pushToRootDB(*(engine->DBROOT), "testTrack");
            if (pushRes)
                std::cout << "pushRes ok" << std::endl;
            if (renderRes)
                std::cout << "renderRes ok" << std::endl;
            if (trackPushRes)
                std::cout << "trackPushRes ok" << std::endl;
            if (pushResSecond)
                std::cout << "pushResSecond ok" << std::endl;
            if (pushRes && renderRes && trackPushRes && pushResSecond)
                std::cout << "push ok" << std::endl;
            else
                std::cout << "push failed" << std::endl;
        }
        trackdata td;
        td = engine->SearchTrack("testTrack").front();

        auto initres   = engine->InitPlayer(PLAY_MODE::HYBRID_RENDER, td, 48);
        auto activeres = engine->player->Activate();
        auto musPannel = engine->player->GetMusicControlPannel();
        auto muses     = engine->SearchMusic("ヒアソビ", "Camellia");
        musPannel->LoadMusic(*(engine->DBROOT), muses.front());

        getchar();
        musPannel->SetMusic("ヒアソビ", true);

        // musPannel->
        getchar();
        auto Fxhandle = musPannel->getFXHandle("ヒアソビ");
        Fxhandle->FX_ON_OFF(FXList::OCSFILTER, true);
        Fxhandle->FX_ON_OFF(FXList::EQ, true);
        auto ocshandle = Fxhandle->GetArgSetter(FXList::OCSFILTER);
        ocshandle["ocsFilterHighLowSW"](1);
        ocshandle["rangeFreqHalf"](2500);
        ocshandle["middleFreq"](5000);

        ocshandle["bps"](2.2333333);
        ocshandle["OCSFilterDryWet"](0.7);
        getchar();
        musPannel->ChangeBpm("ヒアソビ", 120, 60);
        auto eqhandle = Fxhandle->GetArgSetter(FXList::EQ);

        eqhandle["EQHigh"](-20);
        eqhandle["EQMid"](-20);
        eqhandle["EQLow"](20);

        getchar();
        auto deactres = engine->player->Deactivate();

        auto editor = engine->GetEditorObject();
        editor->GetLogWithJSONGraph<EDIT_ARG_MIX>();
        editor->GetLogWithJSONGraph<EDIT_ARG_KEY_VALUE>();
        editor->GetLogWithJSONGraph<EDIT_ARG_NOTE>();
        editor->GetLogWithJSONGraph<EDIT_ARG_MUSIC>("music name");


    } else {
        std::cout << "init failed " << std::endl;
        delete engine;
        return 1;
    }
    delete engine;
    // std::cout<<engine.InitEditor("test", "test", "./testEditorProject") <<
    // std::endl; engine.editor->ConfigNewMusic("testMiku", "Camellia", "")
    return 0;
}