Program Listing for File manualAudioTest.cpp

Return to documentation for file (include/tests/manualAudioTest.cpp)

#include "ManualMix.hpp"

#include "miniaudio.h"
#include "EFFECTS.hpp"

auto idx = 0;
FXControlPannel* fxcp;
std::vector<float> Lvec(480);
std::vector<float> Rvec(480);

void
idle_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount) {
    // auto dvec = reinterpret_cast<std::vector<float>*>(pDevice->pUserData);
    auto dP = static_cast<ma_decoder*>(pDevice->pUserData);// dvec->data();
    ma_decoder_read_pcm_frames(dP, pOutput, frameCount, NULL);
    float* lp = Lvec.data();
    float* rp = Rvec.data();
    float* op = (float*)pOutput;
    for(int i=0; i<frameCount; ++i){
        *(lp++) = *(op++);
        *(rp++) = *(op++);
    }
    float *Fpcm[2] = {Lvec.data(), Rvec.data()};
    fxcp->addFX(Fpcm, frameCount);
    lp = Lvec.data();
    rp = Rvec.data();
    op = (float*)pOutput;

    for(int i=0; i<frameCount; ++i){
        *(op++) = *(lp++);
        *(op++) = *(rp++);
    }
}

#include <iostream>
int main(int argc,  char *argv[])
{
    for(int i=0;  i < 10; i+=3){
        std::cout << i  <<std::endl;
    }

    return 0;

    ma_device dev;

    fxcp = new FXControlPannel(48000);

    ma_decoder_config decconf = ma_decoder_config_init(ma_format_f32, 2, 48000);
    ma_decoder dec;
    ma_decoder_init_file("../../../../music/Over Time [bv7xMhvXJjc].wav", &decconf, &dec);
    ma_device_config devconf = ma_device_config_init(ma_device_type_playback);
    devconf.playback.format = ma_format_f32;
    devconf.playback.channels = 2;
    devconf.sampleRate = 48000;
    devconf.periodSizeInFrames = 480;
    devconf.dataCallback = idle_callback;
    devconf.performanceProfile = ma_performance_profile_low_latency;
    devconf.pUserData = (&dec);

    ma_device_init(NULL, &devconf, &dev);
    ma_device_start(&dev);

    getchar();

    fxcp->FX_ON_OFF(FXList::EQ, true);
    auto args = fxcp->GetArgSetter(FXList::EQ);
    for(auto i : args){
        std::cout << i.first <<std::endl;
    }

    args["EQPower"](-25);
    args["EQSelect"](2);
    getchar();
    for(int i=0; i<10;++i){
        args["EQPower"](25);
        getchar();
        args["EQPower"](0);
        getchar();
        args["EQPower"](-25);
        getchar();
    }


    getchar();
    delete fxcp;
    return 0;
}