Classes to produce a computed sound wave on the analog output.
Dependents: SoundWaveGeneratorTest SoundWaveGeneratorTest
snd_wave_generator/SoundWaveGenerator.h@1:6864fd480178, 2011-02-08 (annotated)
- 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?
User | Revision | Line number | New 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_ |