Luke Cartwright / Mbed 2 deprecated ELEC2645_Project_el18loc_nearlythere

Dependencies:   mbed

Committer:
lukeocarwright
Date:
Tue May 26 14:32:06 2020 +0000
Revision:
33:e7635c8a58a8
Parent:
31:cfdb014ff086
Final Project submission

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lukeocarwright 14:9cfe0041cc4e 1 #include "Sound.h"
lukeocarwright 14:9cfe0041cc4e 2
lukeocarwright 14:9cfe0041cc4e 3 //Global Variables
lukeocarwright 14:9cfe0041cc4e 4 volatile extern uint16_t sin_wavtable[1024];
lukeocarwright 14:9cfe0041cc4e 5 volatile extern uint16_t tri_wavtable[1024];
lukeocarwright 14:9cfe0041cc4e 6 volatile extern uint16_t pulse_wavtable[1024];
lukeocarwright 14:9cfe0041cc4e 7
lukeocarwright 33:e7635c8a58a8 8
lukeocarwright 14:9cfe0041cc4e 9 Sound::Sound()
lukeocarwright 14:9cfe0041cc4e 10 {
lukeocarwright 14:9cfe0041cc4e 11 }
lukeocarwright 33:e7635c8a58a8 12
lukeocarwright 14:9cfe0041cc4e 13 Sound::~Sound()
lukeocarwright 14:9cfe0041cc4e 14 {
lukeocarwright 14:9cfe0041cc4e 15 }
lukeocarwright 14:9cfe0041cc4e 16
lukeocarwright 14:9cfe0041cc4e 17 //PUBLIC:-----------------------------------------------------------------------
lukeocarwright 14:9cfe0041cc4e 18
lukeocarwright 33:e7635c8a58a8 19
lukeocarwright 14:9cfe0041cc4e 20 uint16_t Sound::sound_main(bool initial, int waveform, int frequency)
lukeocarwright 14:9cfe0041cc4e 21 {
lukeocarwright 31:cfdb014ff086 22 if (initial==true) { //initiialises
lukeocarwright 14:9cfe0041cc4e 23 i=0;
lukeocarwright 14:9cfe0041cc4e 24 return(i);
lukeocarwright 14:9cfe0041cc4e 25 }
lukeocarwright 31:cfdb014ff086 26 i=wavetable_itt(i,frequency);//itterates i value
lukeocarwright 15:1c67f064278e 27
lukeocarwright 31:cfdb014ff086 28 if (waveform==1) { //sin values
lukeocarwright 14:9cfe0041cc4e 29 #ifdef SLOW_TIME
lukeocarwright 18:204cd747b54a 30 printf("SIN_wavtable[%u]\n",i);
lukeocarwright 14:9cfe0041cc4e 31 #endif
lukeocarwright 14:9cfe0041cc4e 32 return (sin_wavtable[i]);
lukeocarwright 14:9cfe0041cc4e 33 }
lukeocarwright 31:cfdb014ff086 34 if (waveform==2) { //tri
lukeocarwright 15:1c67f064278e 35 #ifdef SLOW_TIME
lukeocarwright 18:204cd747b54a 36 printf("TRI_wavtable[%u]\n",i);
lukeocarwright 15:1c67f064278e 37 #endif
lukeocarwright 15:1c67f064278e 38 return (tri_wavtable[i]);
lukeocarwright 15:1c67f064278e 39 }
lukeocarwright 31:cfdb014ff086 40 if (waveform==3) { //pulse
lukeocarwright 15:1c67f064278e 41 #ifdef SLOW_TIME
lukeocarwright 18:204cd747b54a 42 printf("SQR_wavtable[%u]\n",i);
lukeocarwright 15:1c67f064278e 43 #endif
lukeocarwright 15:1c67f064278e 44 return (pulse_wavtable[i]);
lukeocarwright 15:1c67f064278e 45 }
lukeocarwright 14:9cfe0041cc4e 46 return(0);
lukeocarwright 14:9cfe0041cc4e 47 }
lukeocarwright 14:9cfe0041cc4e 48
lukeocarwright 14:9cfe0041cc4e 49 //PRIVATE:----------------------------------------------------------------------
lukeocarwright 33:e7635c8a58a8 50
lukeocarwright 14:9cfe0041cc4e 51 uint16_t Sound::wavetable_itt(uint16_t i, int frequency)
lukeocarwright 14:9cfe0041cc4e 52 {
lukeocarwright 24:c3bb1b0b2207 53 i_d = i + ((1024*frequency)/ 10000); //i+((samples*f)*Ts)
lukeocarwright 30:08cc4ec58d07 54 i=ceil(i_d); //rounds to int
lukeocarwright 30:08cc4ec58d07 55
lukeocarwright 30:08cc4ec58d07 56 if (i>=1024) { //Sorts Overlap
lukeocarwright 14:9cfe0041cc4e 57 i=i-1024;
lukeocarwright 14:9cfe0041cc4e 58 }
lukeocarwright 14:9cfe0041cc4e 59 return(i);
lukeocarwright 14:9cfe0041cc4e 60 }