shithub: neindaw

ref: 57f49b5ea9632be13d0b695a2932fc7e6ed7ac0b
dir: /dsp/piano.c/

View raw version
/* ------------------------------------------------------------
author: "Romain Michon (rmichon@ccrma.stanford.edu)"
copyright: "Romain Michon"
name: "Piano"
version: "1.0"
Code generated with Faust 2.28.0 (https://faust.grame.fr)
Compilation options: -lang c -scal -ftz 0
------------------------------------------------------------ */

#ifndef  __Piano_H__
#define  __Piano_H__

/* Piano Plan 9 C architecture for Faust. */

#include <u.h>
#include <libc.h>
#include "uiglue.h"

#define max(x,y) (((x) > (y)) ? (x) : (y))
#define min(x,y) (((x) < (y)) ? (x) : (y))

#ifndef FAUSTFLOAT
#define FAUSTFLOAT float
#endif 

#ifdef __cplusplus
extern "C" {
#endif

/* link with : "" */
#include <math.h>
#include <piano.h>
#include <stdlib.h>

static float Piano_faustpower2_f(float value) {
	return (value * value);
}

#ifndef FAUSTCLASS 
#define FAUSTCLASS Piano
#endif
#ifdef __APPLE__ 
#define exp10f __exp10f
#define exp10 __exp10
#endif

typedef struct {
	FAUSTFLOAT fHslider0;
	FAUSTFLOAT fHslider1;
	float fRec10[2];
	int fSampleRate;
	float fConst0;
	float fConst1;
	FAUSTFLOAT fHslider2;
	float fConst2;
	FAUSTFLOAT fHslider3;
	float fConst3;
	FAUSTFLOAT fHslider4;
	FAUSTFLOAT fButton0;
	float fRec19[2];
	FAUSTFLOAT fHslider5;
	int iRec25[2];
	float fRec27[2];
	float fConst4;
	FAUSTFLOAT fHslider6;
	float fRec26[2];
	float fConst5;
	float fConst6;
	float fConst7;
	FAUSTFLOAT fHslider7;
	float fConst8;
	float fRec28[2];
	float fRec24[2];
	float fRec23[2];
	float fRec22[2];
	float fRec21[2];
	float fRec20[2];
	float fVec0[2];
	float fRec18[2];
	float fRec17[2];
	int IOTA;
	float fRec16[8192];
	float fVec1[2];
	float fRec31[2];
	float fRec30[2];
	float fRec29[8192];
	float fVec2[2];
	float fRec15[2];
	float fRec12[2];
	float fRec13[2];
	float fConst9;
	float fRec11[3];
	float fConst10;
	float fVec3[2];
	float fVec4[2];
	float fRec41[2];
	float fRec40[2];
	float fRec39[2];
	float fRec38[2];
	float fRec37[2];
	float fRec36[3];
	float fRec35[3];
	float fRec34[3];
	float fRec33[3];
	float fRec32[2];
	float fVec5[8192];
	float fVec6[4096];
	int iConst11;
	float fConst12;
	float fConst13;
	float fConst14;
	float fConst15;
	FAUSTFLOAT fHslider8;
	float fConst16;
	float fConst17;
	float fConst18;
	float fConst19;
	float fRec43[2];
	float fRec42[2];
	float fVec7[16384];
	float fConst20;
	int iConst21;
	float fVec8[4096];
	int iConst22;
	float fRec8[2];
	float fConst23;
	float fConst24;
	float fConst25;
	float fConst26;
	float fRec47[2];
	float fRec46[2];
	float fVec9[16384];
	float fConst27;
	int iConst28;
	float fVec10[4096];
	int iConst29;
	float fRec44[2];
	float fConst30;
	FAUSTFLOAT fHslider9;
	float fVec11[4096];
	float fConst31;
	float fConst32;
	float fConst33;
	float fConst34;
	float fRec51[2];
	float fRec50[2];
	float fVec12[16384];
	float fConst35;
	int iConst36;
	float fVec13[4096];
	int iConst37;
	float fRec48[2];
	float fConst38;
	float fConst39;
	float fConst40;
	float fConst41;
	float fRec55[2];
	float fRec54[2];
	float fVec14[16384];
	float fConst42;
	int iConst43;
	float fVec15[2048];
	int iConst44;
	float fRec52[2];
	float fConst45;
	float fConst46;
	float fConst47;
	float fConst48;
	float fRec59[2];
	float fRec58[2];
	float fVec16[32768];
	float fConst49;
	int iConst50;
	float fVec17[4096];
	int iConst51;
	float fRec56[2];
	float fConst52;
	float fConst53;
	float fConst54;
	float fConst55;
	float fRec63[2];
	float fRec62[2];
	float fVec18[32768];
	float fConst56;
	int iConst57;
	float fVec19[4096];
	int iConst58;
	float fRec60[2];
	float fConst59;
	float fConst60;
	float fConst61;
	float fConst62;
	float fRec67[2];
	float fRec66[2];
	float fVec20[16384];
	float fConst63;
	int iConst64;
	float fVec21[2048];
	int iConst65;
	float fRec64[2];
	float fConst66;
	float fConst67;
	float fConst68;
	float fConst69;
	float fRec71[2];
	float fRec70[2];
	float fVec22[32768];
	float fConst70;
	int iConst71;
	float fVec23[2048];
	int iConst72;
	float fRec68[2];
	float fRec0[3];
	float fRec1[3];
	float fRec2[3];
	float fRec3[3];
	float fRec4[3];
	float fRec5[3];
	float fRec6[3];
	float fRec7[3];
} Piano;

Piano* newPiano(void) { 
	Piano* dsp = (Piano*)calloc(1, sizeof(Piano));
	return dsp;
}

void deletePiano(Piano* dsp) {
	USED(dsp); 
	free(dsp);
}

void metadataPiano(MetaGlue* m) { 
	m->declare(m->metaInterface, "author", "Romain Michon (rmichon@ccrma.stanford.edu)");
	m->declare(m->metaInterface, "basics.lib/name", "Faust Basic Element Library");
	m->declare(m->metaInterface, "basics.lib/version", "0.1");
	m->declare(m->metaInterface, "copyright", "Romain Michon");
	m->declare(m->metaInterface, "delays.lib/name", "Faust Delay Library");
	m->declare(m->metaInterface, "delays.lib/version", "0.1");
	m->declare(m->metaInterface, "description", "A commuted WaveGuide piano.");
	m->declare(m->metaInterface, "filename", "piano.dsp");
	m->declare(m->metaInterface, "filters.lib/allpass_comb:author", "Julius O. Smith III");
	m->declare(m->metaInterface, "filters.lib/allpass_comb:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
	m->declare(m->metaInterface, "filters.lib/allpass_comb:license", "MIT-style STK-4.3 license");
	m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
	m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1:author", "Julius O. Smith III");
	m->declare(m->metaInterface, "filters.lib/lowpass:author", "Julius O. Smith III");
	m->declare(m->metaInterface, "filters.lib/lowpass:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
	m->declare(m->metaInterface, "filters.lib/lowpass:license", "MIT-style STK-4.3 license");
	m->declare(m->metaInterface, "filters.lib/name", "Faust Filters Library");
	m->declare(m->metaInterface, "filters.lib/tf1:author", "Julius O. Smith III");
	m->declare(m->metaInterface, "filters.lib/tf1:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
	m->declare(m->metaInterface, "filters.lib/tf1:license", "MIT-style STK-4.3 license");
	m->declare(m->metaInterface, "filters.lib/tf1s:author", "Julius O. Smith III");
	m->declare(m->metaInterface, "filters.lib/tf1s:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
	m->declare(m->metaInterface, "filters.lib/tf1s:license", "MIT-style STK-4.3 license");
	m->declare(m->metaInterface, "group", "Synthesis");
	m->declare(m->metaInterface, "instruments.lib/author", "Romain Michon (rmichon@ccrma.stanford.edu)");
	m->declare(m->metaInterface, "instruments.lib/copyright", "Romain Michon");
	m->declare(m->metaInterface, "instruments.lib/licence", "STK-4.3");
	m->declare(m->metaInterface, "instruments.lib/name", "Faust-STK Tools Library");
	m->declare(m->metaInterface, "instruments.lib/version", "1.0");
	m->declare(m->metaInterface, "licence", "STK-4.3");
	m->declare(m->metaInterface, "maths.lib/author", "GRAME");
	m->declare(m->metaInterface, "maths.lib/copyright", "GRAME");
	m->declare(m->metaInterface, "maths.lib/license", "LGPL with exception");
	m->declare(m->metaInterface, "maths.lib/name", "Faust Math Library");
	m->declare(m->metaInterface, "maths.lib/version", "2.3");
	m->declare(m->metaInterface, "name", "Piano");
	m->declare(m->metaInterface, "noises.lib/name", "Faust Noise Generator Library");
	m->declare(m->metaInterface, "noises.lib/version", "0.0");
	m->declare(m->metaInterface, "platform.lib/name", "Generic Platform Library");
	m->declare(m->metaInterface, "platform.lib/version", "0.1");
	m->declare(m->metaInterface, "reverbs.lib/name", "Faust Reverb Library");
	m->declare(m->metaInterface, "reverbs.lib/version", "0.0");
	m->declare(m->metaInterface, "routes.lib/name", "Faust Signal Routing Library");
	m->declare(m->metaInterface, "routes.lib/version", "0.2");
	m->declare(m->metaInterface, "signals.lib/name", "Faust Signal Routing Library");
	m->declare(m->metaInterface, "signals.lib/version", "0.0");
	m->declare(m->metaInterface, "version", "1.0");
}

int getSampleRatePiano(Piano* dsp) {
	USED(dsp);
	return dsp->fSampleRate;
}

int getNumInputsPiano(Piano* dsp) {
	USED(dsp);
	return 0;
}
int getNumOutputsPiano(Piano* dsp) {
	USED(dsp);
	return 2;
}
int getInputRatePiano(Piano* dsp, int channel) {
	USED(dsp);
	int rate;
	switch ((channel)) {
		default: {
			rate = -1;
			break;
		}
	}
	return rate;
}
int getOutputRatePiano(Piano* dsp, int channel) {
	USED(dsp);
	int rate;
	switch ((channel)) {
		case 0: {
			rate = 1;
			break;
		}
		case 1: {
			rate = 1;
			break;
		}
		default: {
			rate = -1;
			break;
		}
	}
	return rate;
}

void classInitPiano(int sample_rate) {
	USED(sample_rate);
}

void instanceResetUserInterfacePiano(Piano* dsp) {
	USED(dsp);
	dsp->fHslider0 = (FAUSTFLOAT)0.59999999999999998f;
	dsp->fHslider1 = (FAUSTFLOAT)0.13700000000000001f;
	dsp->fHslider2 = (FAUSTFLOAT)440.0f;
	dsp->fHslider3 = (FAUSTFLOAT)0.28000000000000003f;
	dsp->fHslider4 = (FAUSTFLOAT)0.10000000000000001f;
	dsp->fButton0 = (FAUSTFLOAT)0.0f;
	dsp->fHslider5 = (FAUSTFLOAT)0.0f;
	dsp->fHslider6 = (FAUSTFLOAT)1.0f;
	dsp->fHslider7 = (FAUSTFLOAT)0.10000000000000001f;
	dsp->fHslider8 = (FAUSTFLOAT)0.71999999999999997f;
	dsp->fHslider9 = (FAUSTFLOAT)0.5f;
}

void instanceClearPiano(Piano* dsp) {
	USED(dsp);
	/* C99 loop */
	{
		int l0;
		for (l0 = 0; (l0 < 2); l0 = (l0 + 1)) {
			dsp->fRec10[l0] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l1;
		for (l1 = 0; (l1 < 2); l1 = (l1 + 1)) {
			dsp->fRec19[l1] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l2;
		for (l2 = 0; (l2 < 2); l2 = (l2 + 1)) {
			dsp->iRec25[l2] = 0;
		}
	}
	/* C99 loop */
	{
		int l3;
		for (l3 = 0; (l3 < 2); l3 = (l3 + 1)) {
			dsp->fRec27[l3] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l4;
		for (l4 = 0; (l4 < 2); l4 = (l4 + 1)) {
			dsp->fRec26[l4] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l5;
		for (l5 = 0; (l5 < 2); l5 = (l5 + 1)) {
			dsp->fRec28[l5] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l6;
		for (l6 = 0; (l6 < 2); l6 = (l6 + 1)) {
			dsp->fRec24[l6] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l7;
		for (l7 = 0; (l7 < 2); l7 = (l7 + 1)) {
			dsp->fRec23[l7] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l8;
		for (l8 = 0; (l8 < 2); l8 = (l8 + 1)) {
			dsp->fRec22[l8] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l9;
		for (l9 = 0; (l9 < 2); l9 = (l9 + 1)) {
			dsp->fRec21[l9] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l10;
		for (l10 = 0; (l10 < 2); l10 = (l10 + 1)) {
			dsp->fRec20[l10] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l11;
		for (l11 = 0; (l11 < 2); l11 = (l11 + 1)) {
			dsp->fVec0[l11] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l12;
		for (l12 = 0; (l12 < 2); l12 = (l12 + 1)) {
			dsp->fRec18[l12] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l13;
		for (l13 = 0; (l13 < 2); l13 = (l13 + 1)) {
			dsp->fRec17[l13] = 0.0f;
		}
	}
	dsp->IOTA = 0;
	/* C99 loop */
	{
		int l14;
		for (l14 = 0; (l14 < 8192); l14 = (l14 + 1)) {
			dsp->fRec16[l14] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l15;
		for (l15 = 0; (l15 < 2); l15 = (l15 + 1)) {
			dsp->fVec1[l15] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l16;
		for (l16 = 0; (l16 < 2); l16 = (l16 + 1)) {
			dsp->fRec31[l16] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l17;
		for (l17 = 0; (l17 < 2); l17 = (l17 + 1)) {
			dsp->fRec30[l17] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l18;
		for (l18 = 0; (l18 < 8192); l18 = (l18 + 1)) {
			dsp->fRec29[l18] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l19;
		for (l19 = 0; (l19 < 2); l19 = (l19 + 1)) {
			dsp->fVec2[l19] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l20;
		for (l20 = 0; (l20 < 2); l20 = (l20 + 1)) {
			dsp->fRec15[l20] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l21;
		for (l21 = 0; (l21 < 2); l21 = (l21 + 1)) {
			dsp->fRec12[l21] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l22;
		for (l22 = 0; (l22 < 2); l22 = (l22 + 1)) {
			dsp->fRec13[l22] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l23;
		for (l23 = 0; (l23 < 3); l23 = (l23 + 1)) {
			dsp->fRec11[l23] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l24;
		for (l24 = 0; (l24 < 2); l24 = (l24 + 1)) {
			dsp->fVec3[l24] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l25;
		for (l25 = 0; (l25 < 2); l25 = (l25 + 1)) {
			dsp->fVec4[l25] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l26;
		for (l26 = 0; (l26 < 2); l26 = (l26 + 1)) {
			dsp->fRec41[l26] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l27;
		for (l27 = 0; (l27 < 2); l27 = (l27 + 1)) {
			dsp->fRec40[l27] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l28;
		for (l28 = 0; (l28 < 2); l28 = (l28 + 1)) {
			dsp->fRec39[l28] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l29;
		for (l29 = 0; (l29 < 2); l29 = (l29 + 1)) {
			dsp->fRec38[l29] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l30;
		for (l30 = 0; (l30 < 2); l30 = (l30 + 1)) {
			dsp->fRec37[l30] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l31;
		for (l31 = 0; (l31 < 3); l31 = (l31 + 1)) {
			dsp->fRec36[l31] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l32;
		for (l32 = 0; (l32 < 3); l32 = (l32 + 1)) {
			dsp->fRec35[l32] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l33;
		for (l33 = 0; (l33 < 3); l33 = (l33 + 1)) {
			dsp->fRec34[l33] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l34;
		for (l34 = 0; (l34 < 3); l34 = (l34 + 1)) {
			dsp->fRec33[l34] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l35;
		for (l35 = 0; (l35 < 2); l35 = (l35 + 1)) {
			dsp->fRec32[l35] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l36;
		for (l36 = 0; (l36 < 8192); l36 = (l36 + 1)) {
			dsp->fVec5[l36] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l37;
		for (l37 = 0; (l37 < 4096); l37 = (l37 + 1)) {
			dsp->fVec6[l37] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l38;
		for (l38 = 0; (l38 < 2); l38 = (l38 + 1)) {
			dsp->fRec43[l38] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l39;
		for (l39 = 0; (l39 < 2); l39 = (l39 + 1)) {
			dsp->fRec42[l39] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l40;
		for (l40 = 0; (l40 < 16384); l40 = (l40 + 1)) {
			dsp->fVec7[l40] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l41;
		for (l41 = 0; (l41 < 4096); l41 = (l41 + 1)) {
			dsp->fVec8[l41] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l42;
		for (l42 = 0; (l42 < 2); l42 = (l42 + 1)) {
			dsp->fRec8[l42] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l43;
		for (l43 = 0; (l43 < 2); l43 = (l43 + 1)) {
			dsp->fRec47[l43] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l44;
		for (l44 = 0; (l44 < 2); l44 = (l44 + 1)) {
			dsp->fRec46[l44] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l45;
		for (l45 = 0; (l45 < 16384); l45 = (l45 + 1)) {
			dsp->fVec9[l45] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l46;
		for (l46 = 0; (l46 < 4096); l46 = (l46 + 1)) {
			dsp->fVec10[l46] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l47;
		for (l47 = 0; (l47 < 2); l47 = (l47 + 1)) {
			dsp->fRec44[l47] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l48;
		for (l48 = 0; (l48 < 4096); l48 = (l48 + 1)) {
			dsp->fVec11[l48] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l49;
		for (l49 = 0; (l49 < 2); l49 = (l49 + 1)) {
			dsp->fRec51[l49] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l50;
		for (l50 = 0; (l50 < 2); l50 = (l50 + 1)) {
			dsp->fRec50[l50] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l51;
		for (l51 = 0; (l51 < 16384); l51 = (l51 + 1)) {
			dsp->fVec12[l51] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l52;
		for (l52 = 0; (l52 < 4096); l52 = (l52 + 1)) {
			dsp->fVec13[l52] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l53;
		for (l53 = 0; (l53 < 2); l53 = (l53 + 1)) {
			dsp->fRec48[l53] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l54;
		for (l54 = 0; (l54 < 2); l54 = (l54 + 1)) {
			dsp->fRec55[l54] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l55;
		for (l55 = 0; (l55 < 2); l55 = (l55 + 1)) {
			dsp->fRec54[l55] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l56;
		for (l56 = 0; (l56 < 16384); l56 = (l56 + 1)) {
			dsp->fVec14[l56] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l57;
		for (l57 = 0; (l57 < 2048); l57 = (l57 + 1)) {
			dsp->fVec15[l57] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l58;
		for (l58 = 0; (l58 < 2); l58 = (l58 + 1)) {
			dsp->fRec52[l58] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l59;
		for (l59 = 0; (l59 < 2); l59 = (l59 + 1)) {
			dsp->fRec59[l59] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l60;
		for (l60 = 0; (l60 < 2); l60 = (l60 + 1)) {
			dsp->fRec58[l60] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l61;
		for (l61 = 0; (l61 < 32768); l61 = (l61 + 1)) {
			dsp->fVec16[l61] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l62;
		for (l62 = 0; (l62 < 4096); l62 = (l62 + 1)) {
			dsp->fVec17[l62] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l63;
		for (l63 = 0; (l63 < 2); l63 = (l63 + 1)) {
			dsp->fRec56[l63] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l64;
		for (l64 = 0; (l64 < 2); l64 = (l64 + 1)) {
			dsp->fRec63[l64] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l65;
		for (l65 = 0; (l65 < 2); l65 = (l65 + 1)) {
			dsp->fRec62[l65] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l66;
		for (l66 = 0; (l66 < 32768); l66 = (l66 + 1)) {
			dsp->fVec18[l66] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l67;
		for (l67 = 0; (l67 < 4096); l67 = (l67 + 1)) {
			dsp->fVec19[l67] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l68;
		for (l68 = 0; (l68 < 2); l68 = (l68 + 1)) {
			dsp->fRec60[l68] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l69;
		for (l69 = 0; (l69 < 2); l69 = (l69 + 1)) {
			dsp->fRec67[l69] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l70;
		for (l70 = 0; (l70 < 2); l70 = (l70 + 1)) {
			dsp->fRec66[l70] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l71;
		for (l71 = 0; (l71 < 16384); l71 = (l71 + 1)) {
			dsp->fVec20[l71] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l72;
		for (l72 = 0; (l72 < 2048); l72 = (l72 + 1)) {
			dsp->fVec21[l72] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l73;
		for (l73 = 0; (l73 < 2); l73 = (l73 + 1)) {
			dsp->fRec64[l73] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l74;
		for (l74 = 0; (l74 < 2); l74 = (l74 + 1)) {
			dsp->fRec71[l74] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l75;
		for (l75 = 0; (l75 < 2); l75 = (l75 + 1)) {
			dsp->fRec70[l75] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l76;
		for (l76 = 0; (l76 < 32768); l76 = (l76 + 1)) {
			dsp->fVec22[l76] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l77;
		for (l77 = 0; (l77 < 2048); l77 = (l77 + 1)) {
			dsp->fVec23[l77] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l78;
		for (l78 = 0; (l78 < 2); l78 = (l78 + 1)) {
			dsp->fRec68[l78] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l79;
		for (l79 = 0; (l79 < 3); l79 = (l79 + 1)) {
			dsp->fRec0[l79] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l80;
		for (l80 = 0; (l80 < 3); l80 = (l80 + 1)) {
			dsp->fRec1[l80] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l81;
		for (l81 = 0; (l81 < 3); l81 = (l81 + 1)) {
			dsp->fRec2[l81] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l82;
		for (l82 = 0; (l82 < 3); l82 = (l82 + 1)) {
			dsp->fRec3[l82] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l83;
		for (l83 = 0; (l83 < 3); l83 = (l83 + 1)) {
			dsp->fRec4[l83] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l84;
		for (l84 = 0; (l84 < 3); l84 = (l84 + 1)) {
			dsp->fRec5[l84] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l85;
		for (l85 = 0; (l85 < 3); l85 = (l85 + 1)) {
			dsp->fRec6[l85] = 0.0f;
		}
	}
	/* C99 loop */
	{
		int l86;
		for (l86 = 0; (l86 < 3); l86 = (l86 + 1)) {
			dsp->fRec7[l86] = 0.0f;
		}
	}
}

void instanceConstantsPiano(Piano* dsp, int sample_rate) {
	USED(sample_rate);
	USED(dsp);
	dsp->fSampleRate = sample_rate;
	dsp->fConst0 = fminf(192000.0f, fmaxf(1.0f, (float)dsp->fSampleRate));
	dsp->fConst1 = (1.0f / Piano_faustpower2_f(dsp->fConst0));
	dsp->fConst2 = (0.159154937f * dsp->fConst0);
	dsp->fConst3 = (6.28318548f / dsp->fConst0);
	dsp->fConst4 = (7.0f / dsp->fConst0);
	dsp->fConst5 = expf((0.0f - (5.0f / dsp->fConst0)));
	dsp->fConst6 = expf((0.0f - (0.5f / dsp->fConst0)));
	dsp->fConst7 = (0.100000001f * dsp->fConst0);
	dsp->fConst8 = (10.0f / dsp->fConst0);
	dsp->fConst9 = (2.0f / dsp->fConst0);
	dsp->fConst10 = (0.0500000007f / dsp->fConst0);
	dsp->iConst11 = (int)fminf(8192.0f, fmaxf(0.0f, (0.0199999996f * dsp->fConst0)));
	dsp->fConst12 = cosf((37699.1133f / dsp->fConst0));
	dsp->fConst13 = floorf(((0.174713001f * dsp->fConst0) + 0.5f));
	dsp->fConst14 = ((0.0f - (6.90775537f * dsp->fConst13)) / dsp->fConst0);
	dsp->fConst15 = (0.5f * dsp->fConst14);
	dsp->fConst16 = (0.333333343f * dsp->fConst14);
	dsp->fConst17 = (1.0f / tanf((628.318542f / dsp->fConst0)));
	dsp->fConst18 = (1.0f / (dsp->fConst17 + 1.0f));
	dsp->fConst19 = (1.0f - dsp->fConst17);
	dsp->fConst20 = floorf(((0.0229039993f * dsp->fConst0) + 0.5f));
	dsp->iConst21 = (int)fminf(8192.0f, fmaxf(0.0f, (dsp->fConst13 - dsp->fConst20)));
	dsp->iConst22 = (int)fminf(2048.0f, fmaxf(0.0f, (dsp->fConst20 + -1.0f)));
	dsp->fConst23 = floorf(((0.127837002f * dsp->fConst0) + 0.5f));
	dsp->fConst24 = ((0.0f - (6.90775537f * dsp->fConst23)) / dsp->fConst0);
	dsp->fConst25 = (0.5f * dsp->fConst24);
	dsp->fConst26 = (0.333333343f * dsp->fConst24);
	dsp->fConst27 = floorf(((0.0316039994f * dsp->fConst0) + 0.5f));
	dsp->iConst28 = (int)fminf(8192.0f, fmaxf(0.0f, (dsp->fConst23 - dsp->fConst27)));
	dsp->iConst29 = (int)fminf(2048.0f, fmaxf(0.0f, (dsp->fConst27 + -1.0f)));
	dsp->fConst30 = (0.5f * dsp->fConst0);
	dsp->fConst31 = floorf(((0.192303002f * dsp->fConst0) + 0.5f));
	dsp->fConst32 = ((0.0f - (6.90775537f * dsp->fConst31)) / dsp->fConst0);
	dsp->fConst33 = (0.5f * dsp->fConst32);
	dsp->fConst34 = (0.333333343f * dsp->fConst32);
	dsp->fConst35 = floorf(((0.0292910002f * dsp->fConst0) + 0.5f));
	dsp->iConst36 = (int)fminf(8192.0f, fmaxf(0.0f, (dsp->fConst31 - dsp->fConst35)));
	dsp->iConst37 = (int)fminf(2048.0f, fmaxf(0.0f, (dsp->fConst35 + -1.0f)));
	dsp->fConst38 = floorf(((0.125f * dsp->fConst0) + 0.5f));
	dsp->fConst39 = ((0.0f - (6.90775537f * dsp->fConst38)) / dsp->fConst0);
	dsp->fConst40 = (0.5f * dsp->fConst39);
	dsp->fConst41 = (0.333333343f * dsp->fConst39);
	dsp->fConst42 = floorf(((0.0134579996f * dsp->fConst0) + 0.5f));
	dsp->iConst43 = (int)fminf(8192.0f, fmaxf(0.0f, (dsp->fConst38 - dsp->fConst42)));
	dsp->iConst44 = (int)fminf(1024.0f, fmaxf(0.0f, (dsp->fConst42 + -1.0f)));
	dsp->fConst45 = floorf(((0.210389003f * dsp->fConst0) + 0.5f));
	dsp->fConst46 = ((0.0f - (6.90775537f * dsp->fConst45)) / dsp->fConst0);
	dsp->fConst47 = (0.5f * dsp->fConst46);
	dsp->fConst48 = (0.333333343f * dsp->fConst46);
	dsp->fConst49 = floorf(((0.0244210009f * dsp->fConst0) + 0.5f));
	dsp->iConst50 = (int)fminf(16384.0f, fmaxf(0.0f, (dsp->fConst45 - dsp->fConst49)));
	dsp->iConst51 = (int)fminf(2048.0f, fmaxf(0.0f, (dsp->fConst49 + -1.0f)));
	dsp->fConst52 = floorf(((0.256891012f * dsp->fConst0) + 0.5f));
	dsp->fConst53 = ((0.0f - (6.90775537f * dsp->fConst52)) / dsp->fConst0);
	dsp->fConst54 = (0.5f * dsp->fConst53);
	dsp->fConst55 = (0.333333343f * dsp->fConst53);
	dsp->fConst56 = floorf(((0.0273330007f * dsp->fConst0) + 0.5f));
	dsp->iConst57 = (int)fminf(16384.0f, fmaxf(0.0f, (dsp->fConst52 - dsp->fConst56)));
	dsp->iConst58 = (int)fminf(2048.0f, fmaxf(0.0f, (dsp->fConst56 + -1.0f)));
	dsp->fConst59 = floorf(((0.153128996f * dsp->fConst0) + 0.5f));
	dsp->fConst60 = ((0.0f - (6.90775537f * dsp->fConst59)) / dsp->fConst0);
	dsp->fConst61 = (0.5f * dsp->fConst60);
	dsp->fConst62 = (0.333333343f * dsp->fConst60);
	dsp->fConst63 = floorf(((0.0203460008f * dsp->fConst0) + 0.5f));
	dsp->iConst64 = (int)fminf(8192.0f, fmaxf(0.0f, (dsp->fConst59 - dsp->fConst63)));
	dsp->iConst65 = (int)fminf(1024.0f, fmaxf(0.0f, (dsp->fConst63 + -1.0f)));
	dsp->fConst66 = floorf(((0.219990999f * dsp->fConst0) + 0.5f));
	dsp->fConst67 = ((0.0f - (6.90775537f * dsp->fConst66)) / dsp->fConst0);
	dsp->fConst68 = (0.5f * dsp->fConst67);
	dsp->fConst69 = (0.333333343f * dsp->fConst67);
	dsp->fConst70 = floorf(((0.0191229992f * dsp->fConst0) + 0.5f));
	dsp->iConst71 = (int)fminf(16384.0f, fmaxf(0.0f, (dsp->fConst66 - dsp->fConst70)));
	dsp->iConst72 = (int)fminf(1024.0f, fmaxf(0.0f, (dsp->fConst70 + -1.0f)));
}

void instanceInitPiano(Piano* dsp, int sample_rate) {
	USED(sample_rate);
	USED(dsp);
	instanceConstantsPiano(dsp, sample_rate);
	instanceResetUserInterfacePiano(dsp);
	instanceClearPiano(dsp);
}

void initPiano(Piano* dsp, int sample_rate) {
	USED(sample_rate);
	USED(dsp);
	classInitPiano(sample_rate);
	instanceInitPiano(dsp, sample_rate);
}

void buildUserInterfacePiano(Piano* dsp, UIGlue* ui_interface) {
	USED(dsp);
	ui_interface->openVerticalBox(ui_interface->uiInterface, "Piano");
	ui_interface->openHorizontalBox(ui_interface->uiInterface, "Basic");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider2, "1", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider2, "tooltip", "Tone frequency");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider2, "unit", "Hz");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Freq", &dsp->fHslider2, 440.0f, 20.0f, 20000.0f, 1.0f);
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider6, "1", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider6, "tooltip", "Gain (value between 0 and 1)");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Gain", &dsp->fHslider6, 1.0f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->declare(ui_interface->uiInterface, &dsp->fButton0, "1", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fButton0, "autovoice", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fButton0, "tooltip", "noteOn = 1, noteOff = 0");
	ui_interface->addButton(ui_interface->uiInterface, "Gate", &dsp->fButton0);
	ui_interface->closeBox(ui_interface->uiInterface);
	ui_interface->openVerticalBox(ui_interface->uiInterface, "Physical");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider5, "2", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider5, "tooltip", "A value between 0 and 1");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Brightness Factor", &dsp->fHslider5, 0.0f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider4, "2", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider4, "tooltip", "A value between 0 and 1");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Detuning Factor", &dsp->fHslider4, 0.100000001f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider7, "2", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider7, "tooltip", "A value between 0 and 1");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Hammer Hardness", &dsp->fHslider7, 0.100000001f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider3, "2", "");
	ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider3, "tooltip", "A value between 0 and 1");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Stiffness Factor", &dsp->fHslider3, 0.280000001f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->closeBox(ui_interface->uiInterface);
	ui_interface->openVerticalBox(ui_interface->uiInterface, "Reverb");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "reverbGain", &dsp->fHslider1, 0.136999995f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "roomSize", &dsp->fHslider8, 0.720000029f, 0.00999999978f, 2.0f, 0.00999999978f);
	ui_interface->closeBox(ui_interface->uiInterface);
	ui_interface->openVerticalBox(ui_interface->uiInterface, "Spat");
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "pan angle", &dsp->fHslider0, 0.600000024f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->addHorizontalSlider(ui_interface->uiInterface, "spatial width", &dsp->fHslider9, 0.5f, 0.0f, 1.0f, 0.00999999978f);
	ui_interface->closeBox(ui_interface->uiInterface);
	ui_interface->closeBox(ui_interface->uiInterface);
}

void computePiano(Piano* dsp, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) {
	USED(inputs);
	USED(dsp);
	FAUSTFLOAT* output0 = outputs[0];
	FAUSTFLOAT* output1 = outputs[1];
	float fSlow0 = (float)dsp->fHslider0;
	float fSlow1 = (12.0f * (1.0f - fSlow0));
	float fSlow2 = (0.00100000005f * (float)dsp->fHslider1);
	float fSlow3 = (float)dsp->fHslider2;
	int iSlow4 = (int)((17.3123398f * (logf(fSlow3) + -6.08677483f)) + 69.5f);
	float fSlow5 = (float)getValueEQBandWidthFactor((float)iSlow4);
	float fSlow6 = (dsp->fConst1 * (Piano_faustpower2_f(fSlow3) * Piano_faustpower2_f(fSlow5)));
	float fSlow7 = (0.5f * (1.0f - fSlow6));
	float fSlow8 = (float)getValueEQGain((float)iSlow4);
	float fSlow9 = (float)getValueSingleStringZero((float)iSlow4);
	float fSlow10 = (1.0f - fSlow9);
	float fSlow11 = powf(10.0f, (0.0500000007f * ((float)getValueSingleStringDecayRate((float)iSlow4) / fSlow3)));
	float fSlow12 = (float)getValueSingleStringPole((float)iSlow4);
	float fSlow13 = (1.0f - fSlow12);
	float fSlow14 = (fSlow11 * fSlow13);
	float fSlow15 = ((3.0f * fSlow10) - fSlow14);
	float fSlow16 = (1.0f / fSlow15);
	float fSlow17 = (fSlow12 * fSlow10);
	float fSlow18 = ((fSlow11 * fSlow9) * fSlow13);
	float fSlow19 = (fSlow17 - fSlow18);
	float fSlow20 = (float)dsp->fHslider3;
	float fSlow21 = (float)getValueStiffnessCoefficient((float)iSlow4);
	float fSlow22 = (13.6899996f * (Piano_faustpower2_f(fSlow20) * Piano_faustpower2_f(fSlow21)));
	float fSlow23 = (fSlow22 + -1.0f);
	float fSlow24 = (5.0f * ((float)dsp->fHslider4 * (float)getValueDetuningHz((float)iSlow4)));
	float fSlow25 = (fSlow3 + fSlow24);
	float fSlow26 = (dsp->fConst3 * fSlow25);
	float fSlow27 = sinf(fSlow26);
	float fSlow28 = (fSlow20 * fSlow21);
	float fSlow29 = (7.4000001f * fSlow28);
	float fSlow30 = (fSlow22 + 1.0f);
	float fSlow31 = cosf(fSlow26);
	float fSlow32 = (3.0f * atan2f((fSlow23 * fSlow27), (fSlow29 + (fSlow30 * fSlow31))));
	float fSlow33 = (3.0f * fSlow17);
	float fSlow34 = (fSlow18 - fSlow33);
	float fSlow35 = (4.0f * fSlow19);
	float fSlow36 = (fSlow34 + fSlow35);
	float fSlow37 = (((fSlow31 * fSlow34) / fSlow15) + 1.0f);
	float fSlow38 = ((fSlow9 + fSlow14) + -1.0f);
	float fSlow39 = (4.0f * fSlow38);
	float fSlow40 = (((fSlow39 + (fSlow31 * fSlow36)) / fSlow15) + 1.0f);
	float fSlow41 = (Piano_faustpower2_f(fSlow27) * fSlow34);
	float fSlow42 = Piano_faustpower2_f(fSlow15);
	float fSlow43 = (dsp->fConst2 * (((fSlow32 + atan2f((((0.0f - ((fSlow27 * fSlow36) / fSlow15)) * fSlow37) + (((fSlow27 * fSlow34) * fSlow40) / fSlow15)), ((fSlow37 * fSlow40) + ((fSlow41 * fSlow36) / fSlow42)))) + 6.28318548f) / fSlow25));
	float fSlow44 = floorf(fSlow43);
	float fSlow45 = (fSlow44 + (1.0f - fSlow43));
	float fSlow46 = (float)dsp->fButton0;
	float fSlow47 = (0.0f - (fSlow46 + -1.0f));
	float fSlow48 = (0.00100000005f * ((0.999599993f * fSlow46) + (0.899999976f * (fSlow47 * (float)getValueReleaseLoopGain((float)iSlow4)))));
	float fSlow49 = (float)getValueDCBa1((float)iSlow4);
	float fSlow50 = (1.0f - fSlow49);
	float fSlow51 = (0.5f * fSlow50);
	float fSlow52 = (0.25f * (float)dsp->fHslider5);
	float fSlow53 = (float)getValueLoudPole((float)iSlow4);
	float fSlow54 = ((fSlow52 + (0.980000019f - fSlow53)) * (float)getValueLoudGain((float)iSlow4));
	float fSlow55 = (1.39698386e-09f * (fSlow54 * (float)(iSlow4 < 88)));
	int iSlow56 = (fSlow46 > 0.0f);
	float fSlow57 = expf((0.0f - (dsp->fConst4 / ((float)dsp->fHslider6 * (float)getValueDryTapAmpT60((float)iSlow4)))));
	int iSlow58 = (fSlow46 < 1.0f);
	float fSlow59 = (dsp->fConst5 * fSlow47);
	float fSlow60 = (float)dsp->fHslider7;
	float fSlow61 = (dsp->fConst7 * fSlow60);
	float fSlow62 = expf((0.0f - (dsp->fConst8 / fSlow60)));
	float fSlow63 = (0.200000003f * (float)getValueSustainPedalLevel((float)iSlow4));
	float fSlow64 = (fSlow53 + (0.0199999996f - fSlow52));
	float fSlow65 = (0.0f - fSlow51);
	float fSlow66 = (3.70000005f * fSlow28);
	float fSlow67 = ((fSlow18 + fSlow35) - fSlow33);
	float fSlow68 = (((fSlow39 + (fSlow31 * fSlow67)) / fSlow15) + 1.0f);
	int iSlow69 = (int)(dsp->fConst2 * (((fSlow32 + atan2f((0.0f - ((fSlow27 * ((fSlow67 * fSlow37) - (fSlow34 * fSlow68))) / fSlow15)), ((fSlow37 * fSlow68) + ((fSlow41 * fSlow67) / fSlow42)))) + 6.28318548f) / fSlow25));
	int iSlow70 = min(4097, max(0, iSlow69));
	float fSlow71 = (fSlow3 - fSlow24);
	float fSlow72 = (dsp->fConst3 * fSlow71);
	float fSlow73 = sinf(fSlow72);
	float fSlow74 = cosf(fSlow72);
	float fSlow75 = (3.0f * atan2f((fSlow23 * fSlow73), (fSlow29 + (fSlow30 * fSlow74))));
	float fSlow76 = (((fSlow74 * fSlow34) / fSlow15) + 1.0f);
	float fSlow77 = ((((fSlow74 * fSlow36) + fSlow39) / fSlow15) + 1.0f);
	float fSlow78 = (Piano_faustpower2_f(fSlow73) * fSlow34);
	float fSlow79 = (dsp->fConst2 * (((fSlow75 + atan2f((((0.0f - ((fSlow73 * fSlow36) / fSlow15)) * fSlow76) + (((fSlow73 * fSlow34) * fSlow77) / fSlow15)), ((fSlow76 * fSlow77) + ((fSlow78 * fSlow36) / fSlow42)))) + 6.28318548f) / fSlow71));
	float fSlow80 = floorf(fSlow79);
	float fSlow81 = (fSlow80 + (1.0f - fSlow79));
	float fSlow82 = (((fSlow39 + (fSlow74 * fSlow67)) / fSlow15) + 1.0f);
	int iSlow83 = (int)(dsp->fConst2 * (((fSlow75 + atan2f(((fSlow73 * ((fSlow34 * fSlow82) - (fSlow76 * fSlow67))) / fSlow15), ((fSlow76 * fSlow82) + ((fSlow78 * fSlow67) / fSlow42)))) + 6.28318548f) / fSlow71));
	int iSlow84 = min(4097, max(0, iSlow83));
	float fSlow85 = (fSlow79 - fSlow80);
	int iSlow86 = min(4097, max(0, (iSlow83 + 1)));
	float fSlow87 = (fSlow43 - fSlow44);
	int iSlow88 = min(4097, max(0, (iSlow69 + 1)));
	float fSlow89 = ((0.0f - (dsp->fConst9 * (fSlow3 * fSlow5))) * cosf((dsp->fConst3 * (fSlow3 / (float)getValueStrikePosition((float)iSlow4)))));
	float fSlow90 = powf(10.0f, (0.0500000007f * (float)getValueSecondStageAmpRatio((float)iSlow4)));
	float fSlow91 = powf(10.0f, (dsp->fConst10 * (float)getValuer1_1db((float)iSlow4)));
	float fSlow92 = Piano_faustpower2_f(fSlow91);
	float fSlow93 = powf(10.0f, (dsp->fConst10 * (float)getValuer1_2db((float)iSlow4)));
	float fSlow94 = Piano_faustpower2_f(fSlow93);
	float fSlow95 = (1.0f - fSlow90);
	float fSlow96 = ((fSlow90 * fSlow92) + (fSlow94 * fSlow95));
	float fSlow97 = (2.0f * (float)getValueBq4_gEarBalled((float)iSlow4));
	float fSlow98 = (float)(iSlow4 >= 88);
	float fSlow99 = (2.32830644e-10f * fSlow98);
	float fSlow100 = (1.16415322e-10f * fSlow98);
	float fSlow101 = powf(10.0f, (dsp->fConst10 * (float)getValuer3db((float)iSlow4)));
	float fSlow102 = (cosf((dsp->fConst3 * (fSlow3 * (float)getValueThirdPartialFactor((float)iSlow4)))) * (0.0f - (2.0f * fSlow101)));
	float fSlow103 = Piano_faustpower2_f(fSlow101);
	float fSlow104 = powf(10.0f, (dsp->fConst10 * (float)getValuer2db((float)iSlow4)));
	float fSlow105 = (cosf((dsp->fConst3 * (fSlow3 * (float)getValueSecondPartialFactor((float)iSlow4)))) * (0.0f - (2.0f * fSlow104)));
	float fSlow106 = Piano_faustpower2_f(fSlow104);
	float fSlow107 = cosf((dsp->fConst3 * fSlow3));
	float fSlow108 = (fSlow107 * (0.0f - (2.0f * fSlow91)));
	float fSlow109 = (0.0f - (2.0f * ((fSlow90 * fSlow91) + (fSlow93 * fSlow95))));
	float fSlow110 = (0.0f - (2.0f * fSlow93));
	float fSlow111 = (float)dsp->fHslider8;
	float fSlow112 = expf((dsp->fConst15 / fSlow111));
	float fSlow113 = Piano_faustpower2_f(fSlow112);
	float fSlow114 = (1.0f - (dsp->fConst12 * fSlow113));
	float fSlow115 = (1.0f - fSlow113);
	float fSlow116 = (fSlow114 / fSlow115);
	float fSlow117 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow114) / Piano_faustpower2_f(fSlow115)) + -1.0f)));
	float fSlow118 = (fSlow116 - fSlow117);
	float fSlow119 = (fSlow112 * (fSlow117 + (1.0f - fSlow116)));
	float fSlow120 = ((expf((dsp->fConst16 / fSlow111)) / fSlow112) + -1.0f);
	float fSlow121 = expf((dsp->fConst25 / fSlow111));
	float fSlow122 = Piano_faustpower2_f(fSlow121);
	float fSlow123 = (1.0f - (dsp->fConst12 * fSlow122));
	float fSlow124 = (1.0f - fSlow122);
	float fSlow125 = (fSlow123 / fSlow124);
	float fSlow126 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow123) / Piano_faustpower2_f(fSlow124)) + -1.0f)));
	float fSlow127 = (fSlow125 - fSlow126);
	float fSlow128 = (fSlow121 * (fSlow126 + (1.0f - fSlow125)));
	float fSlow129 = ((expf((dsp->fConst26 / fSlow111)) / fSlow121) + -1.0f);
	float fSlow130 = (12.0f * fSlow0);
	int iSlow131 = (int)fminf(4096.0f, fmaxf(0.0f, (dsp->fConst30 * ((float)dsp->fHslider9 / fSlow3))));
	float fSlow132 = expf((dsp->fConst33 / fSlow111));
	float fSlow133 = Piano_faustpower2_f(fSlow132);
	float fSlow134 = (1.0f - (dsp->fConst12 * fSlow133));
	float fSlow135 = (1.0f - fSlow133);
	float fSlow136 = (fSlow134 / fSlow135);
	float fSlow137 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow134) / Piano_faustpower2_f(fSlow135)) + -1.0f)));
	float fSlow138 = (fSlow136 - fSlow137);
	float fSlow139 = (fSlow132 * (fSlow137 + (1.0f - fSlow136)));
	float fSlow140 = ((expf((dsp->fConst34 / fSlow111)) / fSlow132) + -1.0f);
	float fSlow141 = expf((dsp->fConst40 / fSlow111));
	float fSlow142 = Piano_faustpower2_f(fSlow141);
	float fSlow143 = (1.0f - (dsp->fConst12 * fSlow142));
	float fSlow144 = (1.0f - fSlow142);
	float fSlow145 = (fSlow143 / fSlow144);
	float fSlow146 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow143) / Piano_faustpower2_f(fSlow144)) + -1.0f)));
	float fSlow147 = (fSlow145 - fSlow146);
	float fSlow148 = (fSlow141 * (fSlow146 + (1.0f - fSlow145)));
	float fSlow149 = ((expf((dsp->fConst41 / fSlow111)) / fSlow141) + -1.0f);
	float fSlow150 = expf((dsp->fConst47 / fSlow111));
	float fSlow151 = Piano_faustpower2_f(fSlow150);
	float fSlow152 = (1.0f - (dsp->fConst12 * fSlow151));
	float fSlow153 = (1.0f - fSlow151);
	float fSlow154 = (fSlow152 / fSlow153);
	float fSlow155 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow152) / Piano_faustpower2_f(fSlow153)) + -1.0f)));
	float fSlow156 = (fSlow154 - fSlow155);
	float fSlow157 = (fSlow150 * (fSlow155 + (1.0f - fSlow154)));
	float fSlow158 = ((expf((dsp->fConst48 / fSlow111)) / fSlow150) + -1.0f);
	float fSlow159 = expf((dsp->fConst54 / fSlow111));
	float fSlow160 = Piano_faustpower2_f(fSlow159);
	float fSlow161 = (1.0f - (dsp->fConst12 * fSlow160));
	float fSlow162 = (1.0f - fSlow160);
	float fSlow163 = (fSlow161 / fSlow162);
	float fSlow164 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow161) / Piano_faustpower2_f(fSlow162)) + -1.0f)));
	float fSlow165 = (fSlow163 - fSlow164);
	float fSlow166 = (fSlow159 * (fSlow164 + (1.0f - fSlow163)));
	float fSlow167 = ((expf((dsp->fConst55 / fSlow111)) / fSlow159) + -1.0f);
	float fSlow168 = expf((dsp->fConst61 / fSlow111));
	float fSlow169 = Piano_faustpower2_f(fSlow168);
	float fSlow170 = (1.0f - (dsp->fConst12 * fSlow169));
	float fSlow171 = (1.0f - fSlow169);
	float fSlow172 = (fSlow170 / fSlow171);
	float fSlow173 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow170) / Piano_faustpower2_f(fSlow171)) + -1.0f)));
	float fSlow174 = (fSlow172 - fSlow173);
	float fSlow175 = (fSlow168 * (fSlow173 + (1.0f - fSlow172)));
	float fSlow176 = ((expf((dsp->fConst62 / fSlow111)) / fSlow168) + -1.0f);
	float fSlow177 = expf((dsp->fConst68 / fSlow111));
	float fSlow178 = Piano_faustpower2_f(fSlow177);
	float fSlow179 = (1.0f - (dsp->fConst12 * fSlow178));
	float fSlow180 = (1.0f - fSlow178);
	float fSlow181 = (fSlow179 / fSlow180);
	float fSlow182 = sqrtf(fmaxf(0.0f, ((Piano_faustpower2_f(fSlow179) / Piano_faustpower2_f(fSlow180)) + -1.0f)));
	float fSlow183 = (fSlow181 - fSlow182);
	float fSlow184 = (fSlow177 * (fSlow182 + (1.0f - fSlow181)));
	float fSlow185 = ((expf((dsp->fConst69 / fSlow111)) / fSlow177) + -1.0f);
	/* C99 loop */
	{
		int i;
		for (i = 0; (i < count); i = (i + 1)) {
			dsp->fRec10[0] = (fSlow2 + (0.999000013f * dsp->fRec10[1]));
			dsp->fRec19[0] = (fSlow48 + (0.999000013f * dsp->fRec19[1]));
			dsp->iRec25[0] = ((1103515245 * dsp->iRec25[1]) + 12345);
			dsp->fRec27[0] = ((fSlow46 * dsp->fRec27[1]) + 1.0f);
			float fTemp0 = (dsp->fRec27[0] + -1.0f);
			float fTemp1 = (float)((fTemp0 < 2.0f) & iSlow56);
			float fTemp2 = ((0.0301973838f * fTemp1) + (fSlow57 * (float)((fTemp0 >= 2.0f) | iSlow58)));
			dsp->fRec26[0] = ((dsp->fRec26[1] * fTemp2) + (0.150000006f * (fTemp1 * (1.0f - fTemp2))));
			int iTemp3 = (fTemp0 < fSlow61);
			float fTemp4 = (fSlow46 * ((dsp->fConst6 * (float)(fTemp0 >= fSlow61)) + (fSlow62 * (float)iTemp3)));
			dsp->fRec28[0] = ((dsp->fRec28[1] * (fSlow59 + fTemp4)) + (fSlow63 * (((1.0f - fTemp4) - fSlow59) * (float)(iTemp3 & iSlow56))));
			float fTemp5 = ((float)dsp->iRec25[0] * (dsp->fRec26[0] + dsp->fRec28[0]));
			dsp->fRec24[0] = ((fSlow55 * fTemp5) + (fSlow64 * dsp->fRec24[1]));
			dsp->fRec23[0] = ((fSlow54 * dsp->fRec24[0]) + (fSlow64 * dsp->fRec23[1]));
			dsp->fRec22[0] = ((fSlow54 * dsp->fRec23[0]) + (fSlow64 * dsp->fRec22[1]));
			dsp->fRec21[0] = ((fSlow54 * dsp->fRec22[0]) + (fSlow64 * dsp->fRec21[1]));
			dsp->fRec20[0] = (((fSlow51 * dsp->fRec21[0]) + (fSlow65 * dsp->fRec21[1])) - (fSlow49 * dsp->fRec20[1]));
			float fTemp6 = (dsp->fRec19[0] * (dsp->fRec20[0] + dsp->fRec12[1]));
			dsp->fVec0[0] = fTemp6;
			dsp->fRec18[0] = (dsp->fVec0[1] + (fSlow66 * (fTemp6 - dsp->fRec18[1])));
			dsp->fRec17[0] = (dsp->fRec18[1] + (fSlow66 * (dsp->fRec18[0] - dsp->fRec17[1])));
			dsp->fRec16[(dsp->IOTA & 8191)] = (dsp->fRec17[1] + (fSlow66 * (dsp->fRec17[0] - dsp->fRec16[((dsp->IOTA - 1) & 8191)])));
			float fTemp7 = (fSlow45 * dsp->fRec16[((dsp->IOTA - iSlow70) & 8191)]);
			float fTemp8 = (dsp->fRec20[0] + (dsp->fRec19[0] * dsp->fRec13[1]));
			dsp->fVec1[0] = fTemp8;
			dsp->fRec31[0] = (dsp->fVec1[1] - (fSlow66 * (dsp->fRec31[1] - fTemp8)));
			dsp->fRec30[0] = (dsp->fRec31[1] - (fSlow66 * (dsp->fRec30[1] - dsp->fRec31[0])));
			dsp->fRec29[(dsp->IOTA & 8191)] = (dsp->fRec30[1] + (fSlow66 * (dsp->fRec30[0] - dsp->fRec29[((dsp->IOTA - 1) & 8191)])));
			float fTemp9 = ((fSlow81 * dsp->fRec29[((dsp->IOTA - iSlow84) & 8191)]) + (fSlow85 * dsp->fRec29[((dsp->IOTA - iSlow86) & 8191)]));
			float fTemp10 = (fSlow87 * dsp->fRec16[((dsp->IOTA - iSlow88) & 8191)]);
			float fTemp11 = (fTemp7 + (fTemp9 + fTemp10));
			dsp->fVec2[0] = fTemp11;
			dsp->fRec15[0] = (fSlow16 * ((2.0f * ((fSlow19 * dsp->fVec2[1]) + (fSlow38 * fTemp11))) - (fSlow34 * dsp->fRec15[1])));
			dsp->fRec12[0] = (dsp->fRec15[0] + (fTemp7 + fTemp10));
			dsp->fRec13[0] = (dsp->fRec15[0] + fTemp9);
			float fRec14 = fTemp11;
			dsp->fRec11[0] = ((fSlow8 * fRec14) - ((fSlow89 * dsp->fRec11[1]) + (fSlow6 * dsp->fRec11[2])));
			dsp->fVec3[0] = (fSlow99 * fTemp5);
			float fTemp12 = (0.0f - ((0.5f * dsp->fVec3[1]) + (fSlow100 * fTemp5)));
			dsp->fVec4[0] = fTemp12;
			dsp->fRec41[0] = (((fSlow51 * fTemp12) + (fSlow65 * dsp->fVec4[1])) - (fSlow49 * dsp->fRec41[1]));
			dsp->fRec40[0] = ((fSlow54 * dsp->fRec41[0]) + (fSlow64 * dsp->fRec40[1]));
			dsp->fRec39[0] = ((fSlow54 * dsp->fRec40[0]) + (fSlow64 * dsp->fRec39[1]));
			dsp->fRec38[0] = ((fSlow54 * dsp->fRec39[0]) + (fSlow64 * dsp->fRec38[1]));
			dsp->fRec37[0] = ((fSlow54 * dsp->fRec38[0]) + (fSlow64 * dsp->fRec37[1]));
			dsp->fRec36[0] = ((fSlow97 * (0.0f - (0.5f * (dsp->fRec37[1] - dsp->fRec37[0])))) - ((fSlow102 * dsp->fRec36[1]) + (fSlow103 * dsp->fRec36[2])));
			dsp->fRec35[0] = ((fSlow97 * dsp->fRec36[0]) - ((fSlow105 * dsp->fRec35[1]) + (fSlow106 * dsp->fRec35[2])));
			dsp->fRec34[0] = (dsp->fRec35[0] - ((fSlow108 * dsp->fRec34[1]) + (fSlow92 * dsp->fRec34[2])));
			dsp->fRec33[0] = (((fSlow96 * dsp->fRec34[2]) + (dsp->fRec34[0] + (fSlow107 * ((fSlow109 * dsp->fRec34[1]) - (fSlow110 * dsp->fRec33[1]))))) - (fSlow94 * dsp->fRec33[2]));
			dsp->fRec32[0] = ((fSlow50 * dsp->fRec33[0]) - (fSlow49 * dsp->fRec32[1]));
			float fTemp13 = ((fSlow7 * (dsp->fRec11[0] - dsp->fRec11[2])) + (fRec14 + dsp->fRec32[0]));
			dsp->fVec5[(dsp->IOTA & 8191)] = fTemp13;
			dsp->fVec6[(dsp->IOTA & 4095)] = (fSlow1 * (dsp->fRec10[0] * fTemp13));
			float fTemp14 = (0.300000012f * dsp->fVec6[((dsp->IOTA - dsp->iConst11) & 4095)]);
			dsp->fRec43[0] = (dsp->fConst18 * ((dsp->fRec4[1] + dsp->fRec4[2]) - (dsp->fConst19 * dsp->fRec43[1])));
			dsp->fRec42[0] = ((fSlow118 * dsp->fRec42[1]) + (fSlow119 * (dsp->fRec4[1] + (fSlow120 * dsp->fRec43[0]))));
			dsp->fVec7[(dsp->IOTA & 16383)] = ((0.353553385f * dsp->fRec42[0]) + 9.99999968e-21f);
			float fTemp15 = ((fTemp14 + dsp->fVec7[((dsp->IOTA - dsp->iConst21) & 16383)]) - (0.600000024f * dsp->fRec8[1]));
			dsp->fVec8[(dsp->IOTA & 4095)] = fTemp15;
			dsp->fRec8[0] = dsp->fVec8[((dsp->IOTA - dsp->iConst22) & 4095)];
			float fRec9 = (0.600000024f * fTemp15);
			dsp->fRec47[0] = (dsp->fConst18 * ((dsp->fRec2[1] + dsp->fRec2[2]) - (dsp->fConst19 * dsp->fRec47[1])));
			dsp->fRec46[0] = ((fSlow127 * dsp->fRec46[1]) + (fSlow128 * (dsp->fRec2[1] + (fSlow129 * dsp->fRec47[0]))));
			dsp->fVec9[(dsp->IOTA & 16383)] = ((0.353553385f * dsp->fRec46[0]) + 9.99999968e-21f);
			float fTemp16 = (dsp->fVec9[((dsp->IOTA - dsp->iConst28) & 16383)] - (fTemp14 + (0.600000024f * dsp->fRec44[1])));
			dsp->fVec10[(dsp->IOTA & 4095)] = fTemp16;
			dsp->fRec44[0] = dsp->fVec10[((dsp->IOTA - dsp->iConst29) & 4095)];
			float fRec45 = (0.600000024f * fTemp16);
			float fTemp17 = dsp->fVec5[((dsp->IOTA - iSlow131) & 8191)];
			dsp->fVec11[(dsp->IOTA & 4095)] = (fSlow130 * (dsp->fRec10[0] * fTemp17));
			float fTemp18 = (0.300000012f * dsp->fVec11[((dsp->IOTA - dsp->iConst11) & 4095)]);
			dsp->fRec51[0] = (0.0f - (dsp->fConst18 * ((dsp->fConst19 * dsp->fRec51[1]) - (dsp->fRec5[1] + dsp->fRec5[2]))));
			dsp->fRec50[0] = ((fSlow138 * dsp->fRec50[1]) + (fSlow139 * (dsp->fRec5[1] + (fSlow140 * dsp->fRec51[0]))));
			dsp->fVec12[(dsp->IOTA & 16383)] = ((0.353553385f * dsp->fRec50[0]) + 9.99999968e-21f);
			float fTemp19 = ((0.600000024f * dsp->fRec48[1]) + (fTemp18 + dsp->fVec12[((dsp->IOTA - dsp->iConst36) & 16383)]));
			dsp->fVec13[(dsp->IOTA & 4095)] = fTemp19;
			dsp->fRec48[0] = dsp->fVec13[((dsp->IOTA - dsp->iConst37) & 4095)];
			float fRec49 = (0.0f - (0.600000024f * fTemp19));
			dsp->fRec55[0] = (dsp->fConst18 * ((dsp->fRec6[1] + dsp->fRec6[2]) - (dsp->fConst19 * dsp->fRec55[1])));
			dsp->fRec54[0] = ((fSlow147 * dsp->fRec54[1]) + (fSlow148 * (dsp->fRec6[1] + (fSlow149 * dsp->fRec55[0]))));
			dsp->fVec14[(dsp->IOTA & 16383)] = ((0.353553385f * dsp->fRec54[0]) + 9.99999968e-21f);
			float fTemp20 = (dsp->fVec14[((dsp->IOTA - dsp->iConst43) & 16383)] - (fTemp14 + (0.600000024f * dsp->fRec52[1])));
			dsp->fVec15[(dsp->IOTA & 2047)] = fTemp20;
			dsp->fRec52[0] = dsp->fVec15[((dsp->IOTA - dsp->iConst44) & 2047)];
			float fRec53 = (0.600000024f * fTemp20);
			dsp->fRec59[0] = (0.0f - (dsp->fConst18 * ((dsp->fConst19 * dsp->fRec59[1]) - (dsp->fRec1[1] + dsp->fRec1[2]))));
			dsp->fRec58[0] = ((fSlow156 * dsp->fRec58[1]) + (fSlow157 * (dsp->fRec1[1] + (fSlow158 * dsp->fRec59[0]))));
			dsp->fVec16[(dsp->IOTA & 32767)] = ((0.353553385f * dsp->fRec58[0]) + 9.99999968e-21f);
			float fTemp21 = (dsp->fVec16[((dsp->IOTA - dsp->iConst50) & 32767)] + ((0.600000024f * dsp->fRec56[1]) + fTemp18));
			dsp->fVec17[(dsp->IOTA & 4095)] = fTemp21;
			dsp->fRec56[0] = dsp->fVec17[((dsp->IOTA - dsp->iConst51) & 4095)];
			float fRec57 = (0.0f - (0.600000024f * fTemp21));
			dsp->fRec63[0] = (0.0f - (dsp->fConst18 * ((dsp->fConst19 * dsp->fRec63[1]) - (dsp->fRec3[1] + dsp->fRec3[2]))));
			dsp->fRec62[0] = ((fSlow165 * dsp->fRec62[1]) + (fSlow166 * (dsp->fRec3[1] + (fSlow167 * dsp->fRec63[0]))));
			dsp->fVec18[(dsp->IOTA & 32767)] = ((0.353553385f * dsp->fRec62[0]) + 9.99999968e-21f);
			float fTemp22 = (((0.600000024f * dsp->fRec60[1]) + dsp->fVec18[((dsp->IOTA - dsp->iConst57) & 32767)]) - fTemp18);
			dsp->fVec19[(dsp->IOTA & 4095)] = fTemp22;
			dsp->fRec60[0] = dsp->fVec19[((dsp->IOTA - dsp->iConst58) & 4095)];
			float fRec61 = (0.0f - (0.600000024f * fTemp22));
			dsp->fRec67[0] = (dsp->fConst18 * ((dsp->fRec0[1] + dsp->fRec0[2]) - (dsp->fConst19 * dsp->fRec67[1])));
			dsp->fRec66[0] = ((fSlow174 * dsp->fRec66[1]) + (fSlow175 * (dsp->fRec0[1] + (fSlow176 * dsp->fRec67[0]))));
			dsp->fVec20[(dsp->IOTA & 16383)] = ((0.353553385f * dsp->fRec66[0]) + 9.99999968e-21f);
			float fTemp23 = ((dsp->fVec20[((dsp->IOTA - dsp->iConst64) & 16383)] + fTemp14) - (0.600000024f * dsp->fRec64[1]));
			dsp->fVec21[(dsp->IOTA & 2047)] = fTemp23;
			dsp->fRec64[0] = dsp->fVec21[((dsp->IOTA - dsp->iConst65) & 2047)];
			float fRec65 = (0.600000024f * fTemp23);
			dsp->fRec71[0] = (0.0f - (dsp->fConst18 * ((dsp->fConst19 * dsp->fRec71[1]) - (dsp->fRec7[1] + dsp->fRec7[2]))));
			dsp->fRec70[0] = ((fSlow183 * dsp->fRec70[1]) + (fSlow184 * (dsp->fRec7[1] + (fSlow185 * dsp->fRec71[0]))));
			dsp->fVec22[(dsp->IOTA & 32767)] = ((0.353553385f * dsp->fRec70[0]) + 9.99999968e-21f);
			float fTemp24 = (((0.600000024f * dsp->fRec68[1]) + dsp->fVec22[((dsp->IOTA - dsp->iConst71) & 32767)]) - fTemp18);
			dsp->fVec23[(dsp->IOTA & 2047)] = fTemp24;
			dsp->fRec68[0] = dsp->fVec23[((dsp->IOTA - dsp->iConst72) & 2047)];
			float fRec69 = (0.0f - (0.600000024f * fTemp24));
			float fTemp25 = (dsp->fRec64[1] + dsp->fRec52[1]);
			float fTemp26 = (fRec49 + fTemp25);
			dsp->fRec0[0] = (dsp->fRec8[1] + (fRec45 + (dsp->fRec44[1] + (dsp->fRec48[1] + (fRec53 + (dsp->fRec56[1] + (fRec61 + (fRec65 + (fRec9 + (fRec57 + (dsp->fRec68[1] + (dsp->fRec60[1] + (fRec69 + fTemp26)))))))))))));
			dsp->fRec1[0] = ((dsp->fRec8[1] + (fRec45 + (dsp->fRec44[1] + (fRec53 + (fRec65 + (fRec9 + fTemp25)))))) - (dsp->fRec48[1] + (dsp->fRec56[1] + (fRec61 + (fRec57 + (dsp->fRec68[1] + (dsp->fRec60[1] + (fRec49 + fRec69))))))));
			float fTemp27 = (fRec49 + dsp->fRec64[1]);
			dsp->fRec2[0] = ((dsp->fRec8[1] + (dsp->fRec48[1] + (dsp->fRec56[1] + (fRec65 + (fRec9 + (fRec57 + fTemp27)))))) - (fRec45 + (dsp->fRec44[1] + (fRec53 + (fRec61 + (dsp->fRec68[1] + (dsp->fRec60[1] + (fRec69 + dsp->fRec52[1]))))))));
			float fTemp28 = (fRec49 + dsp->fRec52[1]);
			dsp->fRec3[0] = ((dsp->fRec8[1] + (fRec61 + (fRec65 + (fRec9 + (dsp->fRec68[1] + (dsp->fRec60[1] + (fRec69 + dsp->fRec64[1]))))))) - (fRec45 + (dsp->fRec44[1] + (dsp->fRec48[1] + (fRec53 + (dsp->fRec56[1] + (fRec57 + fTemp28)))))));
			dsp->fRec4[0] = ((fRec45 + (dsp->fRec44[1] + (dsp->fRec56[1] + (fRec61 + (fRec65 + (fRec57 + (dsp->fRec64[1] + dsp->fRec60[1]))))))) - (dsp->fRec8[1] + (dsp->fRec48[1] + (fRec53 + (fRec9 + (dsp->fRec68[1] + (fRec69 + fTemp28)))))));
			dsp->fRec5[0] = ((fRec45 + (dsp->fRec44[1] + (dsp->fRec48[1] + (fRec65 + (dsp->fRec68[1] + (fRec69 + fTemp27)))))) - (dsp->fRec8[1] + (fRec53 + (dsp->fRec56[1] + (fRec61 + (fRec9 + (fRec57 + (dsp->fRec52[1] + dsp->fRec60[1]))))))));
			dsp->fRec6[0] = ((fRec53 + (dsp->fRec56[1] + (fRec65 + (fRec57 + (dsp->fRec68[1] + (fRec69 + fTemp25)))))) - (dsp->fRec8[1] + (fRec45 + (dsp->fRec44[1] + (dsp->fRec48[1] + (fRec61 + (fRec9 + (fRec49 + dsp->fRec60[1]))))))));
			dsp->fRec7[0] = ((dsp->fRec48[1] + (fRec53 + (fRec61 + (fRec65 + (dsp->fRec60[1] + fTemp26))))) - (dsp->fRec8[1] + (fRec45 + (dsp->fRec44[1] + (dsp->fRec56[1] + (fRec9 + (fRec57 + (fRec69 + dsp->fRec68[1]))))))));
			float fTemp29 = (1.0f - dsp->fRec10[0]);
			output0[i] = (FAUSTFLOAT)((0.370000005f * (dsp->fRec1[0] + dsp->fRec2[0])) + (fSlow1 * (fTemp29 * fTemp13)));
			output1[i] = (FAUSTFLOAT)((0.370000005f * (dsp->fRec1[0] - dsp->fRec2[0])) + (fSlow130 * (fTemp29 * fTemp17)));
			dsp->fRec10[1] = dsp->fRec10[0];
			dsp->fRec19[1] = dsp->fRec19[0];
			dsp->iRec25[1] = dsp->iRec25[0];
			dsp->fRec27[1] = dsp->fRec27[0];
			dsp->fRec26[1] = dsp->fRec26[0];
			dsp->fRec28[1] = dsp->fRec28[0];
			dsp->fRec24[1] = dsp->fRec24[0];
			dsp->fRec23[1] = dsp->fRec23[0];
			dsp->fRec22[1] = dsp->fRec22[0];
			dsp->fRec21[1] = dsp->fRec21[0];
			dsp->fRec20[1] = dsp->fRec20[0];
			dsp->fVec0[1] = dsp->fVec0[0];
			dsp->fRec18[1] = dsp->fRec18[0];
			dsp->fRec17[1] = dsp->fRec17[0];
			dsp->IOTA = (dsp->IOTA + 1);
			dsp->fVec1[1] = dsp->fVec1[0];
			dsp->fRec31[1] = dsp->fRec31[0];
			dsp->fRec30[1] = dsp->fRec30[0];
			dsp->fVec2[1] = dsp->fVec2[0];
			dsp->fRec15[1] = dsp->fRec15[0];
			dsp->fRec12[1] = dsp->fRec12[0];
			dsp->fRec13[1] = dsp->fRec13[0];
			dsp->fRec11[2] = dsp->fRec11[1];
			dsp->fRec11[1] = dsp->fRec11[0];
			dsp->fVec3[1] = dsp->fVec3[0];
			dsp->fVec4[1] = dsp->fVec4[0];
			dsp->fRec41[1] = dsp->fRec41[0];
			dsp->fRec40[1] = dsp->fRec40[0];
			dsp->fRec39[1] = dsp->fRec39[0];
			dsp->fRec38[1] = dsp->fRec38[0];
			dsp->fRec37[1] = dsp->fRec37[0];
			dsp->fRec36[2] = dsp->fRec36[1];
			dsp->fRec36[1] = dsp->fRec36[0];
			dsp->fRec35[2] = dsp->fRec35[1];
			dsp->fRec35[1] = dsp->fRec35[0];
			dsp->fRec34[2] = dsp->fRec34[1];
			dsp->fRec34[1] = dsp->fRec34[0];
			dsp->fRec33[2] = dsp->fRec33[1];
			dsp->fRec33[1] = dsp->fRec33[0];
			dsp->fRec32[1] = dsp->fRec32[0];
			dsp->fRec43[1] = dsp->fRec43[0];
			dsp->fRec42[1] = dsp->fRec42[0];
			dsp->fRec8[1] = dsp->fRec8[0];
			dsp->fRec47[1] = dsp->fRec47[0];
			dsp->fRec46[1] = dsp->fRec46[0];
			dsp->fRec44[1] = dsp->fRec44[0];
			dsp->fRec51[1] = dsp->fRec51[0];
			dsp->fRec50[1] = dsp->fRec50[0];
			dsp->fRec48[1] = dsp->fRec48[0];
			dsp->fRec55[1] = dsp->fRec55[0];
			dsp->fRec54[1] = dsp->fRec54[0];
			dsp->fRec52[1] = dsp->fRec52[0];
			dsp->fRec59[1] = dsp->fRec59[0];
			dsp->fRec58[1] = dsp->fRec58[0];
			dsp->fRec56[1] = dsp->fRec56[0];
			dsp->fRec63[1] = dsp->fRec63[0];
			dsp->fRec62[1] = dsp->fRec62[0];
			dsp->fRec60[1] = dsp->fRec60[0];
			dsp->fRec67[1] = dsp->fRec67[0];
			dsp->fRec66[1] = dsp->fRec66[0];
			dsp->fRec64[1] = dsp->fRec64[0];
			dsp->fRec71[1] = dsp->fRec71[0];
			dsp->fRec70[1] = dsp->fRec70[0];
			dsp->fRec68[1] = dsp->fRec68[0];
			dsp->fRec0[2] = dsp->fRec0[1];
			dsp->fRec0[1] = dsp->fRec0[0];
			dsp->fRec1[2] = dsp->fRec1[1];
			dsp->fRec1[1] = dsp->fRec1[0];
			dsp->fRec2[2] = dsp->fRec2[1];
			dsp->fRec2[1] = dsp->fRec2[0];
			dsp->fRec3[2] = dsp->fRec3[1];
			dsp->fRec3[1] = dsp->fRec3[0];
			dsp->fRec4[2] = dsp->fRec4[1];
			dsp->fRec4[1] = dsp->fRec4[0];
			dsp->fRec5[2] = dsp->fRec5[1];
			dsp->fRec5[1] = dsp->fRec5[0];
			dsp->fRec6[2] = dsp->fRec6[1];
			dsp->fRec6[1] = dsp->fRec6[0];
			dsp->fRec7[2] = dsp->fRec7[1];
			dsp->fRec7[1] = dsp->fRec7[0];
		}
	}
}

#ifdef __cplusplus
}
#endif

static Piano *clonePiano(Piano *dsp) {
	return memmove(newPiano(), dsp, sizeof(*dsp));
}

static void *statePiano(Piano *dsp, int *sz) {
	*sz = sizeof(*dsp);
	return dsp;
}

#define DSP Piano

#include "dspf.h"

static DSPf dspf = {
	.new = newPiano,
	.clone = clonePiano,
	.state = statePiano,
	.init = instanceInitPiano,
	.delete = deletePiano,
	.metadata = metadataPiano,
	.num_in = getNumInputsPiano,
	.num_out = getNumOutputsPiano,
	.clear = instanceClearPiano,
	.reset_ui = instanceResetUserInterfacePiano,
	.build_ui = buildUserInterfacePiano,
	.compute = computePiano,
};

void *
class_init(int rate)
{
	classInitPiano(rate);
	return &dspf;
}

#endif