#ifndef __DubSub_H #define __DubSub_H #include class DubSub : public LV2Plugin<10> { public: DubSub(double rate); void activate(); void run(uint32_t num_samples); static constexpr const char * URI = "https://www.airwindows.com/dubsub"; private: /* * These are the original DSP functions from the VST plugin. * They need to be called from the LV2 plugins `run` function. */ void processReplacing(float **in, float **out, VstInt32 samples); void processDoubleReplacing(double **in, double **out, VstInt32 samples); /* * Members needed by the processing functions. */ private: double iirDriveSampleAL; double iirDriveSampleBL; double iirDriveSampleCL; double iirDriveSampleDL; double iirDriveSampleEL; double iirDriveSampleFL; double iirDriveSampleAR; double iirDriveSampleBR; double iirDriveSampleCR; double iirDriveSampleDR; double iirDriveSampleER; double iirDriveSampleFR; bool flip; //drive things int bflip; bool WasNegativeL; bool SubOctaveL; bool WasNegativeR; bool SubOctaveR; double iirHeadBumpAL; double iirHeadBumpBL; double iirHeadBumpCL; double iirHeadBumpAR; double iirHeadBumpBR; double iirHeadBumpCR; double iirSubBumpAL; double iirSubBumpBL; double iirSubBumpCL; double iirSubBumpAR; double iirSubBumpBR; double iirSubBumpCR; double lastHeadBumpL; double lastSubBumpL; double lastHeadBumpR; double lastSubBumpR; double iirSampleAL; double iirSampleBL; double iirSampleCL; double iirSampleDL; double iirSampleEL; double iirSampleFL; double iirSampleGL; double iirSampleHL; double iirSampleIL; double iirSampleJL; double iirSampleKL; double iirSampleLL; double iirSampleML; double iirSampleNL; double iirSampleOL; double iirSamplePL; double iirSampleQL; double iirSampleRL; double iirSampleSL; double iirSampleTL; double iirSampleUL; double iirSampleVL; double iirSampleWL; double iirSampleXL; double iirSampleYL; double iirSampleZL; double iirSampleAR; double iirSampleBR; double iirSampleCR; double iirSampleDR; double iirSampleER; double iirSampleFR; double iirSampleGR; double iirSampleHR; double iirSampleIR; double iirSampleJR; double iirSampleKR; double iirSampleLR; double iirSampleMR; double iirSampleNR; double iirSampleOR; double iirSamplePR; double iirSampleQR; double iirSampleRR; double iirSampleSR; double iirSampleTR; double iirSampleUR; double iirSampleVR; double iirSampleWR; double iirSampleXR; double iirSampleYR; double iirSampleZR; double oscGateL; double oscGateR; long double fpNShapeL; long double fpNShapeR; //default stuff float A; float B; float C; float D; float E; float F; float G; float H; float I; float J; }; #endif