File: waveform4.cpp1

package info (click to toggle)
faust 2.79.3%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 397,496 kB
  • sloc: cpp: 278,433; ansic: 116,164; javascript: 18,529; vhdl: 14,052; sh: 13,884; java: 5,900; objc: 3,852; python: 3,222; makefile: 2,655; cs: 1,672; lisp: 1,146; ruby: 954; yacc: 586; xml: 471; lex: 247; awk: 110; tcl: 26
file content (147 lines) | stat: -rw-r--r-- 3,615 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//----------------------------------------------------------
// name: "waveform4"
//
// Code generated with Faust 2.77.2 (https://faust.grame.fr)
//----------------------------------------------------------

/* link with  */
#include <math.h>
#ifndef FAUSTFLOAT
#define FAUSTFLOAT float
#endif 


#ifndef FAUSTCLASS 
#define FAUSTCLASS mydsp
#endif

class mydsp : public dsp {
  private:
	class SIG0 {
	  private:
		int fSampleRate;
		static int 	iWave0[7];
		int 	idxiWave0;
	  public:
		int getNumInputs() { return 0; }
		int getNumOutputs() { return 1; }
		void init(int sample_rate) {
			fSampleRate = sample_rate;
			idxiWave0 = 0;
		}
		void fill(int count, int output[]) {
			int fullcount = count;
			for (int index = 0; index < fullcount; index += 32) {
				int count = min(32, fullcount-index);
				for (int i=0; i<count; i++) {
					output[i] = iWave0[idxiWave0];
					// post processing
					idxiWave0 = (idxiWave0 + 1) % 7;
				}
				output += 32;
			}
		}
	};


	class SIG1 {
	  private:
		int fSampleRate;
		static float 	fWave1[7];
		int 	idxfWave1;
	  public:
		int getNumInputs() { return 0; }
		int getNumOutputs() { return 1; }
		void init(int sample_rate) {
			fSampleRate = sample_rate;
			idxfWave1 = 0;
		}
		void fill(int count, float output[]) {
			int fullcount = count;
			for (int index = 0; index < fullcount; index += 32) {
				int count = min(32, fullcount-index);
				for (int i=0; i<count; i++) {
					output[i] = fWave1[idxfWave1];
					// post processing
					idxfWave1 = (idxfWave1 + 1) % 7;
				}
				output += 32;
			}
		}
	};


	// Recursion delay iVeeec0 is of type kMonoDelay
	// While its definition is of type kZeroDelay
	int 	iVeeec0State; // Mono Delay
	static int 	itbl0[7];
	static float 	ftbl1[7];
	int fSampleRate;

  public:
	virtual void metadata(Meta* m) { 
		m->declare("filename", "waveform4.dsp");
		m->declare("name", "waveform4");
	}

	virtual int getNumInputs() { return 0; }
	virtual int getNumOutputs() { return 2; }
	static void classInit(int sample_rate) {
		SIG0 sig0;
		sig0.init(sample_rate);
		sig0.fill(7,itbl0);
		SIG1 sig1;
		sig1.init(sample_rate);
		sig1.fill(7,ftbl1);
	}
	virtual void instanceConstants(int sample_rate) {
		fSampleRate = sample_rate;
	}
	virtual void instanceResetUserInterface() {
	}
	virtual void instanceClear() {
		iVeeec0State = 0;
	}
	virtual void init(int sample_rate) {
		classInit(sample_rate);
		instanceInit(sample_rate);
	}
	virtual void instanceInit(int sample_rate) {
		instanceConstants(sample_rate);
		instanceResetUserInterface();
		instanceClear();
	}
	virtual mydsp* clone() {
		return new mydsp();
	}
	virtual int getSampleRate() {
		return fSampleRate;
	}
	virtual void buildUserInterface(UI* ui_interface) {
		ui_interface->openVerticalBox("waveform4");
		ui_interface->closeBox();
	}
	virtual void compute (int count, FAUSTFLOAT** input, FAUSTFLOAT** output) {
		int 	iVeeec0;
		int fullcount = count;
		for (int index = 0; index < fullcount; index += 32) {
			int count = min(32, fullcount-index);
			FAUSTFLOAT* output0 = &output[0][index]; // Zone 3
			FAUSTFLOAT* output1 = &output[1][index]; // Zone 3
			iVeeec0 = iVeeec0State;
			for (int i=0; i<count; i++) {
				iVeeec0 = ((iVeeec0 + 3) % 7);
				int 	iTemp0 = max(0, min(iVeeec0, 6)); // step: 12
				output0[i] = (FAUSTFLOAT)(itbl0[iTemp0]);  // Zone Exec Code
				output1[i] = (FAUSTFLOAT)(ftbl1[iTemp0]);  // Zone Exec Code
			}
			iVeeec0State = iVeeec0;
		}
	}
};


int 	mydsp::SIG0::iWave0[7] = {10,20,30,40,50,60,70};
int 	mydsp::itbl0[7];
float 	mydsp::SIG1::fWave1[7] = {1.1f,2.2f,3.3f,4.4f,5.5f,6.6f,7.7f};
float 	mydsp::ftbl1[7];