Classes to produce a computed sound wave on the analog output.

Dependents:   SoundWaveGeneratorTest SoundWaveGeneratorTest

Committer:
osmeest
Date:
Tue Feb 08 21:39:55 2011 +0000
Revision:
1:6864fd480178
Parent:
0:ed89ef772e92
Fix the Sine & Triangle wave computations which were very bad !

Who changed what in which revision?

UserRevisionLine numberNew contents of line
osmeest 0:ed89ef772e92 1 #include "snd_wave_generator/SoundWaveGenerator.h"
osmeest 0:ed89ef772e92 2
osmeest 0:ed89ef772e92 3 namespace snd_wave_generator {
osmeest 0:ed89ef772e92 4
osmeest 0:ed89ef772e92 5 void SoundWaveGenerator::play(Wave *wave)
osmeest 0:ed89ef772e92 6 {
osmeest 0:ed89ef772e92 7 wave->prepare(this->sampleRate);
osmeest 0:ed89ef772e92 8
osmeest 0:ed89ef772e92 9 this->wave = wave;
osmeest 0:ed89ef772e92 10
osmeest 0:ed89ef772e92 11 this->pos = 0;
osmeest 0:ed89ef772e92 12 this->ticker.attach(this, &SoundWaveGenerator::tickerHandler, 1.0 / this->sampleRate);
osmeest 0:ed89ef772e92 13 }
osmeest 0:ed89ef772e92 14
osmeest 0:ed89ef772e92 15 void SoundWaveGenerator::stop()
osmeest 0:ed89ef772e92 16 {
osmeest 0:ed89ef772e92 17 this->ticker.detach();
osmeest 0:ed89ef772e92 18 this->output.write(0.0);
osmeest 0:ed89ef772e92 19 this->wave = NULL;
osmeest 0:ed89ef772e92 20 }
osmeest 0:ed89ef772e92 21
osmeest 0:ed89ef772e92 22 void SoundWaveGenerator::tickerHandler()
osmeest 0:ed89ef772e92 23 {
osmeest 0:ed89ef772e92 24 float v = this->wave ? this->wave->read(this->pos++) : 0.0;
osmeest 0:ed89ef772e92 25 this->output.write(v);
osmeest 0:ed89ef772e92 26 }
osmeest 0:ed89ef772e92 27
osmeest 0:ed89ef772e92 28 } // snd_wave_generator