diff examples/10-Instruments/d-box/FeedbackOscillator.h @ 464:8fcfbfb32aa0 prerelease

Examples reorder with subdirectories. Added header to each project. Moved Doxygen to bottom of render.cpp.
author Robert Jack <robert.h.jack@gmail.com>
date Mon, 20 Jun 2016 16:20:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/d-box/FeedbackOscillator.h	Mon Jun 20 16:20:38 2016 +0100
@@ -0,0 +1,41 @@
+/*
+ * FeedbackOscillator.h
+ *
+ *  Created on: June 8, 2014
+ *      Author: Andrew McPherson
+ */
+
+#ifndef FEEDBACKOSCILLATOR_H
+#define FEEDBACKOSCILLATOR_H
+
+class FeedbackOscillator
+{
+public:
+	FeedbackOscillator();
+	~FeedbackOscillator();
+
+	// Initialise the settings for the feedback oscillator
+	void initialise(int maxTableSize, float hpfCutoffFrequency, float matrixSampleRate);
+
+	// Process one sample and store the output value
+	// Returns the length of table to interpolate; or 0 if nothing to process further
+	int process(float input, float *output);
+
+	float *wavetable() { return wavetableRead; }
+
+private:
+	float coeffs[3];			// Coefficients of first-order high-pass filter
+	float lastInput;			// last input sample for HPF
+	float lastOutput;			// last output sample of HPF
+	bool triggered;				// whether we are currently saving samples
+	bool canTrigger;			// whether we are able to begin saving samples
+	int wavetableMaxLength;		// how long the stored wavetable can be
+	int sampleCount;			// how many samples have elapsed
+	int lastTriggerCount;		// sample count when we last triggered
+
+	float *wavetable1, *wavetable2;			// Two wavetables where we record samples
+	float *wavetableRead, *wavetableWrite;	// Pointers to the above wavetables
+	int wavetableWritePointer;				// Where we are currently writing
+};
+
+#endif