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

Dependents:   SoundWaveGeneratorTest SoundWaveGeneratorTest

Committer:
osmeest
Date:
Mon Jan 24 22:44:39 2011 +0000
Revision:
0:ed89ef772e92
Initial release.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
osmeest 0:ed89ef772e92 1 #ifndef WAVE_BUFFER_H_
osmeest 0:ed89ef772e92 2 #define WAVE_BUFFER_H_
osmeest 0:ed89ef772e92 3
osmeest 0:ed89ef772e92 4 #include <cstddef>
osmeest 0:ed89ef772e92 5
osmeest 0:ed89ef772e92 6 namespace snd_wave_generator {
osmeest 0:ed89ef772e92 7
osmeest 0:ed89ef772e92 8 /**
osmeest 0:ed89ef772e92 9 * @brief A class used to hold buffered sound wave data.
osmeest 0:ed89ef772e92 10 * It's basically a vector of floats which can be read in a cyclic way.
osmeest 0:ed89ef772e92 11 */
osmeest 0:ed89ef772e92 12 class WaveBuffer {
osmeest 0:ed89ef772e92 13 public:
osmeest 0:ed89ef772e92 14 WaveBuffer() : size_(0), capacity_(0), data_(NULL) { }
osmeest 0:ed89ef772e92 15 ~WaveBuffer() { delete[] this->data_; }
osmeest 0:ed89ef772e92 16
osmeest 0:ed89ef772e92 17 void resize(std::size_t size);
osmeest 0:ed89ef772e92 18
osmeest 0:ed89ef772e92 19 void write(std::size_t pos, float v) {
osmeest 0:ed89ef772e92 20 if (pos < this->size_) {
osmeest 0:ed89ef772e92 21 this->data_[pos] = v;
osmeest 0:ed89ef772e92 22 }
osmeest 0:ed89ef772e92 23 }
osmeest 0:ed89ef772e92 24
osmeest 0:ed89ef772e92 25 float read(std::size_t pos) const {
osmeest 0:ed89ef772e92 26 return this->data_[pos % this->size_];
osmeest 0:ed89ef772e92 27 }
osmeest 0:ed89ef772e92 28
osmeest 0:ed89ef772e92 29 private:
osmeest 0:ed89ef772e92 30 std::size_t size_;
osmeest 0:ed89ef772e92 31 std::size_t capacity_;
osmeest 0:ed89ef772e92 32 float *data_;
osmeest 0:ed89ef772e92 33 };
osmeest 0:ed89ef772e92 34
osmeest 0:ed89ef772e92 35 } // snd_wave_generator
osmeest 0:ed89ef772e92 36
osmeest 0:ed89ef772e92 37 #endif // WAVE_BUFFER_H_