Program Listing for File ManualMix.cpp

Return to documentation for file (include/audioRender/ManualMix/ManualMix.cpp)

#include "ManualMix.hpp"

FXControlPannel::FXControlPannel(int sampleRate)
{
    compressorPannel.first = false;
    distortionPannel.first = false;
    echoPannel.first       = false;
    eqPannel.first         = false;
    filterPannel.first     = false;
    flangerPannel.first    = false;
    ocsFilterPannel.first  = false;
    pannerPannel.first     = false;
    phaserPannel.first     = false;
    robotPannel.first      = false;
    rollPannel.first       = false;
    trancePannel.first     = false;
    volPannel.first        = false;

    compressorPannel.second.init(sampleRate);
    distortionPannel.second.init(sampleRate);
    echoPannel.second.init(sampleRate);
    eqPannel.second.init(sampleRate);
    filterPannel.second.init(sampleRate);
    flangerPannel.second.init(sampleRate);
    ocsFilterPannel.second.init(sampleRate);
    pannerPannel.second.init(sampleRate);
    phaserPannel.second.init(sampleRate);
    robotPannel.second.init(sampleRate);
    rollPannel.second.init(sampleRate);
    trancePannel.second.init(sampleRate);
    volPannel.second.init(sampleRate);
}

void
FXControlPannel::FX_ON_OFF(FXList fx, bool onoff)
{
    switch (fx) {

    case FXList::COMPRESSOR:
        compressorPannel.first = onoff;
        break;

    case FXList::DISTORTION:
        distortionPannel.first = onoff;
        break;

    case FXList::ECHO:
        echoPannel.first = onoff;
        break;

    case FXList::EQ:
        eqPannel.first = onoff;
        break;

    case FXList::FILTER:
        filterPannel.first = onoff;
        break;

    case FXList::FLANGER:
        flangerPannel.first = onoff;
        break;

    case FXList::OCSFILTER:
        ocsFilterPannel.first = onoff;
        break;

    case FXList::PANNER:
        pannerPannel.first = onoff;
        break;

    case FXList::PHASER:
        phaserPannel.first = onoff;
        break;

    case FXList::ROBOT:
        robotPannel.first = onoff;
        break;

    case FXList::ROLL:
        rollPannel.first = onoff;
        break;

    case FXList::TRANCE:
        trancePannel.first = onoff;
        break;

    case FXList::VOL:
        volPannel.first = onoff;
        break;

    default:
        break;
    }
}

ARGSETTER
FXControlPannel::GetArgSetter(FXList fx)
{
    switch (fx) {
    case FXList::COMPRESSOR:
        return compressorPannel.second.makeArgSetter();
        break;

    case FXList::DISTORTION:
        return distortionPannel.second.makeArgSetter();
        break;

    case FXList::ECHO:
        return echoPannel.second.makeArgSetter();
        break;

    case FXList::EQ:
        return eqPannel.second.makeArgSetter();
        break;

    case FXList::FILTER:
        return filterPannel.second.makeArgSetter();
        break;

    case FXList::FLANGER:
        return flangerPannel.second.makeArgSetter();
        break;

    case FXList::OCSFILTER:
        return ocsFilterPannel.second.makeArgSetter();
        break;

    case FXList::PANNER:
        return pannerPannel.second.makeArgSetter();
        break;

    case FXList::PHASER:
        return phaserPannel.second.makeArgSetter();
        break;

    case FXList::ROBOT:
        return robotPannel.second.makeArgSetter();
        break;

    case FXList::ROLL:
        return rollPannel.second.makeArgSetter();
        break;

    case FXList::TRANCE:
        return trancePannel.second.makeArgSetter();
        break;

    case FXList::VOL:
        return volPannel.second.makeArgSetter();
        break;

    default:
        return ARGSETTER();
        break;
    }
}

void
FXControlPannel::addFX(float **pcm, int samples)
{
    checkAndUse(pcm, samples, compressorPannel);
    checkAndUse(pcm, samples, distortionPannel);
    checkAndUse(pcm, samples, echoPannel);
    checkAndUse(pcm, samples, eqPannel);
    checkAndUse(pcm, samples, filterPannel);
    checkAndUse(pcm, samples, flangerPannel);
    checkAndUse(pcm, samples, ocsFilterPannel);
    checkAndUse(pcm, samples, pannerPannel);
    checkAndUse(pcm, samples, phaserPannel);
    checkAndUse(pcm, samples, robotPannel);
    checkAndUse(pcm, samples, rollPannel);
    checkAndUse(pcm, samples, trancePannel);
    checkAndUse(pcm, samples, volPannel);
}

bool
FXControlPannel::checkSomethingOn()
{
    return compressorPannel.first || distortionPannel.first ||
           echoPannel.first || eqPannel.first || filterPannel.first ||
           flangerPannel.first || ocsFilterPannel.first || pannerPannel.first ||
           phaserPannel.first || robotPannel.first || rollPannel.first ||
           trancePannel.first || volPannel.first;
}