Program Listing for File manualAudioTest.cpp

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

#include "ManualMix.hpp"

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

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;
}