public void ProcessSample(double[][] input, double[][] output, uint bufferSize) { double[] inBuffer = input[0]; double[] outBuffer = output[0]; double[] outBuffer2 = output[1]; // Double buffer for tonestack to work on double[] temp = new double[inBuffer.Length]; for (int i = 0; i < inBuffer.Length; i++) { temp[i] = inBuffer[i]; } Hp1.ProcessInPlace(temp); LpNoise.ProcessInPlace(temp); GainTF.ProcessInPlace(temp); PostGain.ProcessInPlace(temp); Utils.GainInPlace(temp, 83); Utils.SaturateInPlace(temp, 4); SaturateLP.ProcessInPlace(temp); ClipperHP.ProcessInPlace(temp); //if (ParameterInfo[P_LEDs].Value < 0.5) //{ Clipper.GetValuesInPlace(temp); /*} * else * { * ClipperLED.GetValuesInPlace(temp); * Utils.GainInPlace(temp, 0.6); * }*/ Tonestack.ProcessInPlace(temp); TF2.ProcessInPlace(temp); Contour.ProcessInPlace(temp); OutHP.ProcessInPlace(temp); OutLP.ProcessInPlace(temp); Utils.GainInPlace(temp, Utils.ExpResponse(ParameterInfo[P_VOLUME].Value)); // copy data to outBuffer for (int i = 0; i < input[0].Length; i++) { outBuffer[i] = temp[i]; outBuffer2[i] = temp[i]; } }
public void ProcessSample(double[][] input, double[][] output, uint bufferSize) { double[] signal = input[0]; HighpassInput.ProcessInPlace(signal); // Channel A if (ParameterInfo[P_CHANNEL].Value <= 0.5) { var inputGain = Utils.ExpResponse(ParameterInfo[P_INPUT_A].Value); Utils.GainInPlace(signal, inputGain); TF1A.ProcessInPlace(signal); Stage1A.ProcessInPlace(signal); TF2A.ProcessInPlace(signal); Stage2A.ProcessInPlace(signal); var volume = Utils.ExpResponse(ParameterInfo[P_VOL_A].Value) * 0.333; // match loudness of channels Utils.GainInPlace(signal, volume); PostVolumeHpA.ProcessInPlace(signal); TonestackA.ProcessInPlace(signal); TFPresA.ProcessInPlace(signal); } // Channel B if (ParameterInfo[P_CHANNEL].Value > 0.5f) { var inputGain = Utils.ExpResponse(ParameterInfo[P_INPUT_B].Value) * 5; Utils.GainInPlace(signal, inputGain); TF1B.ProcessInPlace(signal); TF1xB.ProcessInPlace(signal); Stage1B.ProcessInPlace(signal); TF2B.ProcessInPlace(signal); Stage2B.ProcessInPlace(signal); hipassZenerB.ProcessInPlace(signal); ClipperZenerB.ProcessInPlace(signal); if (ParameterInfo[P_BOOST_B].Value > 0.5f) { ClipperDiodeB.ProcessInPlace(signal); Utils.GainInPlace(signal, 6); } TFVolumeB.ProcessInPlace(signal); TonestackB.ProcessInPlace(signal); TFPresB.ProcessInPlace(signal); } LowpassOutput.ProcessInPlace(signal); // prevent horrible noise in case something goes wrong Utils.SaturateInPlace(signal, -4, 4); // copy data to outBuffer for (int i = 0; i < bufferSize; i++) { output[0][i] = signal[i]; output[1][i] = signal[i]; } }