// // Created by versustune on 08.06.20. // #include "WaveTableGenerator.h" #include "../../Core/AudioConfig.h" #include "WavesInlcuder.h" void WaveTableGenerator::init () { //if the sampleRate changed... the WaveTables are not harmonic Save anymore and are needed to rebuild... pls stay save later! if (AudioConfig::getInstance ()->isNeedToReInit ()) { cleanTables (); AudioConfig::getInstance ()->setNeedToReInit (false); } if (m_isInit) { return; } m_waveTables[WaveForms::SAW] = new WaveTableGroup (); m_waveTables[WaveForms::SINE] = new WaveTableGroup (); m_waveTables[WaveForms::SQUARE] = new WaveTableGroup (); m_waveTables[WaveForms::TRIANGLE] = new WaveTableGroup (); m_waveTables[WaveForms::wSaw] = new WaveTableGroup (); m_waveTables[WaveForms::wSQUARE] = new WaveTableGroup (); m_waveTables[WaveForms::SYNTHONE] = new WaveTableGroup (); m_waveTables[WaveForms::SYNTHTWO] = new WaveTableGroup (); m_waveTables[WaveForms::VENOX] = new WaveTableGroup (); generateSaw (m_waveTables[WaveForms::SAW]); m_isInit = true; } WaveTableGroup* WaveTableGenerator::getGroup (int id) { if (!m_isInit) { init (); } if (id < 40) { return m_waveTables[id]; } return nullptr; } void WaveTableGenerator::cleanTables () { for (auto& m_waveTable : m_waveTables) { delete m_waveTable; } m_isInit = false; }