view projects/airharp/Waveguide.h @ 269:ac8eb07afcf5

Oxygen text added to each render.cpp file for the default projects. Text includes project explanation from Wiki, edited in places. Empty project added as a default project. Doxyfile updated. Each of the project locations added to INPUT configuration option. Consider just watching the whole project file so all new projects are automatically pulled through.
author Robert Jack <robert.h.jack@gmail.com>
date Tue, 17 May 2016 15:40:16 +0100
parents 40badaff5729
children
line wrap: on
line source
/*
 *
 * Simple 1-Dimensional Waveguide
 *
 * Christian Heinrichs 04/2015
 *
 */

#ifndef WAVEGUIDE_H_
#define WAVEGUIDE_H_

#include <cmath>

#ifndef WG_BUFFER_SIZE
#define WG_BUFFER_SIZE 4096
#endif

#ifndef FILTER_BUFFER_SIZE
#define FILTER_BUFFER_SIZE 4
#endif

#ifndef		M_PI
#define		M_PI		3.14159265358979323846264338
#endif

class Waveguide
{

public:

	Waveguide();
	void setup();
	float update(float in);
	void updateFilterCoeffs(float frequency);
	void setFrequency(float frequency);

private:

	double _dt;
	float _periodInMilliseconds;
	int _periodInSamples;

	float _buffer[WG_BUFFER_SIZE];
	int _readPtr;

	float _filterBuffer_x[FILTER_BUFFER_SIZE];
	float _filterBuffer_y[FILTER_BUFFER_SIZE];
	float _hipBuffer_x[FILTER_BUFFER_SIZE];
	float _hipBuffer_y[FILTER_BUFFER_SIZE];
	int _filterReadPtr;

	float b0_lp,b1_lp,b2_lp,a1_lp, a2_lp;
	float _lastY,_lastX;

};

#endif