ese 519
AudioObj.cpp@0:2076b4d80327, 2015-04-07 (annotated)
- Committer:
- niv17
- Date:
- Tue Apr 07 21:09:22 2015 +0000
- Revision:
- 0:2076b4d80327
sonic initial april 7
Who changed what in which revision?
User | Revision | Line number | New 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 | } |