Code: Select all
public short[] combProcess(short input[]){
short[] output = new short [input.length + delaySamples];
int outputSample = 0;
// For each sample in the output array
for (int n=0; n < output.length; n++){
// delayedPosition is only set once n is large enough
int delayedPosition = n-delaySamples;
if (delayedPosition < 0) {
delayedInput = 0;
delayedOutput = 0;
}
else {
delayedInput = input[delayedPosition];
delayedOutput = output[delayedPosition];
}
short inputSample = 0;
if (n<input.length){
inputSample = input[n];
}
if (filter.equals("Standard Feedback Filter")){
outputSample = (int)((inputSample) + (feedbackFactor*delayedOutput/100));
}
else{
outputSample = (int)((delayedInput) + (feedbackFactor*delayedOutput/100));
}
// Limits outputSample to max 16bit (short) value
int limit = outputSample;
if (limit > 32767){
limit = 32767;
}
else if (limit < -32767){
limit = -32767;
}
// Turns int back into short value in output array after manipulation and limiting
output[n] = (short)limit;
}// End of for loop
return output;
}
I don't really see how circular buffers are gonna help