| 30 | using namespace VectorMath; |
| 31 | |
| 32 | PeriodicWave::PeriodicWave(const float sampleRate, OscillatorType basicWaveform) |
| 33 | : m_centsPerRange(CentsPerRange) |
| 34 | , m_sampleRate(sampleRate) |
| 35 | { |
| 36 | float nyquist = 0.5f * m_sampleRate; |
| 37 | m_lowestFundamentalFrequency = nyquist / maxNumberOfPartials(); |
| 38 | m_rateScale = periodicWaveSize() / m_sampleRate; |
| 39 | |
| 40 | // Compute the number of ranges needed to cover the entire frequency range, assuming |
| 41 | // kNumberOfOctaveBands per octave. |
| 42 | m_numberOfRanges = static_cast<int>(0.5f + kNumberOfOctaveBands * log2f(static_cast<float>(periodicWaveSize()))); |
| 43 | |
| 44 | generateBasicWaveform(basicWaveform); |
| 45 | } |
| 46 | |
| 47 | PeriodicWave::PeriodicWave(const float sampleRate, OscillatorType basicWaveform, std::vector<float> & real, std::vector<float> & imag) |
| 48 | : m_centsPerRange(CentsPerRange) |