public double tick(double input) { lastOutput_ = delayLine_.tick(input + loopFilter_.tick(delayLine_.lastOut())); lastOutput_ -= combDelay_.tick(lastOutput_); // comb filtering on output lastOutput_ *= 0.5; return lastOutput_; }
public void setFrequency(double frequency) { frequency_ = frequency; // Delay = length - filter delay. double delay = (StaticVariables.SampleRate / frequency) - loopFilter_.phaseDelay(frequency); delayLine_.setDelay(delay); this.setLoopGain(loopGain_); // Set the pluck position, which puts zeroes at position * length. combDelay_.setDelay(0.5 * pluckPosition_ * delay); }
public void setLowestFrequency(double frequency) { long nDelays = (long) (StaticVariables.SampleRate / frequency); delayLine_.setMaximumDelay(nDelays + 1); combDelay_.setMaximumDelay(nDelays + 1); }