package vafusion.inst; import jm.audio.io.*; import jm.audio.synth.*; import jm.music.data.Note; import jm.audio.AudioObject; public final class BowedPluckInst 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 filter cutoff frequency in hertz */ private int cutoff; /** A constructor to set an initial sampling rate */ public BowedPluckInst(int sampleRate){ this(sampleRate, 1, 8000); } /** A constructor to set an initial sampling rate and number of channels.*/ public BowedPluckInst(int sampleRate, int channels, int cutoff){ this.sampleRate = sampleRate; this.channels = channels; this.cutoff = cutoff; } /** Initialisation method used to build the objects that this instrument will use */ @Override public void createChain(){ Pluck plk = new Pluck(this,sampleRate, this.channels); Filter filt = new Filter(plk, this.cutoff, Filter.LOW_PASS); Envelope env = new Envelope(filt, new double[] {0.0, 0.0, 0.1, 0.5, 0.3, 1.0, 0.4, 0.5, 1.0, 0.0}); Volume vol = new Volume(env); SampleOut sout = new SampleOut(vol); } }