#include "delay.h"
#include "onepole.h"

struct pipe {
  int silencecounter;
  float gain;
  double airflow;
  float airflowtarget;
  float airflowspeed;
  struct delay delay;
  double fir_state[4];
  double fir_coeff[4];
  struct onepole reflectionfilter;
  struct onepole reedfilter;
  struct onepole airlossfilter1;
  struct onepole airlossfilter2;
};

void pipe_init(struct pipe *p, float samplerate, float frequency,
	       float reedfactor, float reflectionfactor, float airfactor);
void pipe_finalize(struct pipe* p);

void pipe_keydown(struct pipe* p);
void pipe_keyup(struct pipe* p);

int pipe_isactive(struct pipe* p);

float pipe_tick(struct pipe* p);
