package vafusion.inst;
import jm.audio.io.*;
import jm.audio.synth.*;
import jm.music.data.Note;
import jm.audio.AudioObject;
/** An all pass filter is not unlike a comb filter in that it delays
* the signal and recombines a scalled version. But it is more complex
* in having both a fee back and feed forward adding of the delayed signal
*/
public final class SimpleAllPassInst extends jm.audio.Instrument{
/** The points to use in the construction of Envelopes */
private EnvPoint[] pointArray = new EnvPoint[10];
/** The number of channels */
private int channels;
/** the sample rate passed to the instrument */
private int sampleRate;
/** the number of samples to delay the signal in the filter */
private int delay;
/** A constructor to set an initial sampling rate */
public SimpleAllPassInst(int sampleRate){
this(sampleRate, 1, 10);
}
/** A constructor to set an initial sampling rate and number of channels.*/
public SimpleAllPassInst(int sampleRate, int channels, int delay){
this.sampleRate = sampleRate;
this.channels = channels;
this.delay = delay;
}
/** Initialisation method used to build the objects that this instrument will use */
@Override
public void createChain(){
Oscillator osc = new Oscillator(this, Oscillator.TRIANGLE_WAVE, this.sampleRate, this.channels);
AllPass ap = new AllPass(osc, this.delay);
SampleOut sout = new SampleOut(ap);
}
}