import AudioDevice from './AudioDevice';

export default abstract class Effect<SettingsType> extends AudioDevice<SettingsType> {
  time: number = 0;
  protected outputSamples = new Float32Array(this.numberOfChannels);

  abstract updateOutputSamples(inputSamples: Float32Array): void;

  process(inputSamples: Float32Array) {
    this.updateOutputSamples(inputSamples);
    this.time ++;
    return this.outputSamples;
  }
}
