@grame/faustwasm 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/foo.cpp ADDED
@@ -0,0 +1,3312 @@
1
+
2
+ #include <cstdint>
3
+ #include <cmath>
4
+ #include <cassert>
5
+ #include <string>
6
+ #include <cstring>
7
+ #include <array>
8
+
9
+ //==============================================================================
10
+ /// Auto-generated C++ class for the 'HelloReverb' processor
11
+ ///
12
+
13
+ #if ! (defined (__cplusplus) && (__cplusplus >= 201703L))
14
+ #error "This code requires that your compiler is set to use C++17 or later!"
15
+ #endif
16
+
17
+ struct HelloReverb
18
+ {
19
+ HelloReverb() = default;
20
+ ~HelloReverb() = default;
21
+
22
+ static constexpr std::string_view name = "HelloReverb";
23
+
24
+ //==============================================================================
25
+ using EndpointHandle = uint32_t;
26
+
27
+ enum class EndpointType
28
+ {
29
+ stream,
30
+ event,
31
+ value
32
+ };
33
+
34
+ struct EndpointInfo
35
+ {
36
+ uint32_t handle;
37
+ const char* name;
38
+ EndpointType endpointType;
39
+ };
40
+
41
+ //==============================================================================
42
+ static constexpr uint32_t numInputEndpoints = 11;
43
+ static constexpr uint32_t numOutputEndpoints = 2;
44
+
45
+ static constexpr uint32_t maxFramesPerBlock = 512;
46
+ static constexpr uint32_t eventBufferSize = 32;
47
+ static constexpr uint32_t maxOutputEventSize = 0;
48
+ static constexpr double latency = 0.000000;
49
+
50
+ enum class EndpointHandles
51
+ {
52
+ out0 = 12,
53
+ out1 = 13,
54
+ freq = 1 ,
55
+ bend = 2 ,
56
+ gain = 3 ,
57
+ envAttack = 4 ,
58
+ sustain = 5 ,
59
+ reedStiffness = 6 ,
60
+ bellOpening = 7 ,
61
+ vibratoFreq = 8 ,
62
+ vibratoGain = 9 ,
63
+ outGain = 10,
64
+ gate = 11
65
+ };
66
+
67
+ static constexpr uint32_t getEndpointHandleForName (std::string_view endpointName)
68
+ {
69
+ if (endpointName == "out0") return static_cast<uint32_t> (EndpointHandles::out0);
70
+ if (endpointName == "out1") return static_cast<uint32_t> (EndpointHandles::out1);
71
+ if (endpointName == "freq") return static_cast<uint32_t> (EndpointHandles::freq);
72
+ if (endpointName == "bend") return static_cast<uint32_t> (EndpointHandles::bend);
73
+ if (endpointName == "gain") return static_cast<uint32_t> (EndpointHandles::gain);
74
+ if (endpointName == "envAttack") return static_cast<uint32_t> (EndpointHandles::envAttack);
75
+ if (endpointName == "sustain") return static_cast<uint32_t> (EndpointHandles::sustain);
76
+ if (endpointName == "reedStiffness") return static_cast<uint32_t> (EndpointHandles::reedStiffness);
77
+ if (endpointName == "bellOpening") return static_cast<uint32_t> (EndpointHandles::bellOpening);
78
+ if (endpointName == "vibratoFreq") return static_cast<uint32_t> (EndpointHandles::vibratoFreq);
79
+ if (endpointName == "vibratoGain") return static_cast<uint32_t> (EndpointHandles::vibratoGain);
80
+ if (endpointName == "outGain") return static_cast<uint32_t> (EndpointHandles::outGain);
81
+ if (endpointName == "gate") return static_cast<uint32_t> (EndpointHandles::gate);
82
+ return 0;
83
+ }
84
+
85
+ static constexpr EndpointInfo inputEndpoints[] =
86
+ {
87
+ { 1, "freq", EndpointType::event },
88
+ { 2, "bend", EndpointType::event },
89
+ { 3, "gain", EndpointType::event },
90
+ { 4, "envAttack", EndpointType::event },
91
+ { 5, "sustain", EndpointType::event },
92
+ { 6, "reedStiffness", EndpointType::event },
93
+ { 7, "bellOpening", EndpointType::event },
94
+ { 8, "vibratoFreq", EndpointType::event },
95
+ { 9, "vibratoGain", EndpointType::event },
96
+ { 10, "outGain", EndpointType::event },
97
+ { 11, "gate", EndpointType::event }
98
+ };
99
+
100
+ static constexpr EndpointInfo outputEndpoints[] =
101
+ {
102
+ { 12, "out0", EndpointType::stream },
103
+ { 13, "out1", EndpointType::stream }
104
+ };
105
+
106
+ //==============================================================================
107
+ static constexpr uint32_t numAudioInputChannels = 0;
108
+ static constexpr uint32_t numAudioOutputChannels = 2;
109
+
110
+ static constexpr std::array outputAudioStreams
111
+ {
112
+ outputEndpoints[0],
113
+ outputEndpoints[1]
114
+ };
115
+
116
+ static constexpr std::array<EndpointInfo, 0> outputEvents {};
117
+
118
+ static constexpr std::array<EndpointInfo, 0> outputMIDIEvents {};
119
+
120
+ static constexpr std::array<EndpointInfo, 0> inputAudioStreams {};
121
+
122
+ static constexpr std::array inputEvents
123
+ {
124
+ inputEndpoints[0],
125
+ inputEndpoints[1],
126
+ inputEndpoints[2],
127
+ inputEndpoints[3],
128
+ inputEndpoints[4],
129
+ inputEndpoints[5],
130
+ inputEndpoints[6],
131
+ inputEndpoints[7],
132
+ inputEndpoints[8],
133
+ inputEndpoints[9],
134
+ inputEndpoints[10]
135
+ };
136
+
137
+ static constexpr std::array<EndpointInfo, 0> inputMIDIEvents {};
138
+
139
+ static constexpr std::array inputParameters
140
+ {
141
+ inputEndpoints[0],
142
+ inputEndpoints[1],
143
+ inputEndpoints[2],
144
+ inputEndpoints[3],
145
+ inputEndpoints[4],
146
+ inputEndpoints[5],
147
+ inputEndpoints[6],
148
+ inputEndpoints[7],
149
+ inputEndpoints[8],
150
+ inputEndpoints[9],
151
+ inputEndpoints[10]
152
+ };
153
+
154
+ static constexpr const char* programDetailsJSON = "{\n"
155
+ " \"mainProcessor\": \"HelloReverb\",\n"
156
+ " \"inputs\": [\n"
157
+ " {\n"
158
+ " \"endpointID\": \"freq\",\n"
159
+ " \"endpointType\": \"event\",\n"
160
+ " \"dataType\": {\n"
161
+ " \"type\": \"float32\"\n"
162
+ " },\n"
163
+ " \"annotation\": {\n"
164
+ " \"name\": \"freq\",\n"
165
+ " \"min\": 50,\n"
166
+ " \"max\": 1000,\n"
167
+ " \"init\": 440,\n"
168
+ " \"step\": 0.01\n"
169
+ " },\n"
170
+ " \"purpose\": \"parameter\"\n"
171
+ " },\n"
172
+ " {\n"
173
+ " \"endpointID\": \"bend\",\n"
174
+ " \"endpointType\": \"event\",\n"
175
+ " \"dataType\": {\n"
176
+ " \"type\": \"float32\"\n"
177
+ " },\n"
178
+ " \"annotation\": {\n"
179
+ " \"name\": \"bend\",\n"
180
+ " \"min\": -2,\n"
181
+ " \"max\": 2,\n"
182
+ " \"init\": 0,\n"
183
+ " \"step\": 0.01\n"
184
+ " },\n"
185
+ " \"purpose\": \"parameter\"\n"
186
+ " },\n"
187
+ " {\n"
188
+ " \"endpointID\": \"gain\",\n"
189
+ " \"endpointType\": \"event\",\n"
190
+ " \"dataType\": {\n"
191
+ " \"type\": \"float32\"\n"
192
+ " },\n"
193
+ " \"annotation\": {\n"
194
+ " \"name\": \"gain\",\n"
195
+ " \"min\": 0,\n"
196
+ " \"max\": 1,\n"
197
+ " \"init\": 0.6,\n"
198
+ " \"step\": 0.01\n"
199
+ " },\n"
200
+ " \"purpose\": \"parameter\"\n"
201
+ " },\n"
202
+ " {\n"
203
+ " \"endpointID\": \"envAttack\",\n"
204
+ " \"endpointType\": \"event\",\n"
205
+ " \"dataType\": {\n"
206
+ " \"type\": \"float32\"\n"
207
+ " },\n"
208
+ " \"annotation\": {\n"
209
+ " \"name\": \"envAttack\",\n"
210
+ " \"min\": 0,\n"
211
+ " \"max\": 30,\n"
212
+ " \"init\": 1,\n"
213
+ " \"step\": 0.01\n"
214
+ " },\n"
215
+ " \"purpose\": \"parameter\"\n"
216
+ " },\n"
217
+ " {\n"
218
+ " \"endpointID\": \"sustain\",\n"
219
+ " \"endpointType\": \"event\",\n"
220
+ " \"dataType\": {\n"
221
+ " \"type\": \"float32\"\n"
222
+ " },\n"
223
+ " \"annotation\": {\n"
224
+ " \"name\": \"sustain\",\n"
225
+ " \"min\": 0,\n"
226
+ " \"max\": 1,\n"
227
+ " \"init\": 0,\n"
228
+ " \"step\": 1\n"
229
+ " },\n"
230
+ " \"purpose\": \"parameter\"\n"
231
+ " },\n"
232
+ " {\n"
233
+ " \"endpointID\": \"reedStiffness\",\n"
234
+ " \"endpointType\": \"event\",\n"
235
+ " \"dataType\": {\n"
236
+ " \"type\": \"float32\"\n"
237
+ " },\n"
238
+ " \"annotation\": {\n"
239
+ " \"name\": \"reedStiffness\",\n"
240
+ " \"min\": 0,\n"
241
+ " \"max\": 1,\n"
242
+ " \"init\": 0.5,\n"
243
+ " \"step\": 0.01\n"
244
+ " },\n"
245
+ " \"purpose\": \"parameter\"\n"
246
+ " },\n"
247
+ " {\n"
248
+ " \"endpointID\": \"bellOpening\",\n"
249
+ " \"endpointType\": \"event\",\n"
250
+ " \"dataType\": {\n"
251
+ " \"type\": \"float32\"\n"
252
+ " },\n"
253
+ " \"annotation\": {\n"
254
+ " \"name\": \"bellOpening\",\n"
255
+ " \"min\": 0,\n"
256
+ " \"max\": 1,\n"
257
+ " \"init\": 0.5,\n"
258
+ " \"step\": 0.01\n"
259
+ " },\n"
260
+ " \"purpose\": \"parameter\"\n"
261
+ " },\n"
262
+ " {\n"
263
+ " \"endpointID\": \"vibratoFreq\",\n"
264
+ " \"endpointType\": \"event\",\n"
265
+ " \"dataType\": {\n"
266
+ " \"type\": \"float32\"\n"
267
+ " },\n"
268
+ " \"annotation\": {\n"
269
+ " \"name\": \"vibratoFreq\",\n"
270
+ " \"min\": 1,\n"
271
+ " \"max\": 10,\n"
272
+ " \"init\": 5,\n"
273
+ " \"step\": 0.01\n"
274
+ " },\n"
275
+ " \"purpose\": \"parameter\"\n"
276
+ " },\n"
277
+ " {\n"
278
+ " \"endpointID\": \"vibratoGain\",\n"
279
+ " \"endpointType\": \"event\",\n"
280
+ " \"dataType\": {\n"
281
+ " \"type\": \"float32\"\n"
282
+ " },\n"
283
+ " \"annotation\": {\n"
284
+ " \"name\": \"vibratoGain\",\n"
285
+ " \"min\": 0,\n"
286
+ " \"max\": 1,\n"
287
+ " \"init\": 0.25,\n"
288
+ " \"step\": 0.01\n"
289
+ " },\n"
290
+ " \"purpose\": \"parameter\"\n"
291
+ " },\n"
292
+ " {\n"
293
+ " \"endpointID\": \"outGain\",\n"
294
+ " \"endpointType\": \"event\",\n"
295
+ " \"dataType\": {\n"
296
+ " \"type\": \"float32\"\n"
297
+ " },\n"
298
+ " \"annotation\": {\n"
299
+ " \"name\": \"outGain\",\n"
300
+ " \"min\": 0,\n"
301
+ " \"max\": 1,\n"
302
+ " \"init\": 0.5,\n"
303
+ " \"step\": 0.01\n"
304
+ " },\n"
305
+ " \"purpose\": \"parameter\"\n"
306
+ " },\n"
307
+ " {\n"
308
+ " \"endpointID\": \"gate\",\n"
309
+ " \"endpointType\": \"event\",\n"
310
+ " \"dataType\": {\n"
311
+ " \"type\": \"float32\"\n"
312
+ " },\n"
313
+ " \"annotation\": {\n"
314
+ " \"name\": \"gate\",\n"
315
+ " \"text\": \"off|on\",\n"
316
+ " \"boolean\": true\n"
317
+ " },\n"
318
+ " \"purpose\": \"parameter\"\n"
319
+ " }\n"
320
+ " ],\n"
321
+ " \"outputs\": [\n"
322
+ " {\n"
323
+ " \"endpointID\": \"out0\",\n"
324
+ " \"endpointType\": \"stream\",\n"
325
+ " \"dataType\": {\n"
326
+ " \"type\": \"float32\"\n"
327
+ " },\n"
328
+ " \"purpose\": \"audio out\",\n"
329
+ " \"numAudioChannels\": 1\n"
330
+ " },\n"
331
+ " {\n"
332
+ " \"endpointID\": \"out1\",\n"
333
+ " \"endpointType\": \"stream\",\n"
334
+ " \"dataType\": {\n"
335
+ " \"type\": \"float32\"\n"
336
+ " },\n"
337
+ " \"purpose\": \"audio out\",\n"
338
+ " \"numAudioChannels\": 1\n"
339
+ " }\n"
340
+ " ]\n"
341
+ "}";
342
+
343
+ //==============================================================================
344
+ struct intrinsics;
345
+
346
+ using SizeType = int32_t;
347
+ using IndexType = int32_t;
348
+ using StringHandle = uint32_t;
349
+
350
+ struct Null
351
+ {
352
+ template <typename AnyType> operator AnyType() const { return {}; }
353
+ Null operator[] (IndexType) const { return {}; }
354
+ };
355
+
356
+ //==============================================================================
357
+ template <typename ElementType, SizeType numElements>
358
+ struct Array
359
+ {
360
+ Array() = default;
361
+ Array (Null) {}
362
+ Array (const Array&) = default;
363
+
364
+ template <typename ElementOrList>
365
+ Array (const ElementOrList& value) noexcept
366
+ {
367
+ if constexpr (std::is_convertible<ElementOrList, ElementType>::value)
368
+ {
369
+ for (IndexType i = 0; i < numElements; ++i)
370
+ this->elements[i] = static_cast<ElementType> (value);
371
+ }
372
+ else
373
+ {
374
+ for (IndexType i = 0; i < numElements; ++i)
375
+ this->elements[i] = static_cast<ElementType> (value[i]);
376
+ }
377
+ }
378
+
379
+ template <typename... Others>
380
+ Array (ElementType e0, ElementType e1, Others... others) noexcept
381
+ {
382
+ this->elements[0] = static_cast<ElementType> (e0);
383
+ this->elements[1] = static_cast<ElementType> (e1);
384
+
385
+ if constexpr (numElements > 2)
386
+ {
387
+ const ElementType initialisers[] = { static_cast<ElementType> (others)... };
388
+
389
+ for (size_t i = 0; i < sizeof...(others); ++i)
390
+ this->elements[i + 2] = initialisers[i];
391
+ }
392
+ }
393
+
394
+ Array (const ElementType* rawArray, size_t) noexcept
395
+ {
396
+ for (IndexType i = 0; i < numElements; ++i)
397
+ this->elements[i] = rawArray[i];
398
+ }
399
+
400
+ Array& operator= (const Array&) noexcept = default;
401
+ Array& operator= (Null) noexcept { this->clear(); return *this; }
402
+
403
+ template <typename ElementOrList>
404
+ Array& operator= (const ElementOrList& value) noexcept
405
+ {
406
+ if constexpr (std::is_convertible<ElementOrList, ElementType>::value)
407
+ {
408
+ for (IndexType i = 0; i < numElements; ++i)
409
+ this->elements[i] = static_cast<ElementType> (value);
410
+ }
411
+ else
412
+ {
413
+ for (IndexType i = 0; i < numElements; ++i)
414
+ this->elements[i] = static_cast<ElementType> (value[i]);
415
+ }
416
+ }
417
+
418
+ static constexpr SizeType size() { return numElements; }
419
+
420
+ const ElementType& operator[] (IndexType index) const noexcept { return this->elements[index]; }
421
+ ElementType& operator[] (IndexType index) noexcept { return this->elements[index]; }
422
+
423
+ void clear() noexcept
424
+ {
425
+ for (auto& element : elements)
426
+ element = ElementType();
427
+ }
428
+
429
+ void clear (SizeType numElementsToClear) noexcept
430
+ {
431
+ for (SizeType i = 0; i < numElementsToClear; ++i)
432
+ elements[i] = ElementType();
433
+ }
434
+
435
+ ElementType elements[numElements] = {};
436
+ };
437
+
438
+ //==============================================================================
439
+ template <typename ElementType, SizeType numElements>
440
+ struct Vector : public Array<ElementType, numElements>
441
+ {
442
+ Vector() = default;
443
+ Vector (Null) {}
444
+
445
+ template <typename ElementOrList>
446
+ Vector (const ElementOrList& value) noexcept : Array<ElementType, numElements> (value) {}
447
+
448
+ template <typename... Others>
449
+ Vector (ElementType e0, ElementType e1, Others... others) noexcept : Array<ElementType, numElements> (e0, e1, others...) {}
450
+
451
+ Vector (const ElementType* rawArray, size_t) noexcept : Array<ElementType, numElements> (rawArray, size_t()) {}
452
+
453
+ template <typename ElementOrList>
454
+ Vector& operator= (const ElementOrList& value) noexcept { return Array<ElementType, numElements>::operator= (value); }
455
+
456
+ Vector& operator= (Null) noexcept { this->clear(); return *this; }
457
+
458
+ operator ElementType() const noexcept
459
+ {
460
+ static_assert (numElements == 1);
461
+ return this->elements[0];
462
+ }
463
+
464
+ constexpr auto operator!() const noexcept { return performUnaryOp ([] (ElementType n) { return ! n; }); }
465
+ constexpr auto operator~() const noexcept { return performUnaryOp ([] (ElementType n) { return ~n; }); }
466
+ constexpr auto operator-() const noexcept { return performUnaryOp ([] (ElementType n) { return -n; }); }
467
+
468
+ constexpr auto operator+ (const Vector& rhs) const noexcept { return performBinaryOp (rhs, [] (ElementType a, ElementType b) { return a + b; }); }
469
+ constexpr auto operator- (const Vector& rhs) const noexcept { return performBinaryOp (rhs, [] (ElementType a, ElementType b) { return a - b; }); }
470
+ constexpr auto operator* (const Vector& rhs) const noexcept { return performBinaryOp (rhs, [] (ElementType a, ElementType b) { return a * b; }); }
471
+ constexpr auto operator/ (const Vector& rhs) const noexcept { return performBinaryOp (rhs, [] (ElementType a, ElementType b) { return a / b; }); }
472
+ constexpr auto operator% (const Vector& rhs) const noexcept { return performBinaryOp (rhs, [] (ElementType a, ElementType b) { return intrinsics::modulo (a, b); }); }
473
+
474
+ constexpr auto operator== (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a == b; }); }
475
+ constexpr auto operator!= (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a != b; }); }
476
+ constexpr auto operator< (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a < b; }); }
477
+ constexpr auto operator<= (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a <= b; }); }
478
+ constexpr auto operator> (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a > b; }); }
479
+ constexpr auto operator>= (const Vector& rhs) const noexcept { return performComparison (rhs, [] (ElementType a, ElementType b) { return a >= b; }); }
480
+
481
+ template <typename Functor>
482
+ constexpr Vector performUnaryOp (Functor&& f) const noexcept
483
+ {
484
+ Vector result;
485
+
486
+ for (IndexType i = 0; i < numElements; ++i)
487
+ result.elements[i] = f (this->elements[i]);
488
+
489
+ return result;
490
+ }
491
+
492
+ template <typename Functor>
493
+ constexpr Vector performBinaryOp (const Vector& rhs, Functor&& f) const noexcept
494
+ {
495
+ Vector result;
496
+
497
+ for (IndexType i = 0; i < numElements; ++i)
498
+ result.elements[i] = f (this->elements[i], rhs.elements[i]);
499
+
500
+ return result;
501
+ }
502
+
503
+ template <typename Functor>
504
+ constexpr Vector<bool, numElements> performComparison (const Vector& rhs, Functor&& f) const noexcept
505
+ {
506
+ Vector<bool, numElements> result;
507
+
508
+ for (IndexType i = 0; i < numElements; ++i)
509
+ result.elements[i] = f (this->elements[i], rhs.elements[i]);
510
+
511
+ return result;
512
+ }
513
+ };
514
+
515
+ //==============================================================================
516
+ template <typename ElementType>
517
+ struct Slice
518
+ {
519
+ Slice() = default;
520
+ Slice (Null) {}
521
+ Slice (ElementType* e, SizeType size) : elements (e), numElements (size) {}
522
+ Slice (const Slice&) = default;
523
+ Slice& operator= (const Slice&) = default;
524
+ template <typename ArrayType> Slice (const ArrayType& a) : elements (const_cast<ArrayType&> (a).elements), numElements (a.size()) {}
525
+ template <typename ArrayType> Slice (const ArrayType& a, SizeType offset, SizeType size) : elements (const_cast<ArrayType&> (a).elements + offset), numElements (size) {}
526
+
527
+ constexpr SizeType size() const { return numElements; }
528
+ ElementType operator[] (IndexType index) const noexcept { return numElements == 0 ? ElementType() : elements[index]; }
529
+ ElementType& operator[] (IndexType index) noexcept { return numElements == 0 ? emptyValue : elements[index]; }
530
+
531
+ Slice slice (IndexType start, IndexType end) noexcept { if (numElements == 0) return {}; return { elements + start, end }; }
532
+ Slice sliceFrom (IndexType start) noexcept { if (numElements == 0) return {}; return { elements + start, numElements - start }; }
533
+ Slice sliceUpTo (IndexType end) noexcept { if (numElements == 0) return {}; return { elements, end }; }
534
+
535
+ ElementType* elements = nullptr;
536
+ SizeType numElements = 0;
537
+
538
+ static inline ElementType emptyValue {};
539
+ };
540
+
541
+ //==============================================================================
542
+ #if __clang__
543
+ #pragma clang diagnostic push
544
+ #pragma clang diagnostic ignored "-Wunused-variable"
545
+ #pragma clang diagnostic ignored "-Wunused-parameter"
546
+ #pragma clang diagnostic ignored "-Wunused-label"
547
+
548
+ #if __clang_major__ >= 14
549
+ #pragma clang diagnostic ignored "-Wunused-but-set-variable"
550
+ #endif
551
+
552
+ #elif __GNUC__
553
+ #pragma GCC diagnostic push
554
+ #pragma GCC diagnostic ignored "-Wunused-variable"
555
+ #pragma GCC diagnostic ignored "-Wunused-parameter"
556
+ #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
557
+ #pragma GCC diagnostic ignored "-Wunused-label"
558
+ #else
559
+ #pragma warning (push, 0)
560
+ #pragma warning (disable: 4702)
561
+ #pragma warning (disable: 4706)
562
+ #endif
563
+
564
+ //==============================================================================
565
+ struct _HelloWorld_1_State
566
+ {
567
+ int32_t framesPerQuarterNote = {};
568
+ float phase = {};
569
+ int32_t i = {};
570
+ float phaseDelta = {};
571
+ int32_t _count = {};
572
+ int32_t _resumeIndex = {};
573
+ };
574
+
575
+ struct faust_reverb_1_State
576
+ {
577
+ int32_t fSampleRate = {};
578
+ float fConst0 = {};
579
+ float fConst1 = {};
580
+ float fVslider0 = {};
581
+ float fSlow0 = {};
582
+ float fConst2 = {};
583
+ Array<float, 2> fRec0;
584
+ int32_t IOTA0 = {};
585
+ Array<float, 16384> fVec0;
586
+ float fVslider1 = {};
587
+ float fSlow1 = {};
588
+ Array<float, 2> fRec1;
589
+ float fConst3 = {};
590
+ float fVslider2 = {};
591
+ float fSlow2 = {};
592
+ float fVslider3 = {};
593
+ float fSlow3 = {};
594
+ float fSlow4 = {};
595
+ float fSlow5 = {};
596
+ float fConst4 = {};
597
+ float fConst5 = {};
598
+ float fVslider4 = {};
599
+ float fSlow6 = {};
600
+ float fSlow7 = {};
601
+ float fVslider5 = {};
602
+ float fSlow8 = {};
603
+ float fSlow9 = {};
604
+ float fSlow10 = {};
605
+ float fSlow11 = {};
606
+ float fSlow12 = {};
607
+ float fSlow13 = {};
608
+ float fSlow14 = {};
609
+ float fVslider6 = {};
610
+ float fSlow15 = {};
611
+ float fSlow16 = {};
612
+ float fConst6 = {};
613
+ float fVslider7 = {};
614
+ float fSlow17 = {};
615
+ float fSlow18 = {};
616
+ float fSlow19 = {};
617
+ Array<float, 2> fRec15;
618
+ float fSlow20 = {};
619
+ Array<float, 2> fRec14;
620
+ Array<float, 32768> fVec1;
621
+ float fConst7 = {};
622
+ int32_t iConst8 = {};
623
+ Array<float, 16384> fVec2;
624
+ float fConst9 = {};
625
+ float fVslider8 = {};
626
+ int32_t iSlow21 = {};
627
+ Array<float, 2048> fVec3;
628
+ int32_t iConst10 = {};
629
+ Array<float, 2> fRec12;
630
+ float fConst11 = {};
631
+ float fConst12 = {};
632
+ float fSlow22 = {};
633
+ float fSlow23 = {};
634
+ float fSlow24 = {};
635
+ float fSlow25 = {};
636
+ float fSlow26 = {};
637
+ float fSlow27 = {};
638
+ float fSlow28 = {};
639
+ float fSlow29 = {};
640
+ Array<float, 2> fRec19;
641
+ float fSlow30 = {};
642
+ Array<float, 2> fRec18;
643
+ Array<float, 32768> fVec4;
644
+ float fConst13 = {};
645
+ int32_t iConst14 = {};
646
+ Array<float, 4096> fVec5;
647
+ int32_t iConst15 = {};
648
+ Array<float, 2> fRec16;
649
+ float fConst16 = {};
650
+ float fConst17 = {};
651
+ float fSlow31 = {};
652
+ float fSlow32 = {};
653
+ float fSlow33 = {};
654
+ float fSlow34 = {};
655
+ float fSlow35 = {};
656
+ float fSlow36 = {};
657
+ float fSlow37 = {};
658
+ float fSlow38 = {};
659
+ Array<float, 2> fRec23;
660
+ float fSlow39 = {};
661
+ Array<float, 2> fRec22;
662
+ Array<float, 16384> fVec6;
663
+ float fConst18 = {};
664
+ int32_t iConst19 = {};
665
+ Array<float, 4096> fVec7;
666
+ int32_t iConst20 = {};
667
+ Array<float, 2> fRec20;
668
+ float fConst21 = {};
669
+ float fConst22 = {};
670
+ float fSlow40 = {};
671
+ float fSlow41 = {};
672
+ float fSlow42 = {};
673
+ float fSlow43 = {};
674
+ float fSlow44 = {};
675
+ float fSlow45 = {};
676
+ float fSlow46 = {};
677
+ float fSlow47 = {};
678
+ Array<float, 2> fRec27;
679
+ float fSlow48 = {};
680
+ Array<float, 2> fRec26;
681
+ Array<float, 32768> fVec8;
682
+ float fConst23 = {};
683
+ int32_t iConst24 = {};
684
+ Array<float, 4096> fVec9;
685
+ int32_t iConst25 = {};
686
+ Array<float, 2> fRec24;
687
+ float fConst26 = {};
688
+ float fConst27 = {};
689
+ float fSlow49 = {};
690
+ float fSlow50 = {};
691
+ float fSlow51 = {};
692
+ float fSlow52 = {};
693
+ float fSlow53 = {};
694
+ float fSlow54 = {};
695
+ float fSlow55 = {};
696
+ float fSlow56 = {};
697
+ Array<float, 2> fRec31;
698
+ float fSlow57 = {};
699
+ Array<float, 2> fRec30;
700
+ Array<float, 16384> fVec10;
701
+ float fConst28 = {};
702
+ int32_t iConst29 = {};
703
+ Array<float, 2048> fVec11;
704
+ int32_t iConst30 = {};
705
+ Array<float, 2> fRec28;
706
+ float fConst31 = {};
707
+ float fConst32 = {};
708
+ float fSlow58 = {};
709
+ float fSlow59 = {};
710
+ float fSlow60 = {};
711
+ float fSlow61 = {};
712
+ float fSlow62 = {};
713
+ float fSlow63 = {};
714
+ float fSlow64 = {};
715
+ float fSlow65 = {};
716
+ Array<float, 2> fRec35;
717
+ float fSlow66 = {};
718
+ Array<float, 2> fRec34;
719
+ Array<float, 16384> fVec12;
720
+ float fConst33 = {};
721
+ int32_t iConst34 = {};
722
+ Array<float, 4096> fVec13;
723
+ int32_t iConst35 = {};
724
+ Array<float, 2> fRec32;
725
+ float fConst36 = {};
726
+ float fConst37 = {};
727
+ float fSlow67 = {};
728
+ float fSlow68 = {};
729
+ float fSlow69 = {};
730
+ float fSlow70 = {};
731
+ float fSlow71 = {};
732
+ float fSlow72 = {};
733
+ float fSlow73 = {};
734
+ float fSlow74 = {};
735
+ Array<float, 2> fRec39;
736
+ float fSlow75 = {};
737
+ Array<float, 2> fRec38;
738
+ Array<float, 16384> fVec14;
739
+ float fConst38 = {};
740
+ int32_t iConst39 = {};
741
+ Array<float, 4096> fVec15;
742
+ int32_t iConst40 = {};
743
+ Array<float, 2> fRec36;
744
+ float fConst41 = {};
745
+ float fConst42 = {};
746
+ float fSlow76 = {};
747
+ float fSlow77 = {};
748
+ float fSlow78 = {};
749
+ float fSlow79 = {};
750
+ float fSlow80 = {};
751
+ float fSlow81 = {};
752
+ float fSlow82 = {};
753
+ float fSlow83 = {};
754
+ Array<float, 2> fRec43;
755
+ float fSlow84 = {};
756
+ Array<float, 2> fRec42;
757
+ Array<float, 16384> fVec16;
758
+ float fConst43 = {};
759
+ int32_t iConst44 = {};
760
+ Array<float, 2048> fVec17;
761
+ int32_t iConst45 = {};
762
+ Array<float, 2> fRec40;
763
+ Array<float, 3> fRec4;
764
+ Array<float, 3> fRec5;
765
+ Array<float, 3> fRec6;
766
+ Array<float, 3> fRec7;
767
+ Array<float, 3> fRec8;
768
+ Array<float, 3> fRec9;
769
+ Array<float, 3> fRec10;
770
+ Array<float, 3> fRec11;
771
+ float fSlow85 = {};
772
+ Array<float, 3> fRec3;
773
+ float fVslider9 = {};
774
+ float fSlow86 = {};
775
+ float fVslider10 = {};
776
+ float fSlow87 = {};
777
+ float fSlow88 = {};
778
+ float fSlow89 = {};
779
+ float fSlow90 = {};
780
+ Array<float, 3> fRec2;
781
+ Array<float, 3> fRec45;
782
+ Array<float, 3> fRec44;
783
+ bool fUpdated = {};
784
+ int32_t _resumeIndex = {};
785
+ };
786
+
787
+ struct faust_echo_1_State
788
+ {
789
+ int32_t IOTA0 = {};
790
+ int32_t fSampleRate = {};
791
+ float fConst0 = {};
792
+ float fVslider0 = {};
793
+ int32_t iSlow0 = {};
794
+ Array<float, 2097152> fRec0;
795
+ Array<float, 2097152> fRec1;
796
+ bool fUpdated = {};
797
+ int32_t _resumeIndex = {};
798
+ };
799
+
800
+ struct faust_voice_1_State
801
+ {
802
+ float fHslider0 = {};
803
+ float fSlow0 = {};
804
+ Array<int32_t, 2> iRec6;
805
+ float fHslider1 = {};
806
+ float fSlow1 = {};
807
+ float fSlow2 = {};
808
+ Array<int32_t, 2> iVec0;
809
+ Array<float, 2> fRec12;
810
+ int32_t fSampleRate = {};
811
+ float fConst0 = {};
812
+ float fConst1 = {};
813
+ float fHslider2 = {};
814
+ float fSlow3 = {};
815
+ float fHslider3 = {};
816
+ float fSlow4 = {};
817
+ float fButton0 = {};
818
+ float fHslider4 = {};
819
+ float fSlow5 = {};
820
+ Array<float, 2> fVec1;
821
+ int32_t iSlow6 = {};
822
+ Array<float, 2> fRec13;
823
+ float fHslider5 = {};
824
+ float fSlow7 = {};
825
+ float fHslider6 = {};
826
+ float fHslider7 = {};
827
+ float fSlow8 = {};
828
+ int32_t iSlow9 = {};
829
+ float fConst2 = {};
830
+ float fSlow10 = {};
831
+ float fSlow11 = {};
832
+ Array<float, 2> fRec14;
833
+ float fHslider8 = {};
834
+ float fSlow12 = {};
835
+ Array<float, 2> fRec16;
836
+ float fConst3 = {};
837
+ float fConst4 = {};
838
+ float fConst5 = {};
839
+ float fConst6 = {};
840
+ Array<int32_t, 2> iRec20;
841
+ float fConst7 = {};
842
+ float fConst8 = {};
843
+ float fConst9 = {};
844
+ Array<float, 3> fRec19;
845
+ Array<float, 2> fRec17;
846
+ float fHslider9 = {};
847
+ float fSlow13 = {};
848
+ int32_t IOTA0 = {};
849
+ Array<float, 2048> fRec18;
850
+ float fConst10 = {};
851
+ Array<float, 2> fVec3;
852
+ Array<float, 2> fRec11;
853
+ Array<float, 2048> fRec2;
854
+ Array<float, 2> fRec0;
855
+ bool fUpdated = {};
856
+ Array<float, 65536> ftbl0voiceSIG0;
857
+ int32_t _resumeIndex = {};
858
+ };
859
+
860
+ struct _HelloReverb_State
861
+ {
862
+ int32_t _sessionID = {};
863
+ double _frequency = {};
864
+ _HelloWorld_1_State Hello;
865
+ faust_reverb_1_State Reverb;
866
+ faust_echo_1_State Echo;
867
+ faust_voice_1_State Clarinet;
868
+ };
869
+
870
+ struct HelloReverb_State
871
+ {
872
+ int32_t _currentFrame = {};
873
+ _HelloReverb_State _state;
874
+ };
875
+
876
+ struct faust_voice_1_voiceSIG0
877
+ {
878
+ Array<int32_t, 2> iVec2;
879
+ Array<int32_t, 2> iRec15;
880
+ };
881
+
882
+ struct HelloReverb_IO
883
+ {
884
+ Array<float, 512> out0;
885
+ Array<float, 512> out1;
886
+ };
887
+
888
+ struct _HelloReverb_IO
889
+ {
890
+ float out0 = {};
891
+ float out1 = {};
892
+ };
893
+
894
+ struct _HelloWorld_1_IO
895
+ {
896
+ float out = {};
897
+ };
898
+
899
+ struct faust_reverb_1_IO
900
+ {
901
+ float input0 = {};
902
+ float input1 = {};
903
+ float output0 = {};
904
+ float output1 = {};
905
+ };
906
+
907
+ struct faust_voice_1_IO
908
+ {
909
+ float output0 = {};
910
+ float output1 = {};
911
+ };
912
+
913
+ struct _HelloWorld_1_Note
914
+ {
915
+ int32_t pitch = {};
916
+ int32_t length = {};
917
+ };
918
+
919
+ using std_intrinsics_T = float;
920
+ using std_intrinsics_T_0 = float;
921
+ using std_intrinsics_T_1 = float;
922
+ using std_intrinsics_T_2 = float;
923
+ using std_intrinsics_T_3 = float;
924
+ using std_intrinsics_T_4 = float;
925
+ using std_intrinsics_T_5 = float;
926
+ using std_notes_T = int32_t;
927
+ using std_intrinsics_T_6 = float;
928
+ using std_intrinsics_T_7 = float;
929
+ using std_intrinsics_T_8 = float;
930
+ using std_intrinsics_T_9 = float;
931
+ using std_intrinsics_T_10 = int32_t;
932
+ using std_intrinsics_T_11 = int32_t;
933
+ using std_intrinsics_T_12 = float;
934
+
935
+ //==============================================================================
936
+ double getMaxFrequency() const
937
+ {
938
+ return 192000.0;
939
+ }
940
+
941
+ void initialise (int32_t sessionID, double frequency)
942
+ {
943
+ assert (frequency <= getMaxFrequency());
944
+ initSessionID = sessionID;
945
+ initFrequency = frequency;
946
+ reset();
947
+ }
948
+
949
+ void reset()
950
+ {
951
+ std::memset (&state, 0, sizeof (state));
952
+ int32_t processorID = 0;
953
+ _initialise (state, processorID, initSessionID, initFrequency);
954
+ }
955
+
956
+ void advance (int32_t frames)
957
+ {
958
+ io.out0.clear (static_cast<SizeType> (frames));
959
+ io.out1.clear (static_cast<SizeType> (frames));
960
+ _advance (state, io, frames);
961
+ }
962
+
963
+ void copyOutputValue (EndpointHandle endpointHandle, void* dest)
964
+ {
965
+ (void) endpointHandle; (void) dest;
966
+
967
+ assert (false);
968
+ }
969
+
970
+ void copyOutputFrames (EndpointHandle endpointHandle, void* dest, uint32_t numFramesToCopy)
971
+ {
972
+ if (endpointHandle == 12) { std::memcpy (dest, std::addressof (io.out0), 4 * numFramesToCopy); std::memset (std::addressof (io.out0), 0, 4 * numFramesToCopy); return; }
973
+ if (endpointHandle == 13) { std::memcpy (dest, std::addressof (io.out1), 4 * numFramesToCopy); std::memset (std::addressof (io.out1), 0, 4 * numFramesToCopy); return; }
974
+ assert (false);
975
+ }
976
+
977
+ uint32_t getNumOutputEvents (EndpointHandle endpointHandle)
978
+ {
979
+ (void) endpointHandle;
980
+
981
+ assert (false); return {};
982
+ }
983
+
984
+ void resetOutputEventCount (EndpointHandle endpointHandle)
985
+ {
986
+ (void) endpointHandle;
987
+ }
988
+
989
+ uint32_t getOutputEventType (EndpointHandle endpointHandle, uint32_t index)
990
+ {
991
+ (void) endpointHandle; (void) index;
992
+
993
+ assert (false); return {};
994
+ }
995
+
996
+ static uint32_t getOutputEventDataSize (EndpointHandle endpointHandle, uint32_t typeIndex)
997
+ {
998
+ (void) endpointHandle; (void) typeIndex;
999
+
1000
+ assert (false); return 0;
1001
+ }
1002
+
1003
+ uint32_t readOutputEvent (EndpointHandle endpointHandle, uint32_t index, unsigned char* dest)
1004
+ {
1005
+
1006
+ (void) endpointHandle; (void) index; (void) dest;
1007
+
1008
+ assert (false);
1009
+ return {};
1010
+ }
1011
+
1012
+ void addEvent_freq (float event)
1013
+ {
1014
+ _sendEvent_freq (state, event);
1015
+ }
1016
+
1017
+ void addEvent_gate (float event)
1018
+ {
1019
+ _sendEvent_gate (state, event);
1020
+ }
1021
+
1022
+ void addEvent (EndpointHandle endpointHandle, uint32_t typeIndex, const unsigned char* eventData)
1023
+ {
1024
+ (void) endpointHandle; (void) typeIndex; (void) eventData;
1025
+
1026
+ if (endpointHandle == 1)
1027
+ {
1028
+ float value;
1029
+ memcpy (&value, eventData, 4);
1030
+ eventData += 4;
1031
+ return addEvent_freq (value);
1032
+ }
1033
+
1034
+ if (endpointHandle == 11)
1035
+ {
1036
+ float value;
1037
+ memcpy (&value, eventData, 4);
1038
+ eventData += 4;
1039
+ return addEvent_gate (value);
1040
+ }
1041
+ }
1042
+
1043
+ void setValue (EndpointHandle endpointHandle, const void* value, int32_t frames)
1044
+ {
1045
+ (void) endpointHandle; (void) value; (void) frames;
1046
+ }
1047
+
1048
+ void setInputFrames (EndpointHandle endpointHandle, const void* frameData, uint32_t numFrames, uint32_t numTrailingFramesToClear)
1049
+ {
1050
+ (void) endpointHandle; (void) frameData; (void) numFrames; (void) numTrailingFramesToClear;
1051
+ }
1052
+
1053
+ //==============================================================================
1054
+ // Rendering state values
1055
+ int32_t initSessionID;
1056
+ double initFrequency;
1057
+ HelloReverb_State state = {};
1058
+ HelloReverb_IO io = {};
1059
+
1060
+ //==============================================================================
1061
+ void _sendEvent_freq (HelloReverb_State& _state, float value) noexcept
1062
+ {
1063
+ _HelloReverb__freq (_state._state, value);
1064
+ }
1065
+
1066
+ void _HelloReverb__freq (_HelloReverb_State& _state, float value) noexcept
1067
+ {
1068
+ faust__voice__freq (_state.Clarinet, value);
1069
+ }
1070
+
1071
+ void faust__voice__freq (faust_voice_1_State& _state, float val) noexcept
1072
+ {
1073
+ _state.fUpdated = (_state.fUpdated ? true : (_state.fHslider2 != val));
1074
+ _state.fHslider2 = val;
1075
+ }
1076
+
1077
+ void _sendEvent_gate (HelloReverb_State& _state, float value) noexcept
1078
+ {
1079
+ _HelloReverb__gate (_state._state, value);
1080
+ }
1081
+
1082
+ void _HelloReverb__gate (_HelloReverb_State& _state, float value) noexcept
1083
+ {
1084
+ faust__voice__gate (_state.Clarinet, value);
1085
+ }
1086
+
1087
+ void faust__voice__gate (faust_voice_1_State& _state, float val) noexcept
1088
+ {
1089
+ _state.fUpdated = (_state.fUpdated ? true : (_state.fButton0 != val));
1090
+ _state.fButton0 = val;
1091
+ }
1092
+
1093
+ void _initialise (HelloReverb_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
1094
+ {
1095
+ _HelloReverb___initialise (_state._state, processorID, sessionID, frequency);
1096
+ }
1097
+
1098
+ void _HelloReverb___initialise (_HelloReverb_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
1099
+ {
1100
+ _sessionID = sessionID;
1101
+ _frequency = frequency;
1102
+ HelloWorld___initialise (_state.Hello, processorID, sessionID, frequency);
1103
+ faust__reverb___initialise (_state.Reverb, processorID, sessionID, frequency);
1104
+ faust__echo___initialise (_state.Echo, processorID, sessionID, frequency);
1105
+ faust__voice___initialise (_state.Clarinet, processorID, sessionID, frequency);
1106
+ }
1107
+
1108
+ void HelloWorld___initialise (_HelloWorld_1_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
1109
+ {
1110
+ _sessionID = sessionID;
1111
+ _frequency = frequency;
1112
+ _state.framesPerQuarterNote = static_cast<int32_t> ((1.0 * _frequency) / static_cast<double> (7));
1113
+ }
1114
+
1115
+ void faust__reverb___initialise (faust_reverb_1_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
1116
+ {
1117
+ _sessionID = sessionID;
1118
+ _frequency = frequency;
1119
+ faust__reverb__init (_state);
1120
+ }
1121
+
1122
+ void faust__reverb__init (faust_reverb_1_State& _state) noexcept
1123
+ {
1124
+ int32_t sample_rate;
1125
+
1126
+ sample_rate = static_cast<int32_t> (1.0 * _frequency);
1127
+ faust__reverb__instanceInit (_state, sample_rate);
1128
+ }
1129
+
1130
+ void faust__reverb__instanceInit (faust_reverb_1_State& _state, int32_t sample_rate) noexcept
1131
+ {
1132
+ faust__reverb__classInit (sample_rate);
1133
+ faust__reverb__instanceConstants (_state, sample_rate);
1134
+ faust__reverb__instanceResetUserInterface (_state);
1135
+ faust__reverb__instanceClear (_state);
1136
+ }
1137
+
1138
+ void faust__reverb__classInit (int32_t sample_rate) noexcept
1139
+ {
1140
+ }
1141
+
1142
+ void faust__reverb__instanceConstants (faust_reverb_1_State& _state, int32_t sample_rate) noexcept
1143
+ {
1144
+ _state.fSampleRate = sample_rate;
1145
+ _state.fConst0 = intrinsics::min (192000.0f, intrinsics::max (1.0f, static_cast<float> (_state.fSampleRate)));
1146
+ _state.fConst1 = (44.1f / _state.fConst0);
1147
+ _state.fConst2 = (1.0f - _state.fConst1);
1148
+ _state.fConst3 = (6.2831855f / _state.fConst0);
1149
+ _state.fConst4 = intrinsics::floor ((0.219991f * _state.fConst0) + 0.5f);
1150
+ _state.fConst5 = (6.9077554f * (_state.fConst4 / _state.fConst0));
1151
+ _state.fConst6 = (3.1415927f / _state.fConst0);
1152
+ _state.fConst7 = intrinsics::floor ((0.019123f * _state.fConst0) + 0.5f);
1153
+ _state.iConst8 = static_cast<int32_t> (intrinsics::min (16384.0f, intrinsics::max (0.0f, _state.fConst4 - _state.fConst7)));
1154
+ _state.fConst9 = (0.001f * _state.fConst0);
1155
+ _state.iConst10 = static_cast<int32_t> (intrinsics::min (1024.0f, intrinsics::max (0.0f, _state.fConst7 + -1.0f)));
1156
+ _state.fConst11 = intrinsics::floor ((0.256891f * _state.fConst0) + 0.5f);
1157
+ _state.fConst12 = (6.9077554f * (_state.fConst11 / _state.fConst0));
1158
+ _state.fConst13 = intrinsics::floor ((0.027333f * _state.fConst0) + 0.5f);
1159
+ _state.iConst14 = static_cast<int32_t> (intrinsics::min (16384.0f, intrinsics::max (0.0f, _state.fConst11 - _state.fConst13)));
1160
+ _state.iConst15 = static_cast<int32_t> (intrinsics::min (2048.0f, intrinsics::max (0.0f, _state.fConst13 + -1.0f)));
1161
+ _state.fConst16 = intrinsics::floor ((0.192303f * _state.fConst0) + 0.5f);
1162
+ _state.fConst17 = (6.9077554f * (_state.fConst16 / _state.fConst0));
1163
+ _state.fConst18 = intrinsics::floor ((0.029291f * _state.fConst0) + 0.5f);
1164
+ _state.iConst19 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst16 - _state.fConst18)));
1165
+ _state.iConst20 = static_cast<int32_t> (intrinsics::min (2048.0f, intrinsics::max (0.0f, _state.fConst18 + -1.0f)));
1166
+ _state.fConst21 = intrinsics::floor ((0.210389f * _state.fConst0) + 0.5f);
1167
+ _state.fConst22 = (6.9077554f * (_state.fConst21 / _state.fConst0));
1168
+ _state.fConst23 = intrinsics::floor ((0.024421f * _state.fConst0) + 0.5f);
1169
+ _state.iConst24 = static_cast<int32_t> (intrinsics::min (16384.0f, intrinsics::max (0.0f, _state.fConst21 - _state.fConst23)));
1170
+ _state.iConst25 = static_cast<int32_t> (intrinsics::min (2048.0f, intrinsics::max (0.0f, _state.fConst23 + -1.0f)));
1171
+ _state.fConst26 = intrinsics::floor ((0.125f * _state.fConst0) + 0.5f);
1172
+ _state.fConst27 = (6.9077554f * (_state.fConst26 / _state.fConst0));
1173
+ _state.fConst28 = intrinsics::floor ((0.013458f * _state.fConst0) + 0.5f);
1174
+ _state.iConst29 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst26 - _state.fConst28)));
1175
+ _state.iConst30 = static_cast<int32_t> (intrinsics::min (1024.0f, intrinsics::max (0.0f, _state.fConst28 + -1.0f)));
1176
+ _state.fConst31 = intrinsics::floor ((0.127837f * _state.fConst0) + 0.5f);
1177
+ _state.fConst32 = (6.9077554f * (_state.fConst31 / _state.fConst0));
1178
+ _state.fConst33 = intrinsics::floor ((0.031604f * _state.fConst0) + 0.5f);
1179
+ _state.iConst34 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst31 - _state.fConst33)));
1180
+ _state.iConst35 = static_cast<int32_t> (intrinsics::min (2048.0f, intrinsics::max (0.0f, _state.fConst33 + -1.0f)));
1181
+ _state.fConst36 = intrinsics::floor ((0.174713f * _state.fConst0) + 0.5f);
1182
+ _state.fConst37 = (6.9077554f * (_state.fConst36 / _state.fConst0));
1183
+ _state.fConst38 = intrinsics::floor ((0.022904f * _state.fConst0) + 0.5f);
1184
+ _state.iConst39 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst36 - _state.fConst38)));
1185
+ _state.iConst40 = static_cast<int32_t> (intrinsics::min (2048.0f, intrinsics::max (0.0f, _state.fConst38 + -1.0f)));
1186
+ _state.fConst41 = intrinsics::floor ((0.153129f * _state.fConst0) + 0.5f);
1187
+ _state.fConst42 = (6.9077554f * (_state.fConst41 / _state.fConst0));
1188
+ _state.fConst43 = intrinsics::floor ((0.020346f * _state.fConst0) + 0.5f);
1189
+ _state.iConst44 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst41 - _state.fConst43)));
1190
+ _state.iConst45 = static_cast<int32_t> (intrinsics::min (1024.0f, intrinsics::max (0.0f, _state.fConst43 + -1.0f)));
1191
+ }
1192
+
1193
+ float std__intrinsics__min (float v1, float v2) noexcept
1194
+ {
1195
+ {
1196
+ return (v1 < v2) ? v1 : v2;
1197
+ }
1198
+ }
1199
+
1200
+ float std__intrinsics__max (float v1, float v2) noexcept
1201
+ {
1202
+ {
1203
+ return (v1 > v2) ? v1 : v2;
1204
+ }
1205
+ }
1206
+
1207
+ float std__intrinsics__floor (float n) noexcept
1208
+ {
1209
+ float rounded;
1210
+
1211
+ rounded = static_cast<float> (static_cast<int64_t> (n));
1212
+ if (rounded == n)
1213
+ {
1214
+ return n;
1215
+ }
1216
+ if (n >= static_cast<float> (0))
1217
+ {
1218
+ return rounded;
1219
+ }
1220
+ return rounded - static_cast<float> (1);
1221
+ }
1222
+
1223
+ void faust__reverb__instanceResetUserInterface (faust_reverb_1_State& _state) noexcept
1224
+ {
1225
+ _state.fUpdated = true;
1226
+ _state.fVslider0 = -20.0f;
1227
+ _state.fVslider1 = 0.0f;
1228
+ _state.fVslider2 = 315.0f;
1229
+ _state.fVslider3 = 0.0f;
1230
+ _state.fVslider4 = 2.0f;
1231
+ _state.fVslider5 = 6000.0f;
1232
+ _state.fVslider6 = 3.0f;
1233
+ _state.fVslider7 = 200.0f;
1234
+ _state.fVslider8 = 60.0f;
1235
+ _state.fVslider9 = 1500.0f;
1236
+ _state.fVslider10 = 0.0f;
1237
+ }
1238
+
1239
+ void faust__reverb__instanceClear (faust_reverb_1_State& _state) noexcept
1240
+ {
1241
+ int32_t l0;
1242
+ int32_t l1;
1243
+ int32_t l2;
1244
+ int32_t l3;
1245
+ int32_t l4;
1246
+ int32_t l5;
1247
+ int32_t l6;
1248
+ int32_t l7;
1249
+ int32_t l8;
1250
+ int32_t l9;
1251
+ int32_t l10;
1252
+ int32_t l11;
1253
+ int32_t l12;
1254
+ int32_t l13;
1255
+ int32_t l14;
1256
+ int32_t l15;
1257
+ int32_t l16;
1258
+ int32_t l17;
1259
+ int32_t l18;
1260
+ int32_t l19;
1261
+ int32_t l20;
1262
+ int32_t l21;
1263
+ int32_t l22;
1264
+ int32_t l23;
1265
+ int32_t l24;
1266
+ int32_t l25;
1267
+ int32_t l26;
1268
+ int32_t l27;
1269
+ int32_t l28;
1270
+ int32_t l29;
1271
+ int32_t l30;
1272
+ int32_t l31;
1273
+ int32_t l32;
1274
+ int32_t l33;
1275
+ int32_t l34;
1276
+ int32_t l35;
1277
+ int32_t l36;
1278
+ int32_t l37;
1279
+ int32_t l38;
1280
+ int32_t l39;
1281
+ int32_t l40;
1282
+ int32_t l41;
1283
+ int32_t l42;
1284
+ int32_t l43;
1285
+ int32_t l44;
1286
+ int32_t l45;
1287
+ int32_t l46;
1288
+ int32_t l47;
1289
+ int32_t l48;
1290
+ int32_t l49;
1291
+ int32_t l50;
1292
+ int32_t l51;
1293
+ int32_t l52;
1294
+ int32_t l53;
1295
+ int32_t l54;
1296
+ int32_t l55;
1297
+
1298
+ {
1299
+ l0 = 0;
1300
+ for (;;)
1301
+ {
1302
+ if (! (l0 < 2))
1303
+ {
1304
+ break;
1305
+ }
1306
+ _state.fRec0[l0 & 1] = 0.0f;
1307
+ {
1308
+ l0 = (l0 + 1);
1309
+ }
1310
+ }
1311
+ }
1312
+ _state.IOTA0 = 0;
1313
+ {
1314
+ l1 = 0;
1315
+ for (;;)
1316
+ {
1317
+ if (! (l1 < 16384))
1318
+ {
1319
+ break;
1320
+ }
1321
+ _state.fVec0[l1 & 16383] = 0.0f;
1322
+ {
1323
+ l1 = (l1 + 1);
1324
+ }
1325
+ }
1326
+ }
1327
+ {
1328
+ l2 = 0;
1329
+ for (;;)
1330
+ {
1331
+ if (! (l2 < 2))
1332
+ {
1333
+ break;
1334
+ }
1335
+ _state.fRec1[l2 & 1] = 0.0f;
1336
+ {
1337
+ l2 = (l2 + 1);
1338
+ }
1339
+ }
1340
+ }
1341
+ {
1342
+ l3 = 0;
1343
+ for (;;)
1344
+ {
1345
+ if (! (l3 < 2))
1346
+ {
1347
+ break;
1348
+ }
1349
+ _state.fRec15[l3 & 1] = 0.0f;
1350
+ {
1351
+ l3 = (l3 + 1);
1352
+ }
1353
+ }
1354
+ }
1355
+ {
1356
+ l4 = 0;
1357
+ for (;;)
1358
+ {
1359
+ if (! (l4 < 2))
1360
+ {
1361
+ break;
1362
+ }
1363
+ _state.fRec14[l4 & 1] = 0.0f;
1364
+ {
1365
+ l4 = (l4 + 1);
1366
+ }
1367
+ }
1368
+ }
1369
+ {
1370
+ l5 = 0;
1371
+ for (;;)
1372
+ {
1373
+ if (! (l5 < 32768))
1374
+ {
1375
+ break;
1376
+ }
1377
+ _state.fVec1[l5 & 32767] = 0.0f;
1378
+ {
1379
+ l5 = (l5 + 1);
1380
+ }
1381
+ }
1382
+ }
1383
+ {
1384
+ l6 = 0;
1385
+ for (;;)
1386
+ {
1387
+ if (! (l6 < 16384))
1388
+ {
1389
+ break;
1390
+ }
1391
+ _state.fVec2[l6 & 16383] = 0.0f;
1392
+ {
1393
+ l6 = (l6 + 1);
1394
+ }
1395
+ }
1396
+ }
1397
+ {
1398
+ l7 = 0;
1399
+ for (;;)
1400
+ {
1401
+ if (! (l7 < 2048))
1402
+ {
1403
+ break;
1404
+ }
1405
+ _state.fVec3[l7 & 2047] = 0.0f;
1406
+ {
1407
+ l7 = (l7 + 1);
1408
+ }
1409
+ }
1410
+ }
1411
+ {
1412
+ l8 = 0;
1413
+ for (;;)
1414
+ {
1415
+ if (! (l8 < 2))
1416
+ {
1417
+ break;
1418
+ }
1419
+ _state.fRec12[l8 & 1] = 0.0f;
1420
+ {
1421
+ l8 = (l8 + 1);
1422
+ }
1423
+ }
1424
+ }
1425
+ {
1426
+ l9 = 0;
1427
+ for (;;)
1428
+ {
1429
+ if (! (l9 < 2))
1430
+ {
1431
+ break;
1432
+ }
1433
+ _state.fRec19[l9 & 1] = 0.0f;
1434
+ {
1435
+ l9 = (l9 + 1);
1436
+ }
1437
+ }
1438
+ }
1439
+ {
1440
+ l10 = 0;
1441
+ for (;;)
1442
+ {
1443
+ if (! (l10 < 2))
1444
+ {
1445
+ break;
1446
+ }
1447
+ _state.fRec18[l10 & 1] = 0.0f;
1448
+ {
1449
+ l10 = (l10 + 1);
1450
+ }
1451
+ }
1452
+ }
1453
+ {
1454
+ l11 = 0;
1455
+ for (;;)
1456
+ {
1457
+ if (! (l11 < 32768))
1458
+ {
1459
+ break;
1460
+ }
1461
+ _state.fVec4[l11 & 32767] = 0.0f;
1462
+ {
1463
+ l11 = (l11 + 1);
1464
+ }
1465
+ }
1466
+ }
1467
+ {
1468
+ l12 = 0;
1469
+ for (;;)
1470
+ {
1471
+ if (! (l12 < 4096))
1472
+ {
1473
+ break;
1474
+ }
1475
+ _state.fVec5[l12 & 4095] = 0.0f;
1476
+ {
1477
+ l12 = (l12 + 1);
1478
+ }
1479
+ }
1480
+ }
1481
+ {
1482
+ l13 = 0;
1483
+ for (;;)
1484
+ {
1485
+ if (! (l13 < 2))
1486
+ {
1487
+ break;
1488
+ }
1489
+ _state.fRec16[l13 & 1] = 0.0f;
1490
+ {
1491
+ l13 = (l13 + 1);
1492
+ }
1493
+ }
1494
+ }
1495
+ {
1496
+ l14 = 0;
1497
+ for (;;)
1498
+ {
1499
+ if (! (l14 < 2))
1500
+ {
1501
+ break;
1502
+ }
1503
+ _state.fRec23[l14 & 1] = 0.0f;
1504
+ {
1505
+ l14 = (l14 + 1);
1506
+ }
1507
+ }
1508
+ }
1509
+ {
1510
+ l15 = 0;
1511
+ for (;;)
1512
+ {
1513
+ if (! (l15 < 2))
1514
+ {
1515
+ break;
1516
+ }
1517
+ _state.fRec22[l15 & 1] = 0.0f;
1518
+ {
1519
+ l15 = (l15 + 1);
1520
+ }
1521
+ }
1522
+ }
1523
+ {
1524
+ l16 = 0;
1525
+ for (;;)
1526
+ {
1527
+ if (! (l16 < 16384))
1528
+ {
1529
+ break;
1530
+ }
1531
+ _state.fVec6[l16 & 16383] = 0.0f;
1532
+ {
1533
+ l16 = (l16 + 1);
1534
+ }
1535
+ }
1536
+ }
1537
+ {
1538
+ l17 = 0;
1539
+ for (;;)
1540
+ {
1541
+ if (! (l17 < 4096))
1542
+ {
1543
+ break;
1544
+ }
1545
+ _state.fVec7[l17 & 4095] = 0.0f;
1546
+ {
1547
+ l17 = (l17 + 1);
1548
+ }
1549
+ }
1550
+ }
1551
+ {
1552
+ l18 = 0;
1553
+ for (;;)
1554
+ {
1555
+ if (! (l18 < 2))
1556
+ {
1557
+ break;
1558
+ }
1559
+ _state.fRec20[l18 & 1] = 0.0f;
1560
+ {
1561
+ l18 = (l18 + 1);
1562
+ }
1563
+ }
1564
+ }
1565
+ {
1566
+ l19 = 0;
1567
+ for (;;)
1568
+ {
1569
+ if (! (l19 < 2))
1570
+ {
1571
+ break;
1572
+ }
1573
+ _state.fRec27[l19 & 1] = 0.0f;
1574
+ {
1575
+ l19 = (l19 + 1);
1576
+ }
1577
+ }
1578
+ }
1579
+ {
1580
+ l20 = 0;
1581
+ for (;;)
1582
+ {
1583
+ if (! (l20 < 2))
1584
+ {
1585
+ break;
1586
+ }
1587
+ _state.fRec26[l20 & 1] = 0.0f;
1588
+ {
1589
+ l20 = (l20 + 1);
1590
+ }
1591
+ }
1592
+ }
1593
+ {
1594
+ l21 = 0;
1595
+ for (;;)
1596
+ {
1597
+ if (! (l21 < 32768))
1598
+ {
1599
+ break;
1600
+ }
1601
+ _state.fVec8[l21 & 32767] = 0.0f;
1602
+ {
1603
+ l21 = (l21 + 1);
1604
+ }
1605
+ }
1606
+ }
1607
+ {
1608
+ l22 = 0;
1609
+ for (;;)
1610
+ {
1611
+ if (! (l22 < 4096))
1612
+ {
1613
+ break;
1614
+ }
1615
+ _state.fVec9[l22 & 4095] = 0.0f;
1616
+ {
1617
+ l22 = (l22 + 1);
1618
+ }
1619
+ }
1620
+ }
1621
+ {
1622
+ l23 = 0;
1623
+ for (;;)
1624
+ {
1625
+ if (! (l23 < 2))
1626
+ {
1627
+ break;
1628
+ }
1629
+ _state.fRec24[l23 & 1] = 0.0f;
1630
+ {
1631
+ l23 = (l23 + 1);
1632
+ }
1633
+ }
1634
+ }
1635
+ {
1636
+ l24 = 0;
1637
+ for (;;)
1638
+ {
1639
+ if (! (l24 < 2))
1640
+ {
1641
+ break;
1642
+ }
1643
+ _state.fRec31[l24 & 1] = 0.0f;
1644
+ {
1645
+ l24 = (l24 + 1);
1646
+ }
1647
+ }
1648
+ }
1649
+ {
1650
+ l25 = 0;
1651
+ for (;;)
1652
+ {
1653
+ if (! (l25 < 2))
1654
+ {
1655
+ break;
1656
+ }
1657
+ _state.fRec30[l25 & 1] = 0.0f;
1658
+ {
1659
+ l25 = (l25 + 1);
1660
+ }
1661
+ }
1662
+ }
1663
+ {
1664
+ l26 = 0;
1665
+ for (;;)
1666
+ {
1667
+ if (! (l26 < 16384))
1668
+ {
1669
+ break;
1670
+ }
1671
+ _state.fVec10[l26 & 16383] = 0.0f;
1672
+ {
1673
+ l26 = (l26 + 1);
1674
+ }
1675
+ }
1676
+ }
1677
+ {
1678
+ l27 = 0;
1679
+ for (;;)
1680
+ {
1681
+ if (! (l27 < 2048))
1682
+ {
1683
+ break;
1684
+ }
1685
+ _state.fVec11[l27 & 2047] = 0.0f;
1686
+ {
1687
+ l27 = (l27 + 1);
1688
+ }
1689
+ }
1690
+ }
1691
+ {
1692
+ l28 = 0;
1693
+ for (;;)
1694
+ {
1695
+ if (! (l28 < 2))
1696
+ {
1697
+ break;
1698
+ }
1699
+ _state.fRec28[l28 & 1] = 0.0f;
1700
+ {
1701
+ l28 = (l28 + 1);
1702
+ }
1703
+ }
1704
+ }
1705
+ {
1706
+ l29 = 0;
1707
+ for (;;)
1708
+ {
1709
+ if (! (l29 < 2))
1710
+ {
1711
+ break;
1712
+ }
1713
+ _state.fRec35[l29 & 1] = 0.0f;
1714
+ {
1715
+ l29 = (l29 + 1);
1716
+ }
1717
+ }
1718
+ }
1719
+ {
1720
+ l30 = 0;
1721
+ for (;;)
1722
+ {
1723
+ if (! (l30 < 2))
1724
+ {
1725
+ break;
1726
+ }
1727
+ _state.fRec34[l30 & 1] = 0.0f;
1728
+ {
1729
+ l30 = (l30 + 1);
1730
+ }
1731
+ }
1732
+ }
1733
+ {
1734
+ l31 = 0;
1735
+ for (;;)
1736
+ {
1737
+ if (! (l31 < 16384))
1738
+ {
1739
+ break;
1740
+ }
1741
+ _state.fVec12[l31 & 16383] = 0.0f;
1742
+ {
1743
+ l31 = (l31 + 1);
1744
+ }
1745
+ }
1746
+ }
1747
+ {
1748
+ l32 = 0;
1749
+ for (;;)
1750
+ {
1751
+ if (! (l32 < 4096))
1752
+ {
1753
+ break;
1754
+ }
1755
+ _state.fVec13[l32 & 4095] = 0.0f;
1756
+ {
1757
+ l32 = (l32 + 1);
1758
+ }
1759
+ }
1760
+ }
1761
+ {
1762
+ l33 = 0;
1763
+ for (;;)
1764
+ {
1765
+ if (! (l33 < 2))
1766
+ {
1767
+ break;
1768
+ }
1769
+ _state.fRec32[l33 & 1] = 0.0f;
1770
+ {
1771
+ l33 = (l33 + 1);
1772
+ }
1773
+ }
1774
+ }
1775
+ {
1776
+ l34 = 0;
1777
+ for (;;)
1778
+ {
1779
+ if (! (l34 < 2))
1780
+ {
1781
+ break;
1782
+ }
1783
+ _state.fRec39[l34 & 1] = 0.0f;
1784
+ {
1785
+ l34 = (l34 + 1);
1786
+ }
1787
+ }
1788
+ }
1789
+ {
1790
+ l35 = 0;
1791
+ for (;;)
1792
+ {
1793
+ if (! (l35 < 2))
1794
+ {
1795
+ break;
1796
+ }
1797
+ _state.fRec38[l35 & 1] = 0.0f;
1798
+ {
1799
+ l35 = (l35 + 1);
1800
+ }
1801
+ }
1802
+ }
1803
+ {
1804
+ l36 = 0;
1805
+ for (;;)
1806
+ {
1807
+ if (! (l36 < 16384))
1808
+ {
1809
+ break;
1810
+ }
1811
+ _state.fVec14[l36 & 16383] = 0.0f;
1812
+ {
1813
+ l36 = (l36 + 1);
1814
+ }
1815
+ }
1816
+ }
1817
+ {
1818
+ l37 = 0;
1819
+ for (;;)
1820
+ {
1821
+ if (! (l37 < 4096))
1822
+ {
1823
+ break;
1824
+ }
1825
+ _state.fVec15[l37 & 4095] = 0.0f;
1826
+ {
1827
+ l37 = (l37 + 1);
1828
+ }
1829
+ }
1830
+ }
1831
+ {
1832
+ l38 = 0;
1833
+ for (;;)
1834
+ {
1835
+ if (! (l38 < 2))
1836
+ {
1837
+ break;
1838
+ }
1839
+ _state.fRec36[l38 & 1] = 0.0f;
1840
+ {
1841
+ l38 = (l38 + 1);
1842
+ }
1843
+ }
1844
+ }
1845
+ {
1846
+ l39 = 0;
1847
+ for (;;)
1848
+ {
1849
+ if (! (l39 < 2))
1850
+ {
1851
+ break;
1852
+ }
1853
+ _state.fRec43[l39 & 1] = 0.0f;
1854
+ {
1855
+ l39 = (l39 + 1);
1856
+ }
1857
+ }
1858
+ }
1859
+ {
1860
+ l40 = 0;
1861
+ for (;;)
1862
+ {
1863
+ if (! (l40 < 2))
1864
+ {
1865
+ break;
1866
+ }
1867
+ _state.fRec42[l40 & 1] = 0.0f;
1868
+ {
1869
+ l40 = (l40 + 1);
1870
+ }
1871
+ }
1872
+ }
1873
+ {
1874
+ l41 = 0;
1875
+ for (;;)
1876
+ {
1877
+ if (! (l41 < 16384))
1878
+ {
1879
+ break;
1880
+ }
1881
+ _state.fVec16[l41 & 16383] = 0.0f;
1882
+ {
1883
+ l41 = (l41 + 1);
1884
+ }
1885
+ }
1886
+ }
1887
+ {
1888
+ l42 = 0;
1889
+ for (;;)
1890
+ {
1891
+ if (! (l42 < 2048))
1892
+ {
1893
+ break;
1894
+ }
1895
+ _state.fVec17[l42 & 2047] = 0.0f;
1896
+ {
1897
+ l42 = (l42 + 1);
1898
+ }
1899
+ }
1900
+ }
1901
+ {
1902
+ l43 = 0;
1903
+ for (;;)
1904
+ {
1905
+ if (! (l43 < 2))
1906
+ {
1907
+ break;
1908
+ }
1909
+ _state.fRec40[l43 & 1] = 0.0f;
1910
+ {
1911
+ l43 = (l43 + 1);
1912
+ }
1913
+ }
1914
+ }
1915
+ {
1916
+ l44 = 0;
1917
+ for (;;)
1918
+ {
1919
+ if (! (l44 < 3))
1920
+ {
1921
+ break;
1922
+ }
1923
+ _state.fRec4[std__intrinsics___wrap_3 (l44)] = 0.0f;
1924
+ {
1925
+ l44 = (l44 + 1);
1926
+ }
1927
+ }
1928
+ }
1929
+ {
1930
+ l45 = 0;
1931
+ for (;;)
1932
+ {
1933
+ if (! (l45 < 3))
1934
+ {
1935
+ break;
1936
+ }
1937
+ _state.fRec5[std__intrinsics___wrap_3 (l45)] = 0.0f;
1938
+ {
1939
+ l45 = (l45 + 1);
1940
+ }
1941
+ }
1942
+ }
1943
+ {
1944
+ l46 = 0;
1945
+ for (;;)
1946
+ {
1947
+ if (! (l46 < 3))
1948
+ {
1949
+ break;
1950
+ }
1951
+ _state.fRec6[std__intrinsics___wrap_3 (l46)] = 0.0f;
1952
+ {
1953
+ l46 = (l46 + 1);
1954
+ }
1955
+ }
1956
+ }
1957
+ {
1958
+ l47 = 0;
1959
+ for (;;)
1960
+ {
1961
+ if (! (l47 < 3))
1962
+ {
1963
+ break;
1964
+ }
1965
+ _state.fRec7[std__intrinsics___wrap_3 (l47)] = 0.0f;
1966
+ {
1967
+ l47 = (l47 + 1);
1968
+ }
1969
+ }
1970
+ }
1971
+ {
1972
+ l48 = 0;
1973
+ for (;;)
1974
+ {
1975
+ if (! (l48 < 3))
1976
+ {
1977
+ break;
1978
+ }
1979
+ _state.fRec8[std__intrinsics___wrap_3 (l48)] = 0.0f;
1980
+ {
1981
+ l48 = (l48 + 1);
1982
+ }
1983
+ }
1984
+ }
1985
+ {
1986
+ l49 = 0;
1987
+ for (;;)
1988
+ {
1989
+ if (! (l49 < 3))
1990
+ {
1991
+ break;
1992
+ }
1993
+ _state.fRec9[std__intrinsics___wrap_3 (l49)] = 0.0f;
1994
+ {
1995
+ l49 = (l49 + 1);
1996
+ }
1997
+ }
1998
+ }
1999
+ {
2000
+ l50 = 0;
2001
+ for (;;)
2002
+ {
2003
+ if (! (l50 < 3))
2004
+ {
2005
+ break;
2006
+ }
2007
+ _state.fRec10[std__intrinsics___wrap_3 (l50)] = 0.0f;
2008
+ {
2009
+ l50 = (l50 + 1);
2010
+ }
2011
+ }
2012
+ }
2013
+ {
2014
+ l51 = 0;
2015
+ for (;;)
2016
+ {
2017
+ if (! (l51 < 3))
2018
+ {
2019
+ break;
2020
+ }
2021
+ _state.fRec11[std__intrinsics___wrap_3 (l51)] = 0.0f;
2022
+ {
2023
+ l51 = (l51 + 1);
2024
+ }
2025
+ }
2026
+ }
2027
+ {
2028
+ l52 = 0;
2029
+ for (;;)
2030
+ {
2031
+ if (! (l52 < 3))
2032
+ {
2033
+ break;
2034
+ }
2035
+ _state.fRec3[std__intrinsics___wrap_3 (l52)] = 0.0f;
2036
+ {
2037
+ l52 = (l52 + 1);
2038
+ }
2039
+ }
2040
+ }
2041
+ {
2042
+ l53 = 0;
2043
+ for (;;)
2044
+ {
2045
+ if (! (l53 < 3))
2046
+ {
2047
+ break;
2048
+ }
2049
+ _state.fRec2[std__intrinsics___wrap_3 (l53)] = 0.0f;
2050
+ {
2051
+ l53 = (l53 + 1);
2052
+ }
2053
+ }
2054
+ }
2055
+ {
2056
+ l54 = 0;
2057
+ for (;;)
2058
+ {
2059
+ if (! (l54 < 3))
2060
+ {
2061
+ break;
2062
+ }
2063
+ _state.fRec45[std__intrinsics___wrap_3 (l54)] = 0.0f;
2064
+ {
2065
+ l54 = (l54 + 1);
2066
+ }
2067
+ }
2068
+ }
2069
+ {
2070
+ l55 = 0;
2071
+ for (;;)
2072
+ {
2073
+ if (! (l55 < 3))
2074
+ {
2075
+ break;
2076
+ }
2077
+ _state.fRec44[std__intrinsics___wrap_3 (l55)] = 0.0f;
2078
+ {
2079
+ l55 = (l55 + 1);
2080
+ }
2081
+ }
2082
+ }
2083
+ }
2084
+
2085
+ int32_t std__intrinsics___wrap_3 (int32_t n) noexcept
2086
+ {
2087
+ int32_t x;
2088
+
2089
+ x = intrinsics::modulo (n, 3);
2090
+ return (x < 0) ? (x + 3) : x;
2091
+ }
2092
+
2093
+ void faust__echo___initialise (faust_echo_1_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
2094
+ {
2095
+ _sessionID = sessionID;
2096
+ _frequency = frequency;
2097
+ faust__echo__init (_state);
2098
+ }
2099
+
2100
+ void faust__echo__init (faust_echo_1_State& _state) noexcept
2101
+ {
2102
+ int32_t sample_rate;
2103
+
2104
+ sample_rate = static_cast<int32_t> (1.0 * _frequency);
2105
+ faust__echo__instanceInit (_state, sample_rate);
2106
+ }
2107
+
2108
+ void faust__echo__instanceInit (faust_echo_1_State& _state, int32_t sample_rate) noexcept
2109
+ {
2110
+ faust__echo__classInit (sample_rate);
2111
+ faust__echo__instanceConstants (_state, sample_rate);
2112
+ faust__echo__instanceResetUserInterface (_state);
2113
+ faust__echo__instanceClear (_state);
2114
+ }
2115
+
2116
+ void faust__echo__classInit (int32_t sample_rate) noexcept
2117
+ {
2118
+ }
2119
+
2120
+ void faust__echo__instanceConstants (faust_echo_1_State& _state, int32_t sample_rate) noexcept
2121
+ {
2122
+ _state.fSampleRate = sample_rate;
2123
+ _state.fConst0 = intrinsics::min (192000.0f, intrinsics::max (1.0f, static_cast<float> (_state.fSampleRate)));
2124
+ }
2125
+
2126
+ void faust__echo__instanceResetUserInterface (faust_echo_1_State& _state) noexcept
2127
+ {
2128
+ _state.fUpdated = true;
2129
+ _state.fVslider0 = 2.7f;
2130
+ }
2131
+
2132
+ void faust__echo__instanceClear (faust_echo_1_State& _state) noexcept
2133
+ {
2134
+ int32_t l0;
2135
+ int32_t l1;
2136
+
2137
+ _state.IOTA0 = 0;
2138
+ {
2139
+ l0 = 0;
2140
+ for (;;)
2141
+ {
2142
+ if (! (l0 < 0x200000))
2143
+ {
2144
+ break;
2145
+ }
2146
+ _state.fRec0[l0 & 0x1fffff] = 0.0f;
2147
+ {
2148
+ l0 = (l0 + 1);
2149
+ }
2150
+ }
2151
+ }
2152
+ {
2153
+ l1 = 0;
2154
+ for (;;)
2155
+ {
2156
+ if (! (l1 < 0x200000))
2157
+ {
2158
+ break;
2159
+ }
2160
+ _state.fRec1[l1 & 0x1fffff] = 0.0f;
2161
+ {
2162
+ l1 = (l1 + 1);
2163
+ }
2164
+ }
2165
+ }
2166
+ }
2167
+
2168
+ void faust__voice___initialise (faust_voice_1_State& _state, int32_t& processorID, int32_t sessionID, double frequency) noexcept
2169
+ {
2170
+ _sessionID = sessionID;
2171
+ _frequency = frequency;
2172
+ faust__voice__init (_state);
2173
+ }
2174
+
2175
+ void faust__voice__init (faust_voice_1_State& _state) noexcept
2176
+ {
2177
+ int32_t sample_rate;
2178
+
2179
+ sample_rate = static_cast<int32_t> (1.0 * _frequency);
2180
+ faust__voice__instanceInit (_state, sample_rate);
2181
+ }
2182
+
2183
+ void faust__voice__instanceInit (faust_voice_1_State& _state, int32_t sample_rate) noexcept
2184
+ {
2185
+ faust__voice__classInit (_state, sample_rate);
2186
+ faust__voice__instanceConstants (_state, sample_rate);
2187
+ faust__voice__instanceResetUserInterface (_state);
2188
+ faust__voice__instanceClear (_state);
2189
+ }
2190
+
2191
+ void faust__voice__classInit (faust_voice_1_State& _state, int32_t sample_rate) noexcept
2192
+ {
2193
+ faust_voice_1_voiceSIG0 sig0;
2194
+
2195
+ sig0 = faust__voice__newvoiceSIG0();
2196
+ faust__voice__instanceInitvoiceSIG0 (sig0, sample_rate);
2197
+ faust__voice__fillvoiceSIG0_65536 (sig0, 0x10000, _state.ftbl0voiceSIG0);
2198
+ faust__voice__deletevoiceSIG0 (sig0);
2199
+ }
2200
+
2201
+ faust_voice_1_voiceSIG0 faust__voice__newvoiceSIG0() noexcept
2202
+ {
2203
+ faust_voice_1_voiceSIG0 obj;
2204
+
2205
+ obj = faust_voice_1_voiceSIG0 {};
2206
+ return obj;
2207
+ }
2208
+
2209
+ void faust__voice__instanceInitvoiceSIG0 (faust_voice_1_voiceSIG0& this_, int32_t sample_rate) noexcept
2210
+ {
2211
+ int32_t l6;
2212
+ int32_t l7;
2213
+
2214
+ {
2215
+ l6 = 0;
2216
+ for (;;)
2217
+ {
2218
+ if (! (l6 < 2))
2219
+ {
2220
+ break;
2221
+ }
2222
+ this_.iVec2[l6 & 1] = 0;
2223
+ {
2224
+ l6 = (l6 + 1);
2225
+ }
2226
+ }
2227
+ }
2228
+ {
2229
+ l7 = 0;
2230
+ for (;;)
2231
+ {
2232
+ if (! (l7 < 2))
2233
+ {
2234
+ break;
2235
+ }
2236
+ this_.iRec15[l7 & 1] = 0;
2237
+ {
2238
+ l7 = (l7 + 1);
2239
+ }
2240
+ }
2241
+ }
2242
+ }
2243
+
2244
+ void faust__voice__fillvoiceSIG0_65536 (faust_voice_1_voiceSIG0& this_, int32_t count, Array<float, 65536>& table) noexcept
2245
+ {
2246
+ int32_t i1;
2247
+
2248
+ {
2249
+ i1 = 0;
2250
+ for (;;)
2251
+ {
2252
+ if (! (i1 < count))
2253
+ {
2254
+ break;
2255
+ }
2256
+ this_.iVec2[0] = 1;
2257
+ this_.iRec15[0] = intrinsics::modulo (this_.iVec2[1] + this_.iRec15[1], 0x10000);
2258
+ table[i1 & 65535] = intrinsics::sin (0.0000958738f * static_cast<float> (this_.iRec15[0]));
2259
+ this_.iVec2[1] = this_.iVec2[0];
2260
+ this_.iRec15[1] = this_.iRec15[0];
2261
+ {
2262
+ i1 = (i1 + 1);
2263
+ }
2264
+ }
2265
+ }
2266
+ }
2267
+
2268
+ float std__intrinsics__sin (float n) noexcept
2269
+ {
2270
+ {
2271
+ return 0.0f;
2272
+ }
2273
+ }
2274
+
2275
+ void faust__voice__deletevoiceSIG0 (faust_voice_1_voiceSIG0& this_) noexcept
2276
+ {
2277
+ }
2278
+
2279
+ void faust__voice__instanceConstants (faust_voice_1_State& _state, int32_t sample_rate) noexcept
2280
+ {
2281
+ _state.fSampleRate = sample_rate;
2282
+ _state.fConst0 = intrinsics::min (192000.0f, intrinsics::max (1.0f, static_cast<float> (_state.fSampleRate)));
2283
+ _state.fConst1 = (0.0014705883f * _state.fConst0);
2284
+ _state.fConst2 = (1.0f / _state.fConst0);
2285
+ _state.fConst3 = intrinsics::tan (6283.1855f / _state.fConst0);
2286
+ _state.fConst4 = (1.0f / _state.fConst3);
2287
+ _state.fConst5 = (((_state.fConst4 + 1.4142135f) / _state.fConst3) + 1.0f);
2288
+ _state.fConst6 = (0.05f / _state.fConst5);
2289
+ _state.fConst7 = (1.0f / _state.fConst5);
2290
+ _state.fConst8 = (((_state.fConst4 + -1.4142135f) / _state.fConst3) + 1.0f);
2291
+ _state.fConst9 = (2.0f * (1.0f - (1.0f / intrinsics::pow (_state.fConst3, 2.0f))));
2292
+ _state.fConst10 = (0.00882353f * _state.fConst0);
2293
+ }
2294
+
2295
+ float std__intrinsics__tan (float n) noexcept
2296
+ {
2297
+ {
2298
+ return intrinsics::sin (n) / intrinsics::cos (n);
2299
+ }
2300
+ }
2301
+
2302
+ float std__intrinsics__cos (float n) noexcept
2303
+ {
2304
+ {
2305
+ return 0.0f;
2306
+ }
2307
+ }
2308
+
2309
+ float std__intrinsics__pow (float a, float b) noexcept
2310
+ {
2311
+ {
2312
+ return 0.0f;
2313
+ }
2314
+ }
2315
+
2316
+ void faust__voice__instanceResetUserInterface (faust_voice_1_State& _state) noexcept
2317
+ {
2318
+ _state.fUpdated = true;
2319
+ _state.fHslider0 = 0.5f;
2320
+ _state.fHslider1 = 0.5f;
2321
+ _state.fHslider2 = 440.0f;
2322
+ _state.fHslider3 = 0.0f;
2323
+ _state.fButton0 = 0.0f;
2324
+ _state.fHslider4 = 0.0f;
2325
+ _state.fHslider5 = 0.25f;
2326
+ _state.fHslider6 = 0.6f;
2327
+ _state.fHslider7 = 1.0f;
2328
+ _state.fHslider8 = 5.0f;
2329
+ _state.fHslider9 = 0.5f;
2330
+ }
2331
+
2332
+ void faust__voice__instanceClear (faust_voice_1_State& _state) noexcept
2333
+ {
2334
+ int32_t l0;
2335
+ int32_t l1;
2336
+ int32_t l2;
2337
+ int32_t l3;
2338
+ int32_t l4;
2339
+ int32_t l5;
2340
+ int32_t l8;
2341
+ int32_t l9;
2342
+ int32_t l10;
2343
+ int32_t l11;
2344
+ int32_t l12;
2345
+ int32_t l13;
2346
+ int32_t l14;
2347
+ int32_t l15;
2348
+ int32_t l16;
2349
+
2350
+ {
2351
+ l0 = 0;
2352
+ for (;;)
2353
+ {
2354
+ if (! (l0 < 2))
2355
+ {
2356
+ break;
2357
+ }
2358
+ _state.iRec6[l0 & 1] = 0;
2359
+ {
2360
+ l0 = (l0 + 1);
2361
+ }
2362
+ }
2363
+ }
2364
+ {
2365
+ l1 = 0;
2366
+ for (;;)
2367
+ {
2368
+ if (! (l1 < 2))
2369
+ {
2370
+ break;
2371
+ }
2372
+ _state.iVec0[l1 & 1] = 0;
2373
+ {
2374
+ l1 = (l1 + 1);
2375
+ }
2376
+ }
2377
+ }
2378
+ {
2379
+ l2 = 0;
2380
+ for (;;)
2381
+ {
2382
+ if (! (l2 < 2))
2383
+ {
2384
+ break;
2385
+ }
2386
+ _state.fRec12[l2 & 1] = 0.0f;
2387
+ {
2388
+ l2 = (l2 + 1);
2389
+ }
2390
+ }
2391
+ }
2392
+ {
2393
+ l3 = 0;
2394
+ for (;;)
2395
+ {
2396
+ if (! (l3 < 2))
2397
+ {
2398
+ break;
2399
+ }
2400
+ _state.fVec1[l3 & 1] = 0.0f;
2401
+ {
2402
+ l3 = (l3 + 1);
2403
+ }
2404
+ }
2405
+ }
2406
+ {
2407
+ l4 = 0;
2408
+ for (;;)
2409
+ {
2410
+ if (! (l4 < 2))
2411
+ {
2412
+ break;
2413
+ }
2414
+ _state.fRec13[l4 & 1] = 0.0f;
2415
+ {
2416
+ l4 = (l4 + 1);
2417
+ }
2418
+ }
2419
+ }
2420
+ {
2421
+ l5 = 0;
2422
+ for (;;)
2423
+ {
2424
+ if (! (l5 < 2))
2425
+ {
2426
+ break;
2427
+ }
2428
+ _state.fRec14[l5 & 1] = 0.0f;
2429
+ {
2430
+ l5 = (l5 + 1);
2431
+ }
2432
+ }
2433
+ }
2434
+ {
2435
+ l8 = 0;
2436
+ for (;;)
2437
+ {
2438
+ if (! (l8 < 2))
2439
+ {
2440
+ break;
2441
+ }
2442
+ _state.fRec16[l8 & 1] = 0.0f;
2443
+ {
2444
+ l8 = (l8 + 1);
2445
+ }
2446
+ }
2447
+ }
2448
+ {
2449
+ l9 = 0;
2450
+ for (;;)
2451
+ {
2452
+ if (! (l9 < 2))
2453
+ {
2454
+ break;
2455
+ }
2456
+ _state.iRec20[l9 & 1] = 0;
2457
+ {
2458
+ l9 = (l9 + 1);
2459
+ }
2460
+ }
2461
+ }
2462
+ {
2463
+ l10 = 0;
2464
+ for (;;)
2465
+ {
2466
+ if (! (l10 < 3))
2467
+ {
2468
+ break;
2469
+ }
2470
+ _state.fRec19[std__intrinsics___wrap_3 (l10)] = 0.0f;
2471
+ {
2472
+ l10 = (l10 + 1);
2473
+ }
2474
+ }
2475
+ }
2476
+ {
2477
+ l11 = 0;
2478
+ for (;;)
2479
+ {
2480
+ if (! (l11 < 2))
2481
+ {
2482
+ break;
2483
+ }
2484
+ _state.fRec17[l11 & 1] = 0.0f;
2485
+ {
2486
+ l11 = (l11 + 1);
2487
+ }
2488
+ }
2489
+ }
2490
+ _state.IOTA0 = 0;
2491
+ {
2492
+ l12 = 0;
2493
+ for (;;)
2494
+ {
2495
+ if (! (l12 < 2048))
2496
+ {
2497
+ break;
2498
+ }
2499
+ _state.fRec18[l12 & 2047] = 0.0f;
2500
+ {
2501
+ l12 = (l12 + 1);
2502
+ }
2503
+ }
2504
+ }
2505
+ {
2506
+ l13 = 0;
2507
+ for (;;)
2508
+ {
2509
+ if (! (l13 < 2))
2510
+ {
2511
+ break;
2512
+ }
2513
+ _state.fVec3[l13 & 1] = 0.0f;
2514
+ {
2515
+ l13 = (l13 + 1);
2516
+ }
2517
+ }
2518
+ }
2519
+ {
2520
+ l14 = 0;
2521
+ for (;;)
2522
+ {
2523
+ if (! (l14 < 2))
2524
+ {
2525
+ break;
2526
+ }
2527
+ _state.fRec11[l14 & 1] = 0.0f;
2528
+ {
2529
+ l14 = (l14 + 1);
2530
+ }
2531
+ }
2532
+ }
2533
+ {
2534
+ l15 = 0;
2535
+ for (;;)
2536
+ {
2537
+ if (! (l15 < 2048))
2538
+ {
2539
+ break;
2540
+ }
2541
+ _state.fRec2[l15 & 2047] = 0.0f;
2542
+ {
2543
+ l15 = (l15 + 1);
2544
+ }
2545
+ }
2546
+ }
2547
+ {
2548
+ l16 = 0;
2549
+ for (;;)
2550
+ {
2551
+ if (! (l16 < 2))
2552
+ {
2553
+ break;
2554
+ }
2555
+ _state.fRec0[l16 & 1] = 0.0f;
2556
+ {
2557
+ l16 = (l16 + 1);
2558
+ }
2559
+ }
2560
+ }
2561
+ }
2562
+
2563
+ void _advance (HelloReverb_State& _state, HelloReverb_IO& _io, int32_t _frames) noexcept
2564
+ {
2565
+ _HelloReverb_IO ioCopy;
2566
+
2567
+ for (;;)
2568
+ {
2569
+ if (_state._currentFrame == _frames)
2570
+ {
2571
+ break;
2572
+ }
2573
+ ioCopy = _HelloReverb_IO {};
2574
+ main (_state._state, ioCopy);
2575
+ _io.out0[_state._currentFrame] = ioCopy.out0;
2576
+ _io.out1[_state._currentFrame] = ioCopy.out1;
2577
+ ++_state._currentFrame;
2578
+ }
2579
+ _state._currentFrame = 0;
2580
+ }
2581
+
2582
+ void main (_HelloReverb_State& _state, _HelloReverb_IO& _io) noexcept
2583
+ {
2584
+ _HelloWorld_1_IO Hello_io;
2585
+ faust_reverb_1_IO Reverb_io;
2586
+ faust_reverb_1_IO Echo_io;
2587
+ faust_voice_1_IO Clarinet_io;
2588
+
2589
+ Hello_io = _HelloWorld_1_IO {};
2590
+ Reverb_io = faust_reverb_1_IO {};
2591
+ Echo_io = faust_reverb_1_IO {};
2592
+ Clarinet_io = faust_voice_1_IO {};
2593
+ {
2594
+ }
2595
+ HelloWorld__main (_state.Hello, Hello_io);
2596
+ {
2597
+ }
2598
+ faust__voice__main (_state.Clarinet, Clarinet_io);
2599
+ {
2600
+ Reverb_io.input0 = (Reverb_io.input0 + Hello_io.out);
2601
+ Reverb_io.input1 = (Reverb_io.input1 + Hello_io.out);
2602
+ Reverb_io.input0 = (Reverb_io.input0 + Clarinet_io.output0);
2603
+ Reverb_io.input1 = (Reverb_io.input1 + Clarinet_io.output1);
2604
+ }
2605
+ faust__reverb__main (_state.Reverb, Reverb_io);
2606
+ {
2607
+ Echo_io.input0 = (Echo_io.input0 + Reverb_io.output0);
2608
+ Echo_io.input1 = (Echo_io.input1 + Reverb_io.output1);
2609
+ }
2610
+ faust__echo__main (_state.Echo, Echo_io);
2611
+ {
2612
+ _io.out0 = (_io.out0 + Echo_io.output0);
2613
+ _io.out1 = (_io.out1 + Echo_io.output1);
2614
+ }
2615
+ }
2616
+
2617
+ void HelloWorld__main (_HelloWorld_1_State& _state, _HelloWorld_1_IO& _io) noexcept
2618
+ {
2619
+ _HelloWorld_1_Note this_;
2620
+ int32_t numFrames;
2621
+ float frequency;
2622
+
2623
+ switch (_state._resumeIndex)
2624
+ {
2625
+ case 1: goto _branch0_0;
2626
+ case 2: goto _branch0_1;
2627
+ default: break;
2628
+ }
2629
+
2630
+ {
2631
+ _state.i = 0;
2632
+ for (;;)
2633
+ {
2634
+ if (_state.i >= 13)
2635
+ {
2636
+ break;
2637
+ }
2638
+ {
2639
+ this_ = melody[_state.i];
2640
+ numFrames = this_.length * _state.framesPerQuarterNote;
2641
+ frequency = std__notes__noteToFrequency (this_.pitch);
2642
+ _state.phaseDelta = static_cast<float> ((static_cast<double> (frequency) * (1.0 / (1.0 * _frequency))) * 6.283185307179586);
2643
+ {
2644
+ _state._count = numFrames;
2645
+ _branch0_0:
2646
+ {
2647
+ for (;;)
2648
+ {
2649
+ --_state._count;
2650
+ if (_state._count < 0)
2651
+ {
2652
+ goto _break_0;
2653
+ }
2654
+ _io.out = (_io.out + (volume * intrinsics::sin (_state.phase)));
2655
+ _state.phase = intrinsics::addModulo2Pi (_state.phase, _state.phaseDelta);
2656
+ _state._resumeIndex = 1;
2657
+ return;
2658
+ }
2659
+ }
2660
+ _break_0: {}
2661
+ }
2662
+ }
2663
+ {
2664
+ ++_state.i;
2665
+ }
2666
+ }
2667
+ }
2668
+ _branch0_1:
2669
+ {
2670
+ _state._resumeIndex = 2;
2671
+ }
2672
+ }
2673
+
2674
+ float std__notes__noteToFrequency (int32_t midiNoteNumber) noexcept
2675
+ {
2676
+ return 440.0f * intrinsics::pow (2.0f, 0.083333336f * static_cast<float> (midiNoteNumber - 69));
2677
+ }
2678
+
2679
+ float std__intrinsics__addModulo2Pi (float startValue, float valueToAdd) noexcept
2680
+ {
2681
+ float v;
2682
+
2683
+ v = startValue + valueToAdd;
2684
+ if (v < static_cast<float> (0))
2685
+ {
2686
+ return intrinsics::fmod (v, 6.2831855f) + 6.2831855f;
2687
+ }
2688
+ if (v < 6.2831855f)
2689
+ {
2690
+ return v;
2691
+ }
2692
+ if (v < 12.566371f)
2693
+ {
2694
+ return v - 6.2831855f;
2695
+ }
2696
+ return intrinsics::fmod (v, 6.2831855f);
2697
+ }
2698
+
2699
+ float std__intrinsics__fmod (float x, float y) noexcept
2700
+ {
2701
+ return x - (y * static_cast<float> (static_cast<int64_t> (x / y)));
2702
+ }
2703
+
2704
+ void faust__voice__main (faust_voice_1_State& _state, faust_voice_1_IO& _io) noexcept
2705
+ {
2706
+ float fRec10;
2707
+ float fTemp0;
2708
+ float fTemp1;
2709
+ float fTemp2;
2710
+ float fTemp3;
2711
+ float fTemp4;
2712
+ float fTemp5;
2713
+ float fTemp6;
2714
+ float fTemp7;
2715
+ float fTemp8;
2716
+ float fTemp9;
2717
+ float fTemp10;
2718
+ int32_t iTemp11;
2719
+ int32_t iTemp12;
2720
+ float fTemp13;
2721
+ float fTemp14;
2722
+ int32_t iTemp15;
2723
+ float fTemp16;
2724
+ int32_t iTemp17;
2725
+ float fTemp18;
2726
+ int32_t iTemp19;
2727
+ float fTemp20;
2728
+ int32_t iTemp21;
2729
+ float fRec7;
2730
+ float fRec8;
2731
+ float fRec9;
2732
+ float fRec3;
2733
+ float fRec4;
2734
+ float fRec5;
2735
+ float fRec1;
2736
+ float fTemp22;
2737
+
2738
+ for (;;)
2739
+ {
2740
+ if (_state.fUpdated)
2741
+ {
2742
+ _state.fUpdated = false;
2743
+ faust__voice__control (_state);
2744
+ }
2745
+ _state.iRec6[0] = 0;
2746
+ _state.iVec0[0] = 1;
2747
+ _state.fRec12[0] = ((_state.fSlow2 * _state.fRec11[1]) + (_state.fSlow1 * _state.fRec12[1]));
2748
+ fRec10 = _state.fRec12[0] + static_cast<float> (_state.iRec6[1]);
2749
+ _state.fVec1[0] = _state.fSlow5;
2750
+ fTemp0 = static_cast<float> (static_cast<int32_t> (_state.fSlow5 == _state.fVec1[1]) | _state.iSlow6);
2751
+ _state.fRec13[0] = ((_state.fSlow4 * (1.0f - (0.999f * fTemp0))) + ((0.999f * fTemp0) * _state.fRec13[1]));
2752
+ _state.fRec14[0] = (_state.fSlow11 + (_state.fSlow10 * _state.fRec14[1]));
2753
+ fTemp1 = static_cast<bool> (1 - _state.iVec0[1]) ? 0.0f : (_state.fSlow12 + _state.fRec16[1]);
2754
+ _state.fRec16[0] = (fTemp1 - intrinsics::floor (fTemp1));
2755
+ fTemp2 = _state.ftbl0voiceSIG0[intrinsics::max (0, intrinsics::min (static_cast<int32_t> (65536.0f * _state.fRec16[0]), 65535)) & 65535];
2756
+ fTemp3 = _state.fConst1 * ((_state.fSlow3 / (_state.fRec13[0] * (((_state.fSlow7 * _state.fRec14[0]) * fTemp2) + 1.0f))) + -0.05f);
2757
+ fTemp4 = fTemp3 + -1.499995f;
2758
+ fTemp5 = intrinsics::floor (fTemp4);
2759
+ fTemp6 = fTemp3 + (-4.0f - fTemp5);
2760
+ fTemp7 = fTemp3 + (-3.0f - fTemp5);
2761
+ fTemp8 = fTemp3 + (-2.0f - fTemp5);
2762
+ _state.iRec20[0] = ((0x41c64e6d * _state.iRec20[1]) + 12345);
2763
+ _state.fRec19[0] = ((4.656613e-10f * static_cast<float> (_state.iRec20[0])) - (_state.fConst7 * ((_state.fConst8 * _state.fRec19[2]) + (_state.fConst9 * _state.fRec19[1]))));
2764
+ fTemp9 = _state.fRec14[0] * ((_state.fConst6 * ((_state.fRec19[2] + _state.fRec19[0]) + (2.0f * _state.fRec19[1]))) + 1.0f);
2765
+ fTemp10 = _state.fSlow7 * fTemp2;
2766
+ _state.fRec17[0] = ((fTemp9 + _state.fRec0[1]) + fTemp10);
2767
+ _state.fRec18[(_state.IOTA0 & 2047) & 2047] = ((fTemp10 + fTemp9) - (_state.fRec17[1] * intrinsics::max (-1.0f, intrinsics::min (1.0f, 0.7f - (_state.fSlow13 * _state.fRec17[1])))));
2768
+ iTemp11 = static_cast<int32_t> (fTemp4);
2769
+ iTemp12 = static_cast<int32_t> (intrinsics::min (_state.fConst10, static_cast<float> (intrinsics::max (0, iTemp11)))) + 1;
2770
+ fTemp13 = fTemp3 + (-1.0f - fTemp5);
2771
+ fTemp14 = fTemp3 - fTemp5;
2772
+ iTemp15 = static_cast<int32_t> (intrinsics::min (_state.fConst10, static_cast<float> (intrinsics::max (0, iTemp11 + 1)))) + 1;
2773
+ fTemp16 = fTemp14 * fTemp13;
2774
+ iTemp17 = static_cast<int32_t> (intrinsics::min (_state.fConst10, static_cast<float> (intrinsics::max (0, iTemp11 + 2)))) + 1;
2775
+ fTemp18 = fTemp16 * fTemp8;
2776
+ iTemp19 = static_cast<int32_t> (intrinsics::min (_state.fConst10, static_cast<float> (intrinsics::max (0, iTemp11 + 3)))) + 1;
2777
+ fTemp20 = fTemp18 * fTemp7;
2778
+ iTemp21 = static_cast<int32_t> (intrinsics::min (_state.fConst10, static_cast<float> (intrinsics::max (0, iTemp11 + 4)))) + 1;
2779
+ _state.fVec3[0] = ((fTemp6 * ((fTemp7 * ((fTemp8 * (((0.041666668f * _state.fRec18[((_state.IOTA0 - iTemp12) & 2047) & 2047]) * fTemp13) - ((0.16666667f * fTemp14) * _state.fRec18[((_state.IOTA0 - iTemp15) & 2047) & 2047]))) + ((0.25f * fTemp16) * _state.fRec18[((_state.IOTA0 - iTemp17) & 2047) & 2047]))) - ((0.16666667f * fTemp18) * _state.fRec18[((_state.IOTA0 - iTemp19) & 2047) & 2047]))) + ((0.041666668f * fTemp20) * _state.fRec18[((_state.IOTA0 - iTemp21) & 2047) & 2047]));
2780
+ _state.fRec11[0] = _state.fVec3[1];
2781
+ fRec7 = fRec10;
2782
+ fRec8 = _state.fRec11[0];
2783
+ fRec9 = _state.fRec11[0];
2784
+ _state.fRec2[(_state.IOTA0 & 2047) & 2047] = fRec7;
2785
+ fRec3 = (fTemp6 * ((fTemp7 * ((fTemp8 * (((0.041666668f * fTemp13) * _state.fRec2[((_state.IOTA0 - iTemp12) & 2047) & 2047]) - ((0.16666667f * fTemp14) * _state.fRec2[((_state.IOTA0 - iTemp15) & 2047) & 2047]))) + ((0.25f * fTemp16) * _state.fRec2[((_state.IOTA0 - iTemp17) & 2047) & 2047]))) - ((0.16666667f * fTemp18) * _state.fRec2[((_state.IOTA0 - iTemp19) & 2047) & 2047]))) + ((0.041666668f * fTemp20) * _state.fRec2[((_state.IOTA0 - iTemp21) & 2047) & 2047]);
2786
+ fRec4 = fRec8;
2787
+ fRec5 = fRec9;
2788
+ _state.fRec0[0] = fRec3;
2789
+ fRec1 = fRec5;
2790
+ fTemp22 = _state.fSlow0 * fRec1;
2791
+ _io.output0 = (_io.output0 + fTemp22);
2792
+ _io.output1 = (_io.output1 + fTemp22);
2793
+ _state.iRec6[1] = _state.iRec6[0];
2794
+ _state.iVec0[1] = _state.iVec0[0];
2795
+ _state.fRec12[1] = _state.fRec12[0];
2796
+ _state.fVec1[1] = _state.fVec1[0];
2797
+ _state.fRec13[1] = _state.fRec13[0];
2798
+ _state.fRec14[1] = _state.fRec14[0];
2799
+ _state.fRec16[1] = _state.fRec16[0];
2800
+ _state.iRec20[1] = _state.iRec20[0];
2801
+ _state.fRec19[2] = _state.fRec19[1];
2802
+ _state.fRec19[1] = _state.fRec19[0];
2803
+ _state.fRec17[1] = _state.fRec17[0];
2804
+ _state.IOTA0 = (_state.IOTA0 + 1);
2805
+ _state.fVec3[1] = _state.fVec3[0];
2806
+ _state.fRec11[1] = _state.fRec11[0];
2807
+ _state.fRec0[1] = _state.fRec0[0];
2808
+ return;
2809
+ }
2810
+ }
2811
+
2812
+ void faust__voice__control (faust_voice_1_State& _state) noexcept
2813
+ {
2814
+ _state.fSlow0 = _state.fHslider0;
2815
+ _state.fSlow1 = _state.fHslider1;
2816
+ _state.fSlow2 = (1.0f - _state.fSlow1);
2817
+ _state.fSlow3 = (170.0f / _state.fHslider2);
2818
+ _state.fSlow4 = intrinsics::pow (2.0f, 0.083333336f * _state.fHslider3);
2819
+ _state.fSlow5 = intrinsics::min (1.0f, _state.fButton0 + _state.fHslider4);
2820
+ _state.iSlow6 = static_cast<int32_t> (_state.fSlow5 == 0.0f);
2821
+ _state.fSlow7 = (0.01f * _state.fHslider5);
2822
+ _state.fSlow8 = (0.001f * _state.fHslider7);
2823
+ _state.iSlow9 = static_cast<int32_t> (intrinsics::abs (_state.fSlow8) < 1.1920929e-7f);
2824
+ _state.fSlow10 = (static_cast<bool> (_state.iSlow9) ? 0.0f : intrinsics::exp (- (_state.fConst2 / (static_cast<bool> (_state.iSlow9) ? 1.0f : _state.fSlow8))));
2825
+ _state.fSlow11 = ((_state.fHslider6 * _state.fSlow5) * (1.0f - _state.fSlow10));
2826
+ _state.fSlow12 = (_state.fConst2 * _state.fHslider8);
2827
+ _state.fSlow13 = ((0.26f * _state.fHslider9) + -0.44f);
2828
+ }
2829
+
2830
+ float std__intrinsics__abs (float n) noexcept
2831
+ {
2832
+ {
2833
+ return (n < static_cast<float> (0)) ? (- n) : n;
2834
+ }
2835
+ }
2836
+
2837
+ float std__intrinsics__exp (float n) noexcept
2838
+ {
2839
+ {
2840
+ return 0.0f;
2841
+ }
2842
+ }
2843
+
2844
+ int32_t std__intrinsics__max_0 (int32_t v1, int32_t v2) noexcept
2845
+ {
2846
+ {
2847
+ return (v1 > v2) ? v1 : v2;
2848
+ }
2849
+ }
2850
+
2851
+ int32_t std__intrinsics__min_0 (int32_t v1, int32_t v2) noexcept
2852
+ {
2853
+ {
2854
+ return (v1 < v2) ? v1 : v2;
2855
+ }
2856
+ }
2857
+
2858
+ void faust__reverb__main (faust_reverb_1_State& _state, faust_reverb_1_IO& _io) noexcept
2859
+ {
2860
+ float fTemp0;
2861
+ float fTemp1;
2862
+ float fTemp2;
2863
+ float fTemp3;
2864
+ float fTemp4;
2865
+ float fTemp5;
2866
+ float fRec13;
2867
+ float fTemp6;
2868
+ float fRec17;
2869
+ float fTemp7;
2870
+ float fRec21;
2871
+ float fTemp8;
2872
+ float fRec25;
2873
+ float fTemp9;
2874
+ float fTemp10;
2875
+ float fRec29;
2876
+ float fTemp11;
2877
+ float fRec33;
2878
+ float fTemp12;
2879
+ float fRec37;
2880
+ float fTemp13;
2881
+ float fRec41;
2882
+ float fTemp14;
2883
+ float fTemp15;
2884
+ float fTemp16;
2885
+ float fTemp17;
2886
+ float fTemp18;
2887
+ float fTemp19;
2888
+ float fTemp20;
2889
+ float fTemp21;
2890
+ float fTemp22;
2891
+ float fTemp23;
2892
+ float fTemp24;
2893
+ float fTemp25;
2894
+ float fTemp26;
2895
+ float fTemp27;
2896
+ float fTemp28;
2897
+ float fTemp29;
2898
+ float fTemp30;
2899
+ float fTemp31;
2900
+ float fTemp32;
2901
+ float fTemp33;
2902
+ float fTemp34;
2903
+ float fTemp35;
2904
+ float fTemp36;
2905
+ float fTemp37;
2906
+ float fTemp38;
2907
+
2908
+ for (;;)
2909
+ {
2910
+ if (_state.fUpdated)
2911
+ {
2912
+ _state.fUpdated = false;
2913
+ faust__reverb__control (_state);
2914
+ }
2915
+ _state.fRec0[0] = (_state.fSlow0 + (_state.fConst2 * _state.fRec0[1]));
2916
+ fTemp0 = _io.input0;
2917
+ _state.fVec0[(_state.IOTA0 & 16383) & 16383] = fTemp0;
2918
+ _state.fRec1[0] = (_state.fSlow1 + (_state.fConst2 * _state.fRec1[1]));
2919
+ fTemp1 = _state.fRec1[0] + 1.0f;
2920
+ fTemp2 = 1.0f - (0.5f * fTemp1);
2921
+ _state.fRec15[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec15[1]) - (_state.fRec11[1] + _state.fRec11[2]))));
2922
+ _state.fRec14[0] = ((_state.fSlow14 * (_state.fRec11[1] + (_state.fSlow16 * _state.fRec15[0]))) + (_state.fSlow20 * _state.fRec14[1]));
2923
+ _state.fVec1[(_state.IOTA0 & 32767) & 32767] = ((0.35355338f * _state.fRec14[0]) + 1e-20f);
2924
+ fTemp3 = (0.6f * _state.fRec12[1]) + _state.fVec1[((_state.IOTA0 - _state.iConst8) & 32767) & 32767];
2925
+ fTemp4 = _io.input1;
2926
+ _state.fVec2[(_state.IOTA0 & 16383) & 16383] = fTemp4;
2927
+ fTemp5 = 0.3f * _state.fVec2[((_state.IOTA0 - _state.iSlow21) & 16383) & 16383];
2928
+ _state.fVec3[(_state.IOTA0 & 2047) & 2047] = (fTemp3 - fTemp5);
2929
+ _state.fRec12[0] = _state.fVec3[((_state.IOTA0 - _state.iConst10) & 2047) & 2047];
2930
+ fRec13 = 0.6f * (fTemp5 - fTemp3);
2931
+ _state.fRec19[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec19[1]) - (_state.fRec7[1] + _state.fRec7[2]))));
2932
+ _state.fRec18[0] = ((_state.fSlow28 * (_state.fRec7[1] + (_state.fSlow29 * _state.fRec19[0]))) + (_state.fSlow30 * _state.fRec18[1]));
2933
+ _state.fVec4[(_state.IOTA0 & 32767) & 32767] = ((0.35355338f * _state.fRec18[0]) + 1e-20f);
2934
+ fTemp6 = (0.6f * _state.fRec16[1]) + _state.fVec4[((_state.IOTA0 - _state.iConst14) & 32767) & 32767];
2935
+ _state.fVec5[(_state.IOTA0 & 4095) & 4095] = (fTemp6 - fTemp5);
2936
+ _state.fRec16[0] = _state.fVec5[((_state.IOTA0 - _state.iConst15) & 4095) & 4095];
2937
+ fRec17 = 0.6f * (fTemp5 - fTemp6);
2938
+ _state.fRec23[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec23[1]) - (_state.fRec9[1] + _state.fRec9[2]))));
2939
+ _state.fRec22[0] = ((_state.fSlow37 * (_state.fRec9[1] + (_state.fSlow38 * _state.fRec23[0]))) + (_state.fSlow39 * _state.fRec22[1]));
2940
+ _state.fVec6[(_state.IOTA0 & 16383) & 16383] = ((0.35355338f * _state.fRec22[0]) + 1e-20f);
2941
+ fTemp7 = (_state.fVec6[((_state.IOTA0 - _state.iConst19) & 16383) & 16383] + fTemp5) + (0.6f * _state.fRec20[1]);
2942
+ _state.fVec7[(_state.IOTA0 & 4095) & 4095] = fTemp7;
2943
+ _state.fRec20[0] = _state.fVec7[((_state.IOTA0 - _state.iConst20) & 4095) & 4095];
2944
+ fRec21 = - (0.6f * fTemp7);
2945
+ _state.fRec27[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec27[1]) - (_state.fRec5[1] + _state.fRec5[2]))));
2946
+ _state.fRec26[0] = ((_state.fSlow46 * (_state.fRec5[1] + (_state.fSlow47 * _state.fRec27[0]))) + (_state.fSlow48 * _state.fRec26[1]));
2947
+ _state.fVec8[(_state.IOTA0 & 32767) & 32767] = ((0.35355338f * _state.fRec26[0]) + 1e-20f);
2948
+ fTemp8 = (fTemp5 + (0.6f * _state.fRec24[1])) + _state.fVec8[((_state.IOTA0 - _state.iConst24) & 32767) & 32767];
2949
+ _state.fVec9[(_state.IOTA0 & 4095) & 4095] = fTemp8;
2950
+ _state.fRec24[0] = _state.fVec9[((_state.IOTA0 - _state.iConst25) & 4095) & 4095];
2951
+ fRec25 = - (0.6f * fTemp8);
2952
+ _state.fRec31[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec31[1]) - (_state.fRec10[1] + _state.fRec10[2]))));
2953
+ _state.fRec30[0] = ((_state.fSlow55 * (_state.fRec10[1] + (_state.fSlow56 * _state.fRec31[0]))) + (_state.fSlow57 * _state.fRec30[1]));
2954
+ _state.fVec10[(_state.IOTA0 & 16383) & 16383] = ((0.35355338f * _state.fRec30[0]) + 1e-20f);
2955
+ fTemp9 = 0.3f * _state.fVec0[((_state.IOTA0 - _state.iSlow21) & 16383) & 16383];
2956
+ fTemp10 = _state.fVec10[((_state.IOTA0 - _state.iConst29) & 16383) & 16383] - (fTemp9 + (0.6f * _state.fRec28[1]));
2957
+ _state.fVec11[(_state.IOTA0 & 2047) & 2047] = fTemp10;
2958
+ _state.fRec28[0] = _state.fVec11[((_state.IOTA0 - _state.iConst30) & 2047) & 2047];
2959
+ fRec29 = 0.6f * fTemp10;
2960
+ _state.fRec35[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec35[1]) - (_state.fRec6[1] + _state.fRec6[2]))));
2961
+ _state.fRec34[0] = ((_state.fSlow64 * (_state.fRec6[1] + (_state.fSlow65 * _state.fRec35[0]))) + (_state.fSlow66 * _state.fRec34[1]));
2962
+ _state.fVec12[(_state.IOTA0 & 16383) & 16383] = ((0.35355338f * _state.fRec34[0]) + 1e-20f);
2963
+ fTemp11 = _state.fVec12[((_state.IOTA0 - _state.iConst34) & 16383) & 16383] - (fTemp9 + (0.6f * _state.fRec32[1]));
2964
+ _state.fVec13[(_state.IOTA0 & 4095) & 4095] = fTemp11;
2965
+ _state.fRec32[0] = _state.fVec13[((_state.IOTA0 - _state.iConst35) & 4095) & 4095];
2966
+ fRec33 = 0.6f * fTemp11;
2967
+ _state.fRec39[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec39[1]) - (_state.fRec8[1] + _state.fRec8[2]))));
2968
+ _state.fRec38[0] = ((_state.fSlow73 * (_state.fRec8[1] + (_state.fSlow74 * _state.fRec39[0]))) + (_state.fSlow75 * _state.fRec38[1]));
2969
+ _state.fVec14[(_state.IOTA0 & 16383) & 16383] = ((0.35355338f * _state.fRec38[0]) + 1e-20f);
2970
+ fTemp12 = (fTemp9 + _state.fVec14[((_state.IOTA0 - _state.iConst39) & 16383) & 16383]) - (0.6f * _state.fRec36[1]);
2971
+ _state.fVec15[(_state.IOTA0 & 4095) & 4095] = fTemp12;
2972
+ _state.fRec36[0] = _state.fVec15[((_state.IOTA0 - _state.iConst40) & 4095) & 4095];
2973
+ fRec37 = 0.6f * fTemp12;
2974
+ _state.fRec43[0] = (- (_state.fSlow18 * ((_state.fSlow19 * _state.fRec43[1]) - (_state.fRec4[1] + _state.fRec4[2]))));
2975
+ _state.fRec42[0] = ((_state.fSlow82 * (_state.fRec4[1] + (_state.fSlow83 * _state.fRec43[0]))) + (_state.fSlow84 * _state.fRec42[1]));
2976
+ _state.fVec16[(_state.IOTA0 & 16383) & 16383] = ((0.35355338f * _state.fRec42[0]) + 1e-20f);
2977
+ fTemp13 = (_state.fVec16[((_state.IOTA0 - _state.iConst44) & 16383) & 16383] + fTemp9) - (0.6f * _state.fRec40[1]);
2978
+ _state.fVec17[(_state.IOTA0 & 2047) & 2047] = fTemp13;
2979
+ _state.fRec40[0] = _state.fVec17[((_state.IOTA0 - _state.iConst45) & 2047) & 2047];
2980
+ fRec41 = 0.6f * fTemp13;
2981
+ fTemp14 = fRec41 + fRec37;
2982
+ fTemp15 = (fRec29 + fRec33) + fTemp14;
2983
+ _state.fRec4[0] = ((((((((((((_state.fRec12[1] + _state.fRec16[1]) + _state.fRec20[1]) + _state.fRec24[1]) + _state.fRec28[1]) + _state.fRec32[1]) + _state.fRec36[1]) + _state.fRec40[1]) + fRec13) + fRec17) + fRec21) + fRec25) + fTemp15);
2984
+ _state.fRec5[0] = (((((_state.fRec28[1] + _state.fRec32[1]) + _state.fRec36[1]) + _state.fRec40[1]) + fTemp15) - (((((((_state.fRec12[1] + _state.fRec16[1]) + _state.fRec20[1]) + _state.fRec24[1]) + fRec13) + fRec17) + fRec25) + fRec21));
2985
+ fTemp16 = fRec33 + fRec29;
2986
+ _state.fRec6[0] = (((((((_state.fRec20[1] + _state.fRec24[1]) + _state.fRec36[1]) + _state.fRec40[1]) + fRec21) + fRec25) + fTemp14) - ((((((_state.fRec12[1] + _state.fRec16[1]) + _state.fRec28[1]) + _state.fRec32[1]) + fRec13) + fRec17) + fTemp16));
2987
+ _state.fRec7[0] = (((((((_state.fRec12[1] + _state.fRec16[1]) + _state.fRec36[1]) + _state.fRec40[1]) + fRec13) + fRec17) + fTemp14) - ((((((_state.fRec20[1] + _state.fRec24[1]) + _state.fRec28[1]) + _state.fRec32[1]) + fRec21) + fRec25) + fTemp16));
2988
+ fTemp17 = fRec41 + fRec33;
2989
+ fTemp18 = fRec37 + fRec29;
2990
+ _state.fRec8[0] = (((((((_state.fRec16[1] + _state.fRec24[1]) + _state.fRec32[1]) + _state.fRec40[1]) + fRec17) + fRec25) + fTemp17) - ((((((_state.fRec12[1] + _state.fRec20[1]) + _state.fRec28[1]) + _state.fRec36[1]) + fRec13) + fRec21) + fTemp18));
2991
+ _state.fRec9[0] = (((((((_state.fRec12[1] + _state.fRec20[1]) + _state.fRec32[1]) + _state.fRec40[1]) + fRec13) + fRec21) + fTemp17) - ((((((_state.fRec16[1] + _state.fRec24[1]) + _state.fRec28[1]) + _state.fRec36[1]) + fRec17) + fRec25) + fTemp18));
2992
+ fTemp19 = fRec41 + fRec29;
2993
+ fTemp20 = fRec37 + fRec33;
2994
+ _state.fRec10[0] = (((((((_state.fRec12[1] + _state.fRec24[1]) + _state.fRec28[1]) + _state.fRec40[1]) + fRec13) + fRec25) + fTemp19) - ((((((_state.fRec16[1] + _state.fRec20[1]) + _state.fRec32[1]) + _state.fRec36[1]) + fRec17) + fRec21) + fTemp20));
2995
+ _state.fRec11[0] = (((((((_state.fRec16[1] + _state.fRec20[1]) + _state.fRec28[1]) + _state.fRec40[1]) + fRec17) + fRec21) + fTemp19) - ((((((_state.fRec12[1] + _state.fRec24[1]) + _state.fRec32[1]) + _state.fRec36[1]) + fRec13) + fRec25) + fTemp20));
2996
+ fTemp21 = 0.37f * (_state.fRec5[0] + _state.fRec6[0]);
2997
+ fTemp22 = _state.fSlow85 * _state.fRec3[1];
2998
+ fTemp23 = fTemp21 + fTemp22;
2999
+ _state.fRec3[0] = (fTemp23 - (_state.fSlow5 * _state.fRec3[2]));
3000
+ fTemp24 = _state.fSlow5 * _state.fRec3[0];
3001
+ fTemp25 = (fTemp24 + fTemp21) + _state.fRec3[2];
3002
+ fTemp26 = _state.fSlow3 * ((_state.fRec3[2] + fTemp24) - fTemp23);
3003
+ fTemp27 = _state.fSlow90 * _state.fRec2[1];
3004
+ _state.fRec2[0] = (((0.5f * ((fTemp25 - fTemp22) + fTemp26)) + fTemp27) - (_state.fSlow89 * _state.fRec2[2]));
3005
+ fTemp28 = _state.fRec2[2] + (_state.fSlow89 * _state.fRec2[0]);
3006
+ fTemp29 = 0.5f * ((fTemp25 + fTemp26) - fTemp22);
3007
+ _io.output0 = (_io.output0 + ((0.25f * _state.fRec0[0]) * ((fTemp0 * fTemp1) + (fTemp2 * (((fTemp28 + fTemp29) + (_state.fSlow87 * (fTemp28 - (fTemp27 + fTemp29)))) - fTemp27)))));
3008
+ fTemp30 = 0.37f * (_state.fRec5[0] - _state.fRec6[0]);
3009
+ fTemp31 = _state.fSlow85 * _state.fRec45[1];
3010
+ fTemp32 = fTemp30 + fTemp31;
3011
+ _state.fRec45[0] = (fTemp32 - (_state.fSlow5 * _state.fRec45[2]));
3012
+ fTemp33 = _state.fSlow5 * _state.fRec45[0];
3013
+ fTemp34 = (fTemp33 + fTemp30) + _state.fRec45[2];
3014
+ fTemp35 = _state.fSlow3 * ((_state.fRec45[2] + fTemp33) - fTemp32);
3015
+ fTemp36 = _state.fSlow90 * _state.fRec44[1];
3016
+ _state.fRec44[0] = (((0.5f * ((fTemp34 - fTemp31) + fTemp35)) + fTemp36) - (_state.fSlow89 * _state.fRec44[2]));
3017
+ fTemp37 = _state.fRec44[2] + (_state.fSlow89 * _state.fRec44[0]);
3018
+ fTemp38 = 0.5f * ((fTemp34 + fTemp35) - fTemp31);
3019
+ _io.output1 = (_io.output1 + ((0.25f * _state.fRec0[0]) * ((fTemp4 * fTemp1) + (fTemp2 * (((fTemp37 + fTemp38) + (_state.fSlow87 * (fTemp37 - (fTemp36 + fTemp38)))) - fTemp36)))));
3020
+ _state.fRec0[1] = _state.fRec0[0];
3021
+ _state.IOTA0 = (_state.IOTA0 + 1);
3022
+ _state.fRec1[1] = _state.fRec1[0];
3023
+ _state.fRec15[1] = _state.fRec15[0];
3024
+ _state.fRec14[1] = _state.fRec14[0];
3025
+ _state.fRec12[1] = _state.fRec12[0];
3026
+ _state.fRec19[1] = _state.fRec19[0];
3027
+ _state.fRec18[1] = _state.fRec18[0];
3028
+ _state.fRec16[1] = _state.fRec16[0];
3029
+ _state.fRec23[1] = _state.fRec23[0];
3030
+ _state.fRec22[1] = _state.fRec22[0];
3031
+ _state.fRec20[1] = _state.fRec20[0];
3032
+ _state.fRec27[1] = _state.fRec27[0];
3033
+ _state.fRec26[1] = _state.fRec26[0];
3034
+ _state.fRec24[1] = _state.fRec24[0];
3035
+ _state.fRec31[1] = _state.fRec31[0];
3036
+ _state.fRec30[1] = _state.fRec30[0];
3037
+ _state.fRec28[1] = _state.fRec28[0];
3038
+ _state.fRec35[1] = _state.fRec35[0];
3039
+ _state.fRec34[1] = _state.fRec34[0];
3040
+ _state.fRec32[1] = _state.fRec32[0];
3041
+ _state.fRec39[1] = _state.fRec39[0];
3042
+ _state.fRec38[1] = _state.fRec38[0];
3043
+ _state.fRec36[1] = _state.fRec36[0];
3044
+ _state.fRec43[1] = _state.fRec43[0];
3045
+ _state.fRec42[1] = _state.fRec42[0];
3046
+ _state.fRec40[1] = _state.fRec40[0];
3047
+ _state.fRec4[2] = _state.fRec4[1];
3048
+ _state.fRec4[1] = _state.fRec4[0];
3049
+ _state.fRec5[2] = _state.fRec5[1];
3050
+ _state.fRec5[1] = _state.fRec5[0];
3051
+ _state.fRec6[2] = _state.fRec6[1];
3052
+ _state.fRec6[1] = _state.fRec6[0];
3053
+ _state.fRec7[2] = _state.fRec7[1];
3054
+ _state.fRec7[1] = _state.fRec7[0];
3055
+ _state.fRec8[2] = _state.fRec8[1];
3056
+ _state.fRec8[1] = _state.fRec8[0];
3057
+ _state.fRec9[2] = _state.fRec9[1];
3058
+ _state.fRec9[1] = _state.fRec9[0];
3059
+ _state.fRec10[2] = _state.fRec10[1];
3060
+ _state.fRec10[1] = _state.fRec10[0];
3061
+ _state.fRec11[2] = _state.fRec11[1];
3062
+ _state.fRec11[1] = _state.fRec11[0];
3063
+ _state.fRec3[2] = _state.fRec3[1];
3064
+ _state.fRec3[1] = _state.fRec3[0];
3065
+ _state.fRec2[2] = _state.fRec2[1];
3066
+ _state.fRec2[1] = _state.fRec2[0];
3067
+ _state.fRec45[2] = _state.fRec45[1];
3068
+ _state.fRec45[1] = _state.fRec45[0];
3069
+ _state.fRec44[2] = _state.fRec44[1];
3070
+ _state.fRec44[1] = _state.fRec44[0];
3071
+ return;
3072
+ }
3073
+ }
3074
+
3075
+ void faust__reverb__control (faust_reverb_1_State& _state) noexcept
3076
+ {
3077
+ _state.fSlow0 = (_state.fConst1 * intrinsics::pow (10.0f, 0.05f * _state.fVslider0));
3078
+ _state.fSlow1 = (_state.fConst1 * _state.fVslider1);
3079
+ _state.fSlow2 = _state.fVslider2;
3080
+ _state.fSlow3 = intrinsics::pow (10.0f, 0.05f * _state.fVslider3);
3081
+ _state.fSlow4 = (_state.fConst3 * (_state.fSlow2 / intrinsics::sqrt (intrinsics::max (0.0f, _state.fSlow3))));
3082
+ _state.fSlow5 = ((1.0f - _state.fSlow4) / (_state.fSlow4 + 1.0f));
3083
+ _state.fSlow6 = _state.fVslider4;
3084
+ _state.fSlow7 = intrinsics::exp (- (_state.fConst5 / _state.fSlow6));
3085
+ _state.fSlow8 = intrinsics::cos (_state.fConst3 * _state.fVslider5);
3086
+ _state.fSlow9 = intrinsics::pow (_state.fSlow7, 2.0f);
3087
+ _state.fSlow10 = (1.0f - (_state.fSlow8 * _state.fSlow9));
3088
+ _state.fSlow11 = (1.0f - _state.fSlow9);
3089
+ _state.fSlow12 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow10, 2.0f) / intrinsics::pow (_state.fSlow11, 2.0f)) + -1.0f));
3090
+ _state.fSlow13 = (_state.fSlow10 / _state.fSlow11);
3091
+ _state.fSlow14 = (_state.fSlow7 * (_state.fSlow12 + (1.0f - _state.fSlow13)));
3092
+ _state.fSlow15 = _state.fVslider6;
3093
+ _state.fSlow16 = ((intrinsics::exp (- (_state.fConst5 / _state.fSlow15)) / _state.fSlow7) + -1.0f);
3094
+ _state.fSlow17 = (1.0f / intrinsics::tan (_state.fConst6 * _state.fVslider7));
3095
+ _state.fSlow18 = (1.0f / (_state.fSlow17 + 1.0f));
3096
+ _state.fSlow19 = (1.0f - _state.fSlow17);
3097
+ _state.fSlow20 = (_state.fSlow13 - _state.fSlow12);
3098
+ _state.iSlow21 = static_cast<int32_t> (intrinsics::min (8192.0f, intrinsics::max (0.0f, _state.fConst9 * _state.fVslider8)));
3099
+ _state.fSlow22 = intrinsics::exp (- (_state.fConst12 / _state.fSlow6));
3100
+ _state.fSlow23 = intrinsics::pow (_state.fSlow22, 2.0f);
3101
+ _state.fSlow24 = (1.0f - (_state.fSlow8 * _state.fSlow23));
3102
+ _state.fSlow25 = (1.0f - _state.fSlow23);
3103
+ _state.fSlow26 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow24, 2.0f) / intrinsics::pow (_state.fSlow25, 2.0f)) + -1.0f));
3104
+ _state.fSlow27 = (_state.fSlow24 / _state.fSlow25);
3105
+ _state.fSlow28 = (_state.fSlow22 * (_state.fSlow26 + (1.0f - _state.fSlow27)));
3106
+ _state.fSlow29 = ((intrinsics::exp (- (_state.fConst12 / _state.fSlow15)) / _state.fSlow22) + -1.0f);
3107
+ _state.fSlow30 = (_state.fSlow27 - _state.fSlow26);
3108
+ _state.fSlow31 = intrinsics::exp (- (_state.fConst17 / _state.fSlow6));
3109
+ _state.fSlow32 = intrinsics::pow (_state.fSlow31, 2.0f);
3110
+ _state.fSlow33 = (1.0f - (_state.fSlow8 * _state.fSlow32));
3111
+ _state.fSlow34 = (1.0f - _state.fSlow32);
3112
+ _state.fSlow35 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow33, 2.0f) / intrinsics::pow (_state.fSlow34, 2.0f)) + -1.0f));
3113
+ _state.fSlow36 = (_state.fSlow33 / _state.fSlow34);
3114
+ _state.fSlow37 = (_state.fSlow31 * (_state.fSlow35 + (1.0f - _state.fSlow36)));
3115
+ _state.fSlow38 = ((intrinsics::exp (- (_state.fConst17 / _state.fSlow15)) / _state.fSlow31) + -1.0f);
3116
+ _state.fSlow39 = (_state.fSlow36 - _state.fSlow35);
3117
+ _state.fSlow40 = intrinsics::exp (- (_state.fConst22 / _state.fSlow6));
3118
+ _state.fSlow41 = intrinsics::pow (_state.fSlow40, 2.0f);
3119
+ _state.fSlow42 = (1.0f - (_state.fSlow8 * _state.fSlow41));
3120
+ _state.fSlow43 = (1.0f - _state.fSlow41);
3121
+ _state.fSlow44 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow42, 2.0f) / intrinsics::pow (_state.fSlow43, 2.0f)) + -1.0f));
3122
+ _state.fSlow45 = (_state.fSlow42 / _state.fSlow43);
3123
+ _state.fSlow46 = (_state.fSlow40 * (_state.fSlow44 + (1.0f - _state.fSlow45)));
3124
+ _state.fSlow47 = ((intrinsics::exp (- (_state.fConst22 / _state.fSlow15)) / _state.fSlow40) + -1.0f);
3125
+ _state.fSlow48 = (_state.fSlow45 - _state.fSlow44);
3126
+ _state.fSlow49 = intrinsics::exp (- (_state.fConst27 / _state.fSlow6));
3127
+ _state.fSlow50 = intrinsics::pow (_state.fSlow49, 2.0f);
3128
+ _state.fSlow51 = (1.0f - (_state.fSlow8 * _state.fSlow50));
3129
+ _state.fSlow52 = (1.0f - _state.fSlow50);
3130
+ _state.fSlow53 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow51, 2.0f) / intrinsics::pow (_state.fSlow52, 2.0f)) + -1.0f));
3131
+ _state.fSlow54 = (_state.fSlow51 / _state.fSlow52);
3132
+ _state.fSlow55 = (_state.fSlow49 * (_state.fSlow53 + (1.0f - _state.fSlow54)));
3133
+ _state.fSlow56 = ((intrinsics::exp (- (_state.fConst27 / _state.fSlow15)) / _state.fSlow49) + -1.0f);
3134
+ _state.fSlow57 = (_state.fSlow54 - _state.fSlow53);
3135
+ _state.fSlow58 = intrinsics::exp (- (_state.fConst32 / _state.fSlow6));
3136
+ _state.fSlow59 = intrinsics::pow (_state.fSlow58, 2.0f);
3137
+ _state.fSlow60 = (1.0f - (_state.fSlow8 * _state.fSlow59));
3138
+ _state.fSlow61 = (1.0f - _state.fSlow59);
3139
+ _state.fSlow62 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow60, 2.0f) / intrinsics::pow (_state.fSlow61, 2.0f)) + -1.0f));
3140
+ _state.fSlow63 = (_state.fSlow60 / _state.fSlow61);
3141
+ _state.fSlow64 = (_state.fSlow58 * (_state.fSlow62 + (1.0f - _state.fSlow63)));
3142
+ _state.fSlow65 = ((intrinsics::exp (- (_state.fConst32 / _state.fSlow15)) / _state.fSlow58) + -1.0f);
3143
+ _state.fSlow66 = (_state.fSlow63 - _state.fSlow62);
3144
+ _state.fSlow67 = intrinsics::exp (- (_state.fConst37 / _state.fSlow6));
3145
+ _state.fSlow68 = intrinsics::pow (_state.fSlow67, 2.0f);
3146
+ _state.fSlow69 = (1.0f - (_state.fSlow8 * _state.fSlow68));
3147
+ _state.fSlow70 = (1.0f - _state.fSlow68);
3148
+ _state.fSlow71 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow69, 2.0f) / intrinsics::pow (_state.fSlow70, 2.0f)) + -1.0f));
3149
+ _state.fSlow72 = (_state.fSlow69 / _state.fSlow70);
3150
+ _state.fSlow73 = (_state.fSlow67 * (_state.fSlow71 + (1.0f - _state.fSlow72)));
3151
+ _state.fSlow74 = ((intrinsics::exp (- (_state.fConst37 / _state.fSlow15)) / _state.fSlow67) + -1.0f);
3152
+ _state.fSlow75 = (_state.fSlow72 - _state.fSlow71);
3153
+ _state.fSlow76 = intrinsics::exp (- (_state.fConst42 / _state.fSlow6));
3154
+ _state.fSlow77 = intrinsics::pow (_state.fSlow76, 2.0f);
3155
+ _state.fSlow78 = (1.0f - (_state.fSlow77 * _state.fSlow8));
3156
+ _state.fSlow79 = (1.0f - _state.fSlow77);
3157
+ _state.fSlow80 = intrinsics::sqrt (intrinsics::max (0.0f, (intrinsics::pow (_state.fSlow78, 2.0f) / intrinsics::pow (_state.fSlow79, 2.0f)) + -1.0f));
3158
+ _state.fSlow81 = (_state.fSlow78 / _state.fSlow79);
3159
+ _state.fSlow82 = (_state.fSlow76 * (_state.fSlow80 + (1.0f - _state.fSlow81)));
3160
+ _state.fSlow83 = ((intrinsics::exp (- (_state.fConst42 / _state.fSlow15)) / _state.fSlow76) + -1.0f);
3161
+ _state.fSlow84 = (_state.fSlow81 - _state.fSlow80);
3162
+ _state.fSlow85 = (intrinsics::cos (_state.fConst3 * _state.fSlow2) * (_state.fSlow5 + 1.0f));
3163
+ _state.fSlow86 = _state.fVslider9;
3164
+ _state.fSlow87 = intrinsics::pow (10.0f, 0.05f * _state.fVslider10);
3165
+ _state.fSlow88 = (_state.fConst3 * (_state.fSlow86 / intrinsics::sqrt (intrinsics::max (0.0f, _state.fSlow87))));
3166
+ _state.fSlow89 = ((1.0f - _state.fSlow88) / (_state.fSlow88 + 1.0f));
3167
+ _state.fSlow90 = (intrinsics::cos (_state.fConst3 * _state.fSlow86) * (_state.fSlow89 + 1.0f));
3168
+ }
3169
+
3170
+ float std__intrinsics__sqrt (float n) noexcept
3171
+ {
3172
+ {
3173
+ return 0.0f;
3174
+ }
3175
+ }
3176
+
3177
+ void faust__echo__main (faust_echo_1_State& _state, faust_reverb_1_IO& _io) noexcept
3178
+ {
3179
+ for (;;)
3180
+ {
3181
+ if (_state.fUpdated)
3182
+ {
3183
+ _state.fUpdated = false;
3184
+ faust__echo__control (_state);
3185
+ }
3186
+ _state.fRec0[(_state.IOTA0 & 0x1fffff) & 0x1fffff] = (_io.input0 + (0.7f * _state.fRec0[((_state.IOTA0 - _state.iSlow0) & 0x1fffff) & 0x1fffff]));
3187
+ _io.output0 = (_io.output0 + _state.fRec0[(_state.IOTA0 & 0x1fffff) & 0x1fffff]);
3188
+ _state.fRec1[(_state.IOTA0 & 0x1fffff) & 0x1fffff] = (_io.input1 + (0.7f * _state.fRec1[((_state.IOTA0 - _state.iSlow0) & 0x1fffff) & 0x1fffff]));
3189
+ _io.output1 = (_io.output1 + _state.fRec1[(_state.IOTA0 & 0x1fffff) & 0x1fffff]);
3190
+ _state.IOTA0 = (_state.IOTA0 + 1);
3191
+ return;
3192
+ }
3193
+ }
3194
+
3195
+ void faust__echo__control (faust_echo_1_State& _state) noexcept
3196
+ {
3197
+ _state.iSlow0 = (static_cast<int32_t> (_state.fConst0 * _state.fVslider0) + 1);
3198
+ }
3199
+
3200
+ //==============================================================================
3201
+ const char* getStringForHandle (uint32_t handle, size_t& stringLength)
3202
+ {
3203
+ (void) handle; (void) stringLength;
3204
+ return "";
3205
+ }
3206
+
3207
+ //==============================================================================
3208
+ int32_t _sessionID {};
3209
+ double _frequency {};
3210
+ const Array<_HelloWorld_1_Note, 13> melody { Array<_HelloWorld_1_Note, 13> { _HelloWorld_1_Note { 79, 1 }, _HelloWorld_1_Note { 77, 1 }, _HelloWorld_1_Note { 69, 2 }, _HelloWorld_1_Note { 71, 2 }, _HelloWorld_1_Note { 76, 1 }, _HelloWorld_1_Note { 74, 1 }, _HelloWorld_1_Note { 65, 2 }, _HelloWorld_1_Note { 67, 2 }, _HelloWorld_1_Note { 74, 1 }, _HelloWorld_1_Note { 72, 1 }, _HelloWorld_1_Note { 64, 2 }, _HelloWorld_1_Note { 67, 2 }, _HelloWorld_1_Note { 72, 4 } } };
3211
+ static constexpr float volume { 0.15f };
3212
+
3213
+ //==============================================================================
3214
+ struct intrinsics
3215
+ {
3216
+ template <typename T> static T modulo (T a, T b)
3217
+ {
3218
+ if constexpr (std::is_floating_point<T>::value)
3219
+ return std::fmod (a, b);
3220
+ else
3221
+ return a % b;
3222
+ }
3223
+
3224
+ template <typename T> static T addModulo2Pi (T a, T b)
3225
+ {
3226
+ constexpr auto twoPi = static_cast<T> (3.141592653589793238 * 2);
3227
+ auto n = a + b;
3228
+ return n >= twoPi ? std::remainder (n, twoPi) : n;
3229
+ }
3230
+
3231
+ template <typename T> static T abs (T a) { return std::abs (a); }
3232
+ template <typename T> static T min (T a, T b) { return std::min (a, b); }
3233
+ template <typename T> static T max (T a, T b) { return std::max (a, b); }
3234
+ template <typename T> static T clamp (T a, T b, T c) { return a < b ? b : (a > c ? c : a); }
3235
+ template <typename T> static T wrap (T a, T b) { if (b == 0) return 0; auto n = modulo (a, b); if (n < 0) n += b; return n; }
3236
+ template <typename T> static T fmod (T a, T b) { return b != 0 ? std::fmod (a, b) : 0; }
3237
+ template <typename T> static T remainder (T a, T b) { return b != 0 ? std::remainder (a, b) : 0; }
3238
+ template <typename T> static T floor (T a) { return std::floor (a); }
3239
+ template <typename T> static T ceil (T a) { return std::ceil (a); }
3240
+ template <typename T> static T rint (T a) { return std::rint (a); }
3241
+ template <typename T> static T sqrt (T a) { return std::sqrt (a); }
3242
+ template <typename T> static T pow (T a, T b) { return std::pow (a, b); }
3243
+ template <typename T> static T exp (T a) { return std::exp (a); }
3244
+ template <typename T> static T log (T a) { return std::log (a); }
3245
+ template <typename T> static T log10 (T a) { return std::log10 (a); }
3246
+ template <typename T> static T sin (T a) { return std::sin (a); }
3247
+ template <typename T> static T cos (T a) { return std::cos (a); }
3248
+ template <typename T> static T tan (T a) { return std::tan (a); }
3249
+ template <typename T> static T sinh (T a) { return std::sinh (a); }
3250
+ template <typename T> static T cosh (T a) { return std::cosh (a); }
3251
+ template <typename T> static T tanh (T a) { return std::tanh (a); }
3252
+ template <typename T> static T asinh (T a) { return std::asinh (a); }
3253
+ template <typename T> static T acosh (T a) { return std::acosh (a); }
3254
+ template <typename T> static T atanh (T a) { return std::atanh (a); }
3255
+ template <typename T> static T asin (T a) { return std::asin (a); }
3256
+ template <typename T> static T acos (T a) { return std::acos (a); }
3257
+ template <typename T> static T atan (T a) { return std::atan (a); }
3258
+ template <typename T> static T atan2 (T a, T b) { return std::atan2 (a, b); }
3259
+ template <typename T> static T isnan (T a) { return std::isnan (a) ? 1 : 0; }
3260
+ template <typename T> static T isinf (T a) { return std::isinf (a) ? 1 : 0; }
3261
+
3262
+ static int32_t reinterpretFloatToInt (float a) { int32_t i; memcpy (std::addressof(i), std::addressof(a), sizeof(i)); return i; }
3263
+ static int64_t reinterpretFloatToInt (double a) { int64_t i; memcpy (std::addressof(i), std::addressof(a), sizeof(i)); return i; }
3264
+ static float reinterpretIntToFloat (int32_t a) { float f; memcpy (std::addressof(f), std::addressof(a), sizeof(f)); return f; }
3265
+ static double reinterpretIntToFloat (int64_t a) { double f; memcpy (std::addressof(f), std::addressof(a), sizeof(f)); return f; }
3266
+
3267
+ static int32_t rightShiftUnsigned (int32_t a, int32_t b) { return static_cast<int32_t> (static_cast<uint32_t> (a) >> b); }
3268
+ static int64_t rightShiftUnsigned (int64_t a, int64_t b) { return static_cast<int64_t> (static_cast<uint64_t> (a) >> b); }
3269
+
3270
+ struct VectorOps
3271
+ {
3272
+ template <typename Vec> static Vec abs (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::abs (x); }); }
3273
+ template <typename Vec> static Vec min (Vec a, Vec b) { return a.performBinaryOp (b, [] (auto x, auto y) { return intrinsics::min (x, y); }); }
3274
+ template <typename Vec> static Vec max (Vec a, Vec b) { return a.performBinaryOp (b, [] (auto x, auto y) { return intrinsics::max (x, y); }); }
3275
+ template <typename Vec> static Vec sqrt (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::sqrt (x); }); }
3276
+ template <typename Vec> static Vec log (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::log (x); }); }
3277
+ template <typename Vec> static Vec log10 (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::log10 (x); }); }
3278
+ template <typename Vec> static Vec sin (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::sin (x); }); }
3279
+ template <typename Vec> static Vec cos (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::cos (x); }); }
3280
+ template <typename Vec> static Vec tan (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::tan (x); }); }
3281
+ template <typename Vec> static Vec sinh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::sinh (x); }); }
3282
+ template <typename Vec> static Vec cosh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::cosh (x); }); }
3283
+ template <typename Vec> static Vec tanh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::tanh (x); }); }
3284
+ template <typename Vec> static Vec asinh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::asinh (x); }); }
3285
+ template <typename Vec> static Vec acosh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::acosh (x); }); }
3286
+ template <typename Vec> static Vec atanh (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::atanh (x); }); }
3287
+ template <typename Vec> static Vec asin (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::asin (x); }); }
3288
+ template <typename Vec> static Vec acos (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::acos (x); }); }
3289
+ template <typename Vec> static Vec atan (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::atan (x); }); }
3290
+ template <typename Vec> static Vec atan2 (Vec a, Vec b) { return a.performBinaryOp (b, [] (auto x, auto y) { return intrinsics::atan2 (x, y); }); }
3291
+ template <typename Vec> static Vec pow (Vec a, Vec b) { return a.performBinaryOp (b, [] (auto x, auto y) { return intrinsics::pow (x, y); }); }
3292
+ template <typename Vec> static Vec exp (Vec a) { return a.performUnaryOp ([] (auto x) { return intrinsics::exp (x); }); }
3293
+ };
3294
+ };
3295
+
3296
+ static constexpr float _inf32 = std::numeric_limits<float>::infinity();
3297
+ static constexpr double _inf64 = std::numeric_limits<double>::infinity();
3298
+ static constexpr float _ninf32 = -std::numeric_limits<float>::infinity();
3299
+ static constexpr double _ninf64 = -std::numeric_limits<double>::infinity();
3300
+ static constexpr float _nan32 = std::numeric_limits<float>::quiet_NaN();
3301
+ static constexpr double _nan64 = std::numeric_limits<double>::quiet_NaN();
3302
+
3303
+ //==============================================================================
3304
+ #if __clang__
3305
+ #pragma clang diagnostic pop
3306
+ #elif __GNUC__
3307
+ #pragma GCC diagnostic pop
3308
+ #else
3309
+ #pragma warning (pop)
3310
+ #endif
3311
+ };
3312
+