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 #ifndef SOUND_WAVE_GENERATOR_H_
osmeest 0:ed89ef772e92 2 #define SOUND_WAVE_GENERATOR_H_
osmeest 0:ed89ef772e92 3
osmeest 0:ed89ef772e92 4 #include "snd_wave_generator/Wave.h"
osmeest 0:ed89ef772e92 5 #include "mbed.h"
osmeest 0:ed89ef772e92 6
osmeest 0:ed89ef772e92 7 namespace snd_wave_generator {
osmeest 0:ed89ef772e92 8
osmeest 0:ed89ef772e92 9 /**
osmeest 0:ed89ef772e92 10 * @brief A class to handle computed sound wave generation.
osmeest 0:ed89ef772e92 11 * The generator is bound to an AnalogOut pin (p18 on LPC1768).
osmeest 0:ed89ef772e92 12 * It has a fixed sample rate.
osmeest 0:ed89ef772e92 13 */
osmeest 0:ed89ef772e92 14 class SoundWaveGenerator {
osmeest 0:ed89ef772e92 15 public:
osmeest 0:ed89ef772e92 16 SoundWaveGenerator(std::size_t sampleRate, PinName pin = p18) :
osmeest 0:ed89ef772e92 17 sampleRate(sampleRate), wave(NULL), pos(0), output(pin), ticker()
osmeest 0:ed89ef772e92 18 { }
osmeest 0:ed89ef772e92 19
osmeest 0:ed89ef772e92 20 /**
osmeest 0:ed89ef772e92 21 * @brief Starts playing a given wave.
osmeest 0:ed89ef772e92 22 * The wave will be prepared for the generator's sample rate and then played back
osmeest 0:ed89ef772e92 23 * on the bound analog output.
osmeest 0:ed89ef772e92 24 */
osmeest 0:ed89ef772e92 25 void play(Wave *wave);
osmeest 0:ed89ef772e92 26
osmeest 0:ed89ef772e92 27 /**
osmeest 0:ed89ef772e92 28 * @brief Stops playing.
osmeest 0:ed89ef772e92 29 */
osmeest 0:ed89ef772e92 30 void stop();
osmeest 0:ed89ef772e92 31
osmeest 0:ed89ef772e92 32 private:
osmeest 0:ed89ef772e92 33 void tickerHandler();
osmeest 0:ed89ef772e92 34
osmeest 0:ed89ef772e92 35 std::size_t sampleRate;
osmeest 0:ed89ef772e92 36
osmeest 0:ed89ef772e92 37 Wave *wave;
osmeest 0:ed89ef772e92 38 std::size_t pos;
osmeest 0:ed89ef772e92 39 AnalogOut output;
osmeest 0:ed89ef772e92 40 Ticker ticker;
osmeest 0:ed89ef772e92 41 };
osmeest 0:ed89ef772e92 42
osmeest 0:ed89ef772e92 43 } // snd_wave_generator
osmeest 0:ed89ef772e92 44
osmeest 0:ed89ef772e92 45 #endif // SOUND_WAVE_GENERATOR_H_