diff options
| author | Chris Kiefer <chrisk13fer@gmail.com> | 2012-07-27 18:19:54 +0100 |
|---|---|---|
| committer | Chris Kiefer <chrisk13fer@gmail.com> | 2012-07-27 18:19:54 +0100 |
| commit | 7b93691086dfb1b84d41367134b625fb08b93522 (patch) | |
| tree | dcc9fd10540215da80152d9ba037212ac083cf60 /ofxMaxim | |
| parent | 51dcc8fe07ac57070754a631eb63788cac9dc438 (diff) | |
removed mydata from maxisample, and added operator=
Diffstat (limited to 'ofxMaxim')
| -rw-r--r-- | ofxMaxim/ofxMaxim/libs/maxiGrains.h | 2 | ||||
| -rw-r--r-- | ofxMaxim/ofxMaxim/libs/maximilian.cpp | 5 | ||||
| -rwxr-xr-x | ofxMaxim/ofxMaxim/libs/maximilian.h | 28 |
3 files changed, 25 insertions, 10 deletions
diff --git a/ofxMaxim/ofxMaxim/libs/maxiGrains.h b/ofxMaxim/ofxMaxim/libs/maxiGrains.h index d756110..5b62bc9 100644 --- a/ofxMaxim/ofxMaxim/libs/maxiGrains.h +++ b/ofxMaxim/ofxMaxim/libs/maxiGrains.h @@ -216,7 +216,7 @@ public: envValue = window[sampleIdx]; double remainder; long a,b; - short* buffer = (short *)sample->myData; + short* buffer = sample->temp; if (frequency >0.) { pos += inc; if (pos >= sample->length) pos -= sample->length; diff --git a/ofxMaxim/ofxMaxim/libs/maximilian.cpp b/ofxMaxim/ofxMaxim/libs/maximilian.cpp index b0f94a3..397a2ce 100644 --- a/ofxMaxim/ofxMaxim/libs/maximilian.cpp +++ b/ofxMaxim/ofxMaxim/libs/maximilian.cpp @@ -454,7 +454,7 @@ bool maxiSample::read() } // read the data chunk - myData = (char*) malloc(myDataSize * sizeof(char)); + char *myData = (char*) malloc(myDataSize * sizeof(char)); inFile.seekg(filePos, ios::beg); inFile.read(myData, myDataSize); length=myDataSize*(0.5/myChannels); @@ -888,7 +888,6 @@ void maxiSample::getLength() { } void maxiSample::setLength(unsigned long numSamples) { - cout << "Length: " << numSamples << endl; short *newData = (short*) malloc(sizeof(short) * numSamples); if (NULL!=temp) { unsigned long copyLength = min((unsigned long)length, numSamples); @@ -902,7 +901,7 @@ void maxiSample::setLength(unsigned long numSamples) { } void maxiSample::clear() { - memset(myData, 0, myDataSize); + memset(temp, 0, myDataSize); } void maxiSample::reset() { diff --git a/ofxMaxim/ofxMaxim/libs/maximilian.h b/ofxMaxim/ofxMaxim/libs/maximilian.h index de07d9a..980ec04 100755 --- a/ofxMaxim/ofxMaxim/libs/maximilian.h +++ b/ofxMaxim/ofxMaxim/libs/maximilian.h @@ -221,20 +221,35 @@ public: void setLength(unsigned long numSamples); - char* myData; +// char* myData; short* temp; // get/set for the Path property ~maxiSample() { - if (myData) free(myData); +// if (myData) free(myData); if (temp) free(temp); printf("freeing SampleData"); } - maxiSample():myData(NULL),temp(NULL),position(0), recordPosition(0), myChannels(1), mySampleRate(maxiSettings::sampleRate) {}; + maxiSample():temp(NULL),position(0), recordPosition(0), myChannels(1), mySampleRate(maxiSettings::sampleRate) {}; + + maxiSample& operator=(const maxiSample &source) { + if (this == &source) + return *this; + position=0; + recordPosition = 0; + myChannels = source.myChannels; + mySampleRate = maxiSettings::sampleRate; + free(temp); + myDataSize = source.myDataSize; + temp = (short*) malloc(myDataSize * sizeof(char)); + memcpy(temp, source.temp, myDataSize * sizeof(char)); + length = source.length; + return *this; + } bool load(string fileName, int channel=0); @@ -251,10 +266,10 @@ public: void loopRecord(double newSample, const bool recordEnabled, const double recordMix) { loopRecordLag.addSample(recordEnabled); if(recordEnabled) { - double currentSample = ((short*)myData)[(unsigned long)recordPosition] / 32767.0; + double currentSample = temp[(unsigned long)recordPosition] / 32767.0; newSample = (recordMix * currentSample) + ((1.0 - recordMix) * newSample); newSample *= loopRecordLag.value(); - ((short*)myData)[(unsigned long)recordPosition] = newSample * 32767; + temp[(unsigned long)recordPosition] = newSample * 32767; } ++recordPosition; if (recordPosition == length) @@ -309,7 +324,7 @@ public: myFile.write ((char*) &myBitsPerSample, 2); myFile.write ("data", 4); myFile.write ((char*) &myDataSize, 4); - myFile.write (myData, myDataSize); + myFile.write ((char*) temp, myDataSize); return true; } @@ -491,6 +506,7 @@ public: return env; } void reset() {env=0;} + inline double getEnv(){return env;} private: double attack, release, env; }; |
