diff options
Diffstat (limited to 'maximilian.cpp')
| -rw-r--r-- | maximilian.cpp | 21 |
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 +} |
