Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
SineWave.cpp
00001 #include "snd_wave_generator/SineWave.h" 00002 #include <cmath> 00003 00004 namespace snd_wave_generator { 00005 00006 void SineWave::prepare(std::size_t sampleRate) 00007 { 00008 std::size_t cycleLength = sampleRate / this->frequency; 00009 this->buffer.resize(cycleLength); 00010 00011 std::size_t middle = cycleLength / 2; 00012 std::size_t quarter = middle / 2; 00013 00014 float delta = 6.28 / (float(sampleRate) / float(this->frequency)); 00015 for(std::size_t i = 0; i < quarter; ++i) { 00016 float dt = delta * i; 00017 float dv = std::sin(dt) / 2.0; 00018 float posValue = 0.5 + dv; 00019 float negValue = 0.5 - dv; 00020 this->buffer.write(i, posValue); 00021 this->buffer.write(middle - i, posValue); 00022 this->buffer.write(middle + i, negValue); 00023 this->buffer.write(cycleLength - i, negValue); 00024 } 00025 00026 this->buffer.write(quarter, 1.0); 00027 if (middle - quarter != quarter) { 00028 this->buffer.write(middle - quarter, 1.0); 00029 } 00030 this->buffer.write(cycleLength - quarter, 0.0); 00031 if (middle + quarter != cycleLength - quarter) { 00032 this->buffer.write(middle + quarter, 0.0); 00033 } 00034 } 00035 00036 } // snd_wave_generator
Generated on Wed Jul 13 2022 16:23:43 by
1.7.2