aboutsummaryrefslogtreecommitdiffstats
path: root/ofxMaxim
diff options
context:
space:
mode:
Diffstat (limited to 'ofxMaxim')
-rw-r--r--ofxMaxim/ofxMaxim/libs/maxiGrains.h2
-rw-r--r--ofxMaxim/ofxMaxim/libs/maximilian.cpp5
-rwxr-xr-xofxMaxim/ofxMaxim/libs/maximilian.h28
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;
};