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.
Music/Music.cpp@0:d7214673ab2d, 2019-07-22 (annotated)
- Committer:
- joshdavy
- Date:
- Mon Jul 22 14:45:38 2019 +0000
- Revision:
- 0:d7214673ab2d
a
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| joshdavy | 0:d7214673ab2d | 1 | |
| joshdavy | 0:d7214673ab2d | 2 | #include "Music.h" |
| joshdavy | 0:d7214673ab2d | 3 | AnalogOut speaker(DAC0_OUT); |
| joshdavy | 0:d7214673ab2d | 4 | /** |
| joshdavy | 0:d7214673ab2d | 5 | * @brief Constructor (no paramateters) |
| joshdavy | 0:d7214673ab2d | 6 | */ |
| joshdavy | 0:d7214673ab2d | 7 | Music::Music() |
| joshdavy | 0:d7214673ab2d | 8 | { |
| joshdavy | 0:d7214673ab2d | 9 | |
| joshdavy | 0:d7214673ab2d | 10 | } |
| joshdavy | 0:d7214673ab2d | 11 | /** |
| joshdavy | 0:d7214673ab2d | 12 | * @brief Deconstructor |
| joshdavy | 0:d7214673ab2d | 13 | */ |
| joshdavy | 0:d7214673ab2d | 14 | Music::~Music() |
| joshdavy | 0:d7214673ab2d | 15 | { |
| joshdavy | 0:d7214673ab2d | 16 | |
| joshdavy | 0:d7214673ab2d | 17 | |
| joshdavy | 0:d7214673ab2d | 18 | |
| joshdavy | 0:d7214673ab2d | 19 | } |
| joshdavy | 0:d7214673ab2d | 20 | |
| joshdavy | 0:d7214673ab2d | 21 | /** |
| joshdavy | 0:d7214673ab2d | 22 | * @brief Initialiser. Takes the sound data and initialises the buzzer |
| joshdavy | 0:d7214673ab2d | 23 | * @param const int* data @details The audio data. A array of the amplitude of |
| joshdavy | 0:d7214673ab2d | 24 | * the waveform over time |
| joshdavy | 0:d7214673ab2d | 25 | * @param length @details Length of above sound array |
| joshdavy | 0:d7214673ab2d | 26 | */ |
| joshdavy | 0:d7214673ab2d | 27 | void Music::init(const int* data,int length) |
| joshdavy | 0:d7214673ab2d | 28 | { |
| joshdavy | 0:d7214673ab2d | 29 | |
| joshdavy | 0:d7214673ab2d | 30 | _data = data; |
| joshdavy | 0:d7214673ab2d | 31 | _length = length; |
| joshdavy | 0:d7214673ab2d | 32 | // Has to << then 1/sample rate |
| joshdavy | 0:d7214673ab2d | 33 | // until music played stay silent |
| joshdavy | 0:d7214673ab2d | 34 | _index = 0; |
| joshdavy | 0:d7214673ab2d | 35 | |
| joshdavy | 0:d7214673ab2d | 36 | } |
| joshdavy | 0:d7214673ab2d | 37 | /** |
| joshdavy | 0:d7214673ab2d | 38 | * @brief Plays the next sound sample. Must be called at the sample rate |
| joshdavy | 0:d7214673ab2d | 39 | */ |
| joshdavy | 0:d7214673ab2d | 40 | void Music::play_next() |
| joshdavy | 0:d7214673ab2d | 41 | { |
| joshdavy | 0:d7214673ab2d | 42 | double duty_cycle; |
| joshdavy | 0:d7214673ab2d | 43 | duty_cycle = _data[_index]; |
| joshdavy | 0:d7214673ab2d | 44 | //printf("%i = %f\n",_index,duty_cycle); |
| joshdavy | 0:d7214673ab2d | 45 | |
| joshdavy | 0:d7214673ab2d | 46 | if (_index < _length) { |
| joshdavy | 0:d7214673ab2d | 47 | speaker = duty_cycle/255; |
| joshdavy | 0:d7214673ab2d | 48 | //printf("%f\n",duty_cycle/255); |
| joshdavy | 0:d7214673ab2d | 49 | |
| joshdavy | 0:d7214673ab2d | 50 | _index++; |
| joshdavy | 0:d7214673ab2d | 51 | } else { |
| joshdavy | 0:d7214673ab2d | 52 | _index = 0; |
| joshdavy | 0:d7214673ab2d | 53 | } |
| joshdavy | 0:d7214673ab2d | 54 | |
| joshdavy | 0:d7214673ab2d | 55 | } |
| joshdavy | 0:d7214673ab2d | 56 | |
| joshdavy | 0:d7214673ab2d | 57 |