Rishi Bhargava / Mbed 2 deprecated 4180FinalLab

Dependencies:   4DGL-uLCD-SE PinDetect mbed SparkfunAnalogJoystick mbed-rtos

Fork of ECE2036Lab2StarterCode by Joseph Lind

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers soundBuilder.cpp Source File

soundBuilder.cpp

00001 #include "Speaker.h"
00002 #include "soundBuilder.h"
00003 
00004 Note::Note(){
00005     setFreq(0);
00006     setLength(0);
00007     setVolume(0);
00008 }
00009 
00010 Note::Note(float freq, float dur, float vol){
00011     setFreq(freq);
00012     setLength(dur);
00013     setVolume(vol);
00014 }
00015 
00016 void Note::setFreq(float nfreq){
00017     freq = nfreq;
00018 }
00019 
00020 void Note::setLength(float dur){
00021     length = dur;
00022 }
00023 
00024 void Note::setVolume(float vol){
00025     volume = vol;
00026 }
00027 
00028 float Note::getFreq(){
00029     return freq;
00030 }
00031 
00032 float Note::getLength(){
00033     return length;
00034 }
00035 
00036 float Note::getVolume(){
00037     return volume;
00038 }
00039 
00040 SoundBuilder::SoundBuilder(float freq[], float dur[], float vol[], int numNotes, Speaker *mainspeaker){
00041     for (int i = 0; i < numNotes; i++){
00042         song[i].setFreq(freq[i]);
00043         song[i].setLength(dur[i]);
00044         song[i].setVolume(vol[i]);
00045     }
00046     speaker = &(*mainspeaker);
00047 }
00048 
00049 void SoundBuilder::setNote(float freq, float dur, float vol, int noteNum){
00050     song[noteNum].setFreq(freq);
00051     song[noteNum].setLength(dur);
00052     song[noteNum].setVolume(vol);
00053 }
00054 
00055 void SoundBuilder::playNotes(int start, int stop){
00056     for (int i = start; i <= stop; i++)
00057         speaker->PlayNote(song[i].getFreq(), song[i].getLength(), song[i].getVolume());
00058 }
00059 
00060 void SoundBuilder::playSong(){
00061     playNotes(0, sizeof(song)/sizeof(*song)-1);
00062 }
00063 
00064 void SoundBuilder::clearSong(){
00065     for (int i = 0; i < sizeof(song)/sizeof(*song); i++){
00066         song[i].setFreq(0);
00067         song[i].setLength(0);
00068         song[i].setVolume(0);
00069     }
00070 }