Josh Davy / Mbed OS MUSIC_K64F
Committer:
joshdavy
Date:
Mon Jul 22 14:45:38 2019 +0000
Revision:
0:d7214673ab2d
a

Who changed what in which revision?

UserRevisionLine numberNew 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