diff examples/10-Instruments/airharp/String.cpp @ 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 8f8809c77dda
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/airharp/String.cpp	Mon Jun 20 16:20:38 2016 +0100
@@ -0,0 +1,91 @@
+/*
+ *
+ * 1-D string consisting of two waveguides and junction
+ *
+ * Christian Heinrichs 04/2015
+ *
+ */
+
+#include "String.h"
+#include "Junction.h"
+#include "Waveguide.h"
+
+#include "../include/Utilities.h"
+#include <rtdk.h>
+#include <cmath>
+#include <stdio.h>
+#include <cstdlib>
+
+String::String(){
+
+	wg_l = Waveguide();
+	wg_r = Waveguide();
+	junction = Junction();
+
+	junction.setPluckPosition(0.5);
+
+	_previous_l = 0;
+	_previous_r = 0;
+
+}
+
+float String::update(float in)	{
+
+	// 1. send excitation signal and previous waveguide outputs into junction
+
+	junction.update(in,_previous_l,_previous_r);
+
+	// 2. save new waveguide outputs for next iteration
+
+	_previous_l = wg_l.update(junction.getOutput(0));
+	_previous_r = wg_r.update(junction.getOutput(1));
+
+	// 3. use right waveguide as output
+
+	//rt_printf("BANANA %f ",_readPtr);
+	//rt_printf("%f\n",_previous_r);
+
+	return _previous_r;
+}
+
+float String::getPlectrumDisplacement()	{
+
+	return junction.getExcitationDisplacement();
+
+}
+
+void String::setPluckPosition(float pluckPos){
+
+	junction.setPluckPosition(pluckPos);
+
+}
+
+void String::setGlobalPosition(float pos)	{
+
+	_globalPosition = pos;
+
+}
+
+float String::getGlobalPosition()	{
+
+	return _globalPosition;
+
+}
+
+void String::setMidinote(float midinote)	{
+
+	float frequency = 440.0f*(float)powf(2,(midinote-57)/12.0f);
+
+	junction.setFrequency(frequency);
+	wg_l.setFrequency(frequency);
+	wg_r.setFrequency(frequency);
+
+}
+
+void String::setFrequency(float frequency)	{
+
+	junction.setFrequency(frequency);
+	wg_l.setFrequency(frequency);
+	wg_r.setFrequency(frequency);
+
+}