ese 519

Dependents:   PROJECT_3D_AUDIO

Committer:
niv17
Date:
Tue Apr 07 21:09:22 2015 +0000
Revision:
0:2076b4d80327
sonic initial april 7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
niv17 0:2076b4d80327 1 #include "AudioObj.h"
niv17 0:2076b4d80327 2 //#include <iostream>
niv17 0:2076b4d80327 3
niv17 0:2076b4d80327 4 Location AudioObj::getLocation () const {
niv17 0:2076b4d80327 5 return this->location;
niv17 0:2076b4d80327 6 }
niv17 0:2076b4d80327 7
niv17 0:2076b4d80327 8 void AudioObj::setLocation (const Location& loc) {
niv17 0:2076b4d80327 9 this->location = loc;
niv17 0:2076b4d80327 10 }
niv17 0:2076b4d80327 11
niv17 0:2076b4d80327 12 void AudioObj::setLocation (float x, float y, float z) {
niv17 0:2076b4d80327 13 this->location = Location(x,y,z);
niv17 0:2076b4d80327 14 }
niv17 0:2076b4d80327 15
niv17 0:2076b4d80327 16 Velocity AudioObj::getVelocity () const {
niv17 0:2076b4d80327 17 return this->velocity;
niv17 0:2076b4d80327 18 }
niv17 0:2076b4d80327 19
niv17 0:2076b4d80327 20 void AudioObj::setVelocity (const Velocity& vel) {
niv17 0:2076b4d80327 21 this->velocity = vel;
niv17 0:2076b4d80327 22 }
niv17 0:2076b4d80327 23
niv17 0:2076b4d80327 24 void AudioObj::setVelocity (float dx, float dy, float dz) {
niv17 0:2076b4d80327 25 this->velocity = Velocity(dx,dy,dz);
niv17 0:2076b4d80327 26 }
niv17 0:2076b4d80327 27
niv17 0:2076b4d80327 28 float AudioObj::getVolume() const {
niv17 0:2076b4d80327 29 return this->volume;
niv17 0:2076b4d80327 30 }
niv17 0:2076b4d80327 31
niv17 0:2076b4d80327 32 void AudioObj::setVolume(float vol) {
niv17 0:2076b4d80327 33 if (vol > 1 || vol < 0){
niv17 0:2076b4d80327 34 std::cout<<"Volume not in range (0-1)"<<endl;
niv17 0:2076b4d80327 35 //throw invalid_argument("Volume not in range (0-1)");
niv17 0:2076b4d80327 36 }
niv17 0:2076b4d80327 37 this->volume = vol;
niv17 0:2076b4d80327 38 }
niv17 0:2076b4d80327 39
niv17 0:2076b4d80327 40 void AudioObj::setRandomVolume() {
niv17 0:2076b4d80327 41 float randVol = (rand() % 100 + 1) / 100.0;
niv17 0:2076b4d80327 42 this->setVolume(randVol);
niv17 0:2076b4d80327 43 }
niv17 0:2076b4d80327 44
niv17 0:2076b4d80327 45 bool AudioObj::isActive() const {
niv17 0:2076b4d80327 46 return this->active;
niv17 0:2076b4d80327 47 }
niv17 0:2076b4d80327 48
niv17 0:2076b4d80327 49 void AudioObj::setActive(bool active){
niv17 0:2076b4d80327 50 this->active = active;
niv17 0:2076b4d80327 51 }
niv17 0:2076b4d80327 52
niv17 0:2076b4d80327 53 bool AudioObj::isGpsObject() const {
niv17 0:2076b4d80327 54 return this->gpsObject;
niv17 0:2076b4d80327 55 }
niv17 0:2076b4d80327 56
niv17 0:2076b4d80327 57 bool AudioObj::isBackgroundObject() const {
niv17 0:2076b4d80327 58 return this->backgroundObject;
niv17 0:2076b4d80327 59 }
niv17 0:2076b4d80327 60
niv17 0:2076b4d80327 61 void AudioObj::setRepeat(bool rep) {
niv17 0:2076b4d80327 62 this->repeat = rep;
niv17 0:2076b4d80327 63 }
niv17 0:2076b4d80327 64
niv17 0:2076b4d80327 65
niv17 0:2076b4d80327 66 bool AudioObj::fillAudioData (Complex* target, unsigned int length) {
niv17 0:2076b4d80327 67 if(circularBuffer.readSizeRemaining() < length) {
niv17 0:2076b4d80327 68 return false;
niv17 0:2076b4d80327 69 }
niv17 0:2076b4d80327 70 circularBuffer.read(target, length);
niv17 0:2076b4d80327 71 return true;
niv17 0:2076b4d80327 72 }
niv17 0:2076b4d80327 73
niv17 0:2076b4d80327 74 void AudioObj::loadCircularBuffer() {
niv17 0:2076b4d80327 75 unsigned int length = (unsigned int)circularBuffer.writeSizeRemaining();
niv17 0:2076b4d80327 76 if(length>16384) { // TODO: How was this number chosen???
niv17 0:2076b4d80327 77 //cout<<"In write circ Buff : "<<length<<endl;
niv17 0:2076b4d80327 78 if(!(wavObject.loadMoreData(length, repeat))) {
niv17 0:2076b4d80327 79 // end of file reached, no repeat
niv17 0:2076b4d80327 80 this->active = false;
niv17 0:2076b4d80327 81 this->isCompleted = true;
niv17 0:2076b4d80327 82 return;
niv17 0:2076b4d80327 83 }
niv17 0:2076b4d80327 84 circularBuffer.write(wavObject.complexTempData, length);
niv17 0:2076b4d80327 85 }
niv17 0:2076b4d80327 86 }
niv17 0:2076b4d80327 87
niv17 0:2076b4d80327 88 void AudioObj::playOnceFromBeginning() {
niv17 0:2076b4d80327 89 this->repeat = false;
niv17 0:2076b4d80327 90 this->restart();
niv17 0:2076b4d80327 91 }
niv17 0:2076b4d80327 92
niv17 0:2076b4d80327 93 void AudioObj::restart() {
niv17 0:2076b4d80327 94 this->circularBuffer.clear();
niv17 0:2076b4d80327 95 this->wavObject.seekToBeginning();
niv17 0:2076b4d80327 96 this->loadCircularBuffer();
niv17 0:2076b4d80327 97 this->active = true;
niv17 0:2076b4d80327 98 }
niv17 0:2076b4d80327 99
niv17 0:2076b4d80327 100 void AudioObj::loadFromBeginning() {
niv17 0:2076b4d80327 101 this->circularBuffer.clear();
niv17 0:2076b4d80327 102 this->wavObject.seekToBeginning();
niv17 0:2076b4d80327 103 this->loadCircularBuffer();
niv17 0:2076b4d80327 104 this->active = false;
niv17 0:2076b4d80327 105 }