// // Created by versustune on 08.06.20. // #ifndef VENO_WAVETABLEGENERATOR_H #define VENO_WAVETABLEGENERATOR_H struct WaveTableObject { double m_topFreq; int m_waveTableLen; float* m_waveTable; }; struct WaveTableGroup { static constexpr int numWaveTableSlots = 40; WaveTableObject* m_WaveTables[numWaveTableSlots] = {}; int m_numWaveTables = 0; }; enum WaveForms { SAW = 0, SINE, SQUARE, TRIANGLE, wSaw, wSQUARE, //that stuff is to dirty xD, SYNTHONE, SYNTHTWO, VENOX }; class WaveTableGenerator { private: static constexpr int numWaveTableSlots = 40; WaveTableGroup* m_waveTables[numWaveTableSlots] = {}; public: static WaveTableGenerator& getInstance () { static WaveTableGenerator instance; return instance; } WaveTableGroup* getGroup (int id); void init (); void cleanTables (); protected: bool m_isInit = false; WaveTableGenerator () = default; ~WaveTableGenerator () = default; }; #endif //VENO_WAVETABLEGENERATOR_H