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.
Dependents: SoundWaveGeneratorTest SoundWaveGeneratorTest
Revision 1:6864fd480178, committed 2011-02-08
- Comitter:
- osmeest
- Date:
- Tue Feb 08 21:39:55 2011 +0000
- Parent:
- 0:ed89ef772e92
- Commit message:
- Fix the Sine & Triangle wave computations which were very bad !
Changed in this revision
| SineWave.cpp | Show annotated file Show diff for this revision Revisions of this file |
| TriangleWave.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/SineWave.cpp Mon Jan 24 22:44:39 2011 +0000
+++ b/SineWave.cpp Tue Feb 08 21:39:55 2011 +0000
@@ -9,9 +9,9 @@
this->buffer.resize(cycleLength);
std::size_t middle = cycleLength / 2;
- std::size_t quarter = middle / 4;
+ std::size_t quarter = middle / 2;
- float delta = 3.14 / (2.0 * float(sampleRate) / float(this->frequency));
+ float delta = 6.28 / (float(sampleRate) / float(this->frequency));
for(std::size_t i = 0; i < quarter; ++i) {
float dt = delta * i;
float dv = std::sin(dt) / 2.0;
@@ -23,9 +23,11 @@
this->buffer.write(cycleLength - i, negValue);
}
+ this->buffer.write(quarter, 1.0);
if (middle - quarter != quarter) {
- this->buffer.write(quarter, 1.0);
+ this->buffer.write(middle - quarter, 1.0);
}
+ this->buffer.write(cycleLength - quarter, 0.0);
if (middle + quarter != cycleLength - quarter) {
this->buffer.write(middle + quarter, 0.0);
}
--- a/TriangleWave.cpp Mon Jan 24 22:44:39 2011 +0000
+++ b/TriangleWave.cpp Tue Feb 08 21:39:55 2011 +0000
@@ -8,9 +8,9 @@
this->buffer.resize(cycleLength);
std::size_t middle = cycleLength / 2;
- std::size_t quarter = middle / 4;
+ std::size_t quarter = middle / 2;
- float delta = 0.5 / (float(sampleRate) / float(this->frequency));
+ float delta = 2.0 / (float(sampleRate) / float(this->frequency));
for(std::size_t i = 0; i < quarter; ++i) {
float dt = delta * i;
float posValue = 0.5 + dt;
@@ -21,9 +21,11 @@
this->buffer.write(cycleLength - i, negValue);
}
+ this->buffer.write(quarter, 1.0);
if (middle - quarter != quarter) {
- this->buffer.write(quarter, 1.0);
+ this->buffer.write(middle - quarter, 1.0);
}
+ this->buffer.write(cycleLength - quarter, 0.0);
if (middle + quarter != cycleLength - quarter) {
this->buffer.write(middle + quarter, 0.0);
}