aboutsummaryrefslogtreecommitdiffstats
path: root/maximilian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'maximilian.cpp')
-rw-r--r--maximilian.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/maximilian.cpp b/maximilian.cpp
index d731311..eca57a6 100644
--- a/maximilian.cpp
+++ b/maximilian.cpp
@@ -227,7 +227,7 @@ double maxiDelayline::dl(double input, int size, double feedback) {
if ( phase >=size ) {
phase = 0;
}
- output=memory[phase];
+ output=memory[phase];
memory[phase]=(memory[phase]*feedback)+(input*feedback)*0.5;
phase+=1;
return(output);
@@ -237,8 +237,8 @@ double maxiDelayline::dl(double input, int size, double feedback) {
double maxiDelayline::dl(double input, int size, double feedback, int position) {
if ( phase >=size ) phase = 0;
if ( position >=size ) position = 0;
- output=memory[position];
- memory[phase]=(memory[phase]*feedback)+(input*feedback)*chandiv;
+ output=memory[position];
+ memory[phase]=(memory[phase]*feedback)+(input*feedback)*chandiv;
phase+=1;
return(output);
@@ -444,10 +444,9 @@ double maxiSample::play() {
double maxiSample::playOnce() {
// long length=myDataSize*(0.5/myChannels);
- double remainder;
short* buffer = (short *)myData;
position=(position+1);
- remainder = position - (long) position;
+ double remainder = position - (long) position;
if ((long) position<length)
output = (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation
else
@@ -457,11 +456,11 @@ double maxiSample::playOnce() {
}
double maxiSample::playOnce(double speed) {
- double remainder;
//long a,b;
// long length=myDataSize*0.5;
short* buffer = (short *)myData;
position=position+((speed*chandiv*myChannels)/(maxiSettings::sampleRate/mySampleRate));
+ double remainder = position - (long) position;
if ((long) position<length)
output = (double) ((1-remainder) * buffer[1+ (long) position] + remainder * buffer[2+(long) position])/32767;//linear interpolation
else
@@ -657,7 +656,7 @@ double maxiSample::play4(double frequency, double start, double end) {
double maxiSample::bufferPlay(unsigned char &bufferin,long length) {
double remainder;
- short* buffer = (short *)bufferin;
+ short* buffer = (short *)&bufferin;
position=(position+1);
remainder = position - (long) position;
if ((long) position>length) position=0;
@@ -668,7 +667,7 @@ double maxiSample::bufferPlay(unsigned char &bufferin,long length) {
double maxiSample::bufferPlay(unsigned char &bufferin,double speed,long length) {
double remainder;
long a,b;
- short* buffer = (short *)bufferin;
+ short* buffer = (short *)&bufferin;
position=position+((speed*chandiv*myChannels)/(maxiSettings::sampleRate/mySampleRate));
if (speed >=0) {
@@ -715,7 +714,7 @@ double maxiSample::bufferPlay(unsigned char &bufferin,double frequency, double s
double remainder;
length=end;
long a,b;
- short* buffer = (short *)bufferin;
+ short* buffer = (short *)&bufferin;
if (frequency >0.) {
if (position<start) {
position=start;
@@ -771,7 +770,7 @@ double maxiSample::bufferPlay(unsigned char &bufferin,double frequency, double s
double maxiSample::bufferPlay4(unsigned char &bufferin,double frequency, double start, double end) {
double remainder;
double a,b,c,d,a1,a2,a3;
- short* buffer = (short*)bufferin;
+ short* buffer = (short*)&bufferin;
if (frequency >0.) {
if (position<start) {
position=start;
@@ -1023,4 +1022,4 @@ double maxiEnv::adsr(double input, double attack, double decay, double sustain,
double convert::mtof(int midinote) {
return mtofarray[midinote];
-} \ No newline at end of file
+}