jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3128 lines
105KB

  1. //-----------------------------------------------------
  2. // name: "freeverb"
  3. // version: "1.0"
  4. // author: "Grame"
  5. // license: "BSD"
  6. // copyright: "(c)GRAME 2006"
  7. //
  8. // Code generated with Faust 0.9.10 (http://faust.grame.fr)
  9. //-----------------------------------------------------
  10. /* link with */
  11. /* link with */
  12. #include <math.h>
  13. /* link with */
  14. #include <stdlib.h>
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <limits.h>
  18. #include <math.h>
  19. #include <errno.h>
  20. #include <time.h>
  21. #include <sys/ioctl.h>
  22. #include <unistd.h>
  23. #include <fcntl.h>
  24. #include <pwd.h>
  25. #include <sys/types.h>
  26. #include <assert.h>
  27. #include <pthread.h>
  28. #include <sys/wait.h>
  29. #include <list>
  30. #include <vector>
  31. #include <iostream>
  32. #include <fstream>
  33. #include <stack>
  34. #include <list>
  35. #include <map>
  36. #include <libgen.h>
  37. #include <AudioToolbox/AudioConverter.h>
  38. #include <AudioToolbox/AudioServices.h>
  39. #include <AudioUnit/AudioUnit.h>
  40. #include "HardwareClock.h"
  41. using namespace std;
  42. // On Intel set FZ (Flush to Zero) and DAZ (Denormals Are Zero)
  43. // flags to avoid costly denormals
  44. #ifdef __SSE__
  45. #include <xmmintrin.h>
  46. #ifdef __SSE2__
  47. #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8040)
  48. #else
  49. #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8000)
  50. #endif
  51. #else
  52. #define AVOIDDENORMALS
  53. #endif
  54. //#define BENCHMARKMODE
  55. struct Meta : map<const char*, const char*>
  56. {
  57. void declare (const char* key, const char* value) { (*this)[key] = value; }
  58. };
  59. //inline void *aligned_calloc(size_t nmemb, size_t size) { return (void*)((unsigned)(calloc((nmemb*size)+15,sizeof(char)))+15 & 0xfffffff0); }
  60. // g++ -O3 -lm -ljack `gtk-config --cflags --libs` ex2.cpp
  61. #define max(x,y) (((x)>(y)) ? (x) : (y))
  62. #define min(x,y) (((x)<(y)) ? (x) : (y))
  63. inline int lsr(int x, int n) { return int(((unsigned int)x) >> n); }
  64. inline int int2pow2(int x) { int r=0; while ((1<<r)<x) r++; return r; }
  65. /******************************************************************************
  66. *******************************************************************************
  67. VECTOR INTRINSICS
  68. *******************************************************************************
  69. *******************************************************************************/
  70. /******************************************************************************
  71. *******************************************************************************
  72. USER INTERFACE
  73. *******************************************************************************
  74. *******************************************************************************/
  75. class UI
  76. {
  77. bool fStopped;
  78. public:
  79. UI() : fStopped(false) {}
  80. virtual ~UI() {}
  81. // -- active widgets
  82. virtual void addButton(const char* label, float* zone) = 0;
  83. virtual void addToggleButton(const char* label, float* zone) = 0;
  84. virtual void addCheckButton(const char* label, float* zone) = 0;
  85. virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0;
  86. virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0;
  87. virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step) = 0;
  88. // -- passive widgets
  89. virtual void addNumDisplay(const char* label, float* zone, int precision) = 0;
  90. virtual void addTextDisplay(const char* label, float* zone, char* names[], float min, float max) = 0;
  91. virtual void addHorizontalBargraph(const char* label, float* zone, float min, float max) = 0;
  92. virtual void addVerticalBargraph(const char* label, float* zone, float min, float max) = 0;
  93. // -- frames and labels
  94. virtual void openFrameBox(const char* label) = 0;
  95. virtual void openTabBox(const char* label) = 0;
  96. virtual void openHorizontalBox(const char* label) = 0;
  97. virtual void openVerticalBox(const char* label) = 0;
  98. virtual void closeBox() = 0;
  99. virtual void show() = 0;
  100. virtual void run() = 0;
  101. void stop() { fStopped = true; }
  102. bool stopped() { return fStopped; }
  103. virtual void declare(float* zone, const char* key, const char* value) {}
  104. };
  105. struct param {
  106. float* fZone; float fMin; float fMax;
  107. param(float* z, float a, float b) : fZone(z), fMin(a), fMax(b) {}
  108. };
  109. class CMDUI : public UI
  110. {
  111. int fArgc;
  112. char** fArgv;
  113. stack<string> fPrefix;
  114. map<string, param> fKeyParam;
  115. void addOption(const char* label, float* zone, float init, float min, float max)
  116. {
  117. string fullname = fPrefix.top() + label;
  118. fKeyParam.insert(make_pair(fullname, param(zone, min, max)));
  119. *zone = init;
  120. }
  121. void openAnyBox(const char* label)
  122. {
  123. string prefix;
  124. if (label && label[0]) {
  125. prefix = fPrefix.top() + "-" + label;
  126. } else {
  127. prefix = fPrefix.top();
  128. }
  129. fPrefix.push(prefix);
  130. }
  131. public:
  132. CMDUI(int argc, char *argv[]) : UI(), fArgc(argc), fArgv(argv) { fPrefix.push("--"); }
  133. virtual ~CMDUI() {}
  134. virtual void addButton(const char* label, float* zone) {};
  135. virtual void addToggleButton(const char* label, float* zone) {};
  136. virtual void addCheckButton(const char* label, float* zone) {};
  137. virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step)
  138. {
  139. addOption(label,zone,init, min,max);
  140. }
  141. virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step)
  142. {
  143. addOption(label,zone,init, min,max);
  144. }
  145. virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step)
  146. {
  147. addOption(label,zone,init, min,max);
  148. }
  149. // -- passive widgets
  150. virtual void addNumDisplay(const char* label, float* zone, int precision) {}
  151. virtual void addTextDisplay(const char* label, float* zone, char* names[], float min, float max) {}
  152. virtual void addHorizontalBargraph(const char* label, float* zone, float min, float max) {}
  153. virtual void addVerticalBargraph(const char* label, float* zone, float min, float max) {}
  154. virtual void openFrameBox(const char* label) { openAnyBox(label); }
  155. virtual void openTabBox(const char* label) { openAnyBox(label); }
  156. virtual void openHorizontalBox(const char* label) { openAnyBox(label); }
  157. virtual void openVerticalBox(const char* label) { openAnyBox(label); }
  158. virtual void closeBox() { fPrefix.pop(); }
  159. virtual void show() {}
  160. virtual void run()
  161. {
  162. char c;
  163. printf("Type 'q' to quit\n");
  164. while ((c = getchar()) != 'q') {
  165. sleep(1);
  166. }
  167. }
  168. void print()
  169. {
  170. map<string, param>::iterator i;
  171. cout << fArgc << "\n";
  172. cout << fArgv[0] << " option list : ";
  173. for (i = fKeyParam.begin(); i != fKeyParam.end(); i++) {
  174. cout << "[ " << i->first << " " << i->second.fMin << ".." << i->second.fMax <<" ] ";
  175. }
  176. }
  177. void process_command()
  178. {
  179. map<string, param>::iterator p;
  180. for (int i = 1; i < fArgc; i++) {
  181. if (fArgv[i][0] == '-') {
  182. p = fKeyParam.find(fArgv[i]);
  183. if (p == fKeyParam.end()) {
  184. cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
  185. print();
  186. exit(1);
  187. }
  188. char* end;
  189. *(p->second.fZone) = float(strtod(fArgv[i+1], &end));
  190. i++;
  191. }
  192. }
  193. }
  194. void process_init()
  195. {
  196. map<string, param>::iterator p;
  197. for (int i = 1; i < fArgc; i++) {
  198. if (fArgv[i][0] == '-') {
  199. p = fKeyParam.find(fArgv[i]);
  200. if (p == fKeyParam.end()) {
  201. cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
  202. exit(1);
  203. }
  204. char* end;
  205. *(p->second.fZone) = float(strtod(fArgv[i+1], &end));
  206. i++;
  207. }
  208. }
  209. }
  210. };
  211. /******************************************************************************
  212. *******************************************************************************
  213. FAUST DSP
  214. *******************************************************************************
  215. *******************************************************************************/
  216. //----------------------------------------------------------------
  217. // abstract definition of a signal processor
  218. //----------------------------------------------------------------
  219. class dsp {
  220. protected:
  221. int fSamplingFreq;
  222. public:
  223. dsp() {}
  224. virtual ~dsp() {}
  225. virtual int getNumInputs() = 0;
  226. virtual int getNumOutputs() = 0;
  227. virtual void buildUserInterface(UI* interface) = 0;
  228. virtual void init(int samplingRate) = 0;
  229. virtual void compute(int len, float** inputs, float** outputs) = 0;
  230. };
  231. //----------------------------------------------------------------------------
  232. // FAUST generated signal processor
  233. //----------------------------------------------------------------------------
  234. #ifndef FAUSTFLOAT
  235. #define FAUSTFLOAT float
  236. #endif
  237. typedef long double quad;
  238. class mydsp : public dsp{
  239. private:
  240. FAUSTFLOAT fslider0;
  241. float fRec9_perm[4];
  242. FAUSTFLOAT fslider1;
  243. float fRec19_perm[4];
  244. float fYec0[4096];
  245. int fYec0_idx;
  246. int fYec0_idx_save;
  247. float fRec18_perm[4];
  248. float fRec21_perm[4];
  249. float fYec1[4096];
  250. int fYec1_idx;
  251. int fYec1_idx_save;
  252. float fRec20_perm[4];
  253. float fRec23_perm[4];
  254. float fYec2[4096];
  255. int fYec2_idx;
  256. int fYec2_idx_save;
  257. float fRec22_perm[4];
  258. float fRec25_perm[4];
  259. float fYec3[4096];
  260. int fYec3_idx;
  261. int fYec3_idx_save;
  262. float fRec24_perm[4];
  263. float fRec27_perm[4];
  264. float fYec4[4096];
  265. int fYec4_idx;
  266. int fYec4_idx_save;
  267. float fRec26_perm[4];
  268. float fRec29_perm[4];
  269. float fYec5[4096];
  270. int fYec5_idx;
  271. int fYec5_idx_save;
  272. float fRec28_perm[4];
  273. float fRec31_perm[4];
  274. float fYec6[4096];
  275. int fYec6_idx;
  276. int fYec6_idx_save;
  277. float fRec30_perm[4];
  278. float fRec33_perm[4];
  279. float fYec7[4096];
  280. int fYec7_idx;
  281. int fYec7_idx_save;
  282. float fRec32_perm[4];
  283. float fYec8[2048];
  284. int fYec8_idx;
  285. int fYec8_idx_save;
  286. float fRec16_perm[4];
  287. float fYec9[2048];
  288. int fYec9_idx;
  289. int fYec9_idx_save;
  290. float fRec14_perm[4];
  291. float fYec10[2048];
  292. int fYec10_idx;
  293. int fYec10_idx_save;
  294. float fRec12_perm[4];
  295. float fYec11[2048];
  296. int fYec11_idx;
  297. int fYec11_idx_save;
  298. float fRec10_perm[4];
  299. FAUSTFLOAT fslider2;
  300. float fRec43_perm[4];
  301. float fYec12[4096];
  302. int fYec12_idx;
  303. int fYec12_idx_save;
  304. float fRec42_perm[4];
  305. float fRec45_perm[4];
  306. float fYec13[4096];
  307. int fYec13_idx;
  308. int fYec13_idx_save;
  309. float fRec44_perm[4];
  310. float fRec47_perm[4];
  311. float fYec14[4096];
  312. int fYec14_idx;
  313. int fYec14_idx_save;
  314. float fRec46_perm[4];
  315. float fRec49_perm[4];
  316. float fYec15[4096];
  317. int fYec15_idx;
  318. int fYec15_idx_save;
  319. float fRec48_perm[4];
  320. float fRec51_perm[4];
  321. float fYec16[4096];
  322. int fYec16_idx;
  323. int fYec16_idx_save;
  324. float fRec50_perm[4];
  325. float fRec53_perm[4];
  326. float fYec17[4096];
  327. int fYec17_idx;
  328. int fYec17_idx_save;
  329. float fRec52_perm[4];
  330. float fRec55_perm[4];
  331. float fYec18[4096];
  332. int fYec18_idx;
  333. int fYec18_idx_save;
  334. float fRec54_perm[4];
  335. float fRec57_perm[4];
  336. float fYec19[4096];
  337. int fYec19_idx;
  338. int fYec19_idx_save;
  339. float fRec56_perm[4];
  340. float fYec20[2048];
  341. int fYec20_idx;
  342. int fYec20_idx_save;
  343. float fRec40_perm[4];
  344. float fYec21[2048];
  345. int fYec21_idx;
  346. int fYec21_idx_save;
  347. float fRec38_perm[4];
  348. float fYec22[2048];
  349. int fYec22_idx;
  350. int fYec22_idx_save;
  351. float fRec36_perm[4];
  352. float fYec23[2048];
  353. int fYec23_idx;
  354. int fYec23_idx_save;
  355. float fRec34_perm[4];
  356. float fYec24[4096];
  357. int fYec24_idx;
  358. int fYec24_idx_save;
  359. float fRec8_perm[4];
  360. float fRec59_perm[4];
  361. float fYec25[4096];
  362. int fYec25_idx;
  363. int fYec25_idx_save;
  364. float fRec58_perm[4];
  365. float fRec61_perm[4];
  366. float fYec26[4096];
  367. int fYec26_idx;
  368. int fYec26_idx_save;
  369. float fRec60_perm[4];
  370. float fRec63_perm[4];
  371. float fYec27[4096];
  372. int fYec27_idx;
  373. int fYec27_idx_save;
  374. float fRec62_perm[4];
  375. float fRec65_perm[4];
  376. float fYec28[4096];
  377. int fYec28_idx;
  378. int fYec28_idx_save;
  379. float fRec64_perm[4];
  380. float fRec67_perm[4];
  381. float fYec29[4096];
  382. int fYec29_idx;
  383. int fYec29_idx_save;
  384. float fRec66_perm[4];
  385. float fRec69_perm[4];
  386. float fYec30[4096];
  387. int fYec30_idx;
  388. int fYec30_idx_save;
  389. float fRec68_perm[4];
  390. float fRec71_perm[4];
  391. float fYec31[4096];
  392. int fYec31_idx;
  393. int fYec31_idx_save;
  394. float fRec70_perm[4];
  395. float fYec32[2048];
  396. int fYec32_idx;
  397. int fYec32_idx_save;
  398. float fRec6_perm[4];
  399. float fYec33[2048];
  400. int fYec33_idx;
  401. int fYec33_idx_save;
  402. float fRec4_perm[4];
  403. float fYec34[2048];
  404. int fYec34_idx;
  405. int fYec34_idx_save;
  406. float fRec2_perm[4];
  407. float fYec35[2048];
  408. int fYec35_idx;
  409. int fYec35_idx_save;
  410. float fRec0_perm[4];
  411. float fRec81_perm[4];
  412. float fYec36[4096];
  413. int fYec36_idx;
  414. int fYec36_idx_save;
  415. float fRec80_perm[4];
  416. float fRec83_perm[4];
  417. float fYec37[4096];
  418. int fYec37_idx;
  419. int fYec37_idx_save;
  420. float fRec82_perm[4];
  421. float fRec85_perm[4];
  422. float fYec38[4096];
  423. int fYec38_idx;
  424. int fYec38_idx_save;
  425. float fRec84_perm[4];
  426. float fRec87_perm[4];
  427. float fYec39[4096];
  428. int fYec39_idx;
  429. int fYec39_idx_save;
  430. float fRec86_perm[4];
  431. float fRec89_perm[4];
  432. float fYec40[4096];
  433. int fYec40_idx;
  434. int fYec40_idx_save;
  435. float fRec88_perm[4];
  436. float fRec91_perm[4];
  437. float fYec41[4096];
  438. int fYec41_idx;
  439. int fYec41_idx_save;
  440. float fRec90_perm[4];
  441. float fRec93_perm[4];
  442. float fYec42[4096];
  443. int fYec42_idx;
  444. int fYec42_idx_save;
  445. float fRec92_perm[4];
  446. float fRec95_perm[4];
  447. float fYec43[4096];
  448. int fYec43_idx;
  449. int fYec43_idx_save;
  450. float fRec94_perm[4];
  451. float fYec44[2048];
  452. int fYec44_idx;
  453. int fYec44_idx_save;
  454. float fRec78_perm[4];
  455. float fYec45[2048];
  456. int fYec45_idx;
  457. int fYec45_idx_save;
  458. float fRec76_perm[4];
  459. float fYec46[2048];
  460. int fYec46_idx;
  461. int fYec46_idx_save;
  462. float fRec74_perm[4];
  463. float fYec47[2048];
  464. int fYec47_idx;
  465. int fYec47_idx_save;
  466. float fRec72_perm[4];
  467. public:
  468. static void metadata(Meta* m) {
  469. m->declare("name", "freeverb");
  470. m->declare("version", "1.0");
  471. m->declare("author", "Grame");
  472. m->declare("license", "BSD");
  473. m->declare("copyright", "(c)GRAME 2006");
  474. }
  475. virtual int getNumInputs() { return 2; }
  476. virtual int getNumOutputs() { return 2; }
  477. static void classInit(int samplingFreq) {
  478. }
  479. virtual void instanceInit(int samplingFreq) {
  480. fSamplingFreq = samplingFreq;
  481. fslider0 = 0.5f;
  482. for (int i=0; i<4; i++) fRec9_perm[i]=0;
  483. fslider1 = 0.5f;
  484. for (int i=0; i<4; i++) fRec19_perm[i]=0;
  485. for (int i=0; i<4096; i++) fYec0[i]=0;
  486. fYec0_idx = 0;
  487. fYec0_idx_save = 0;
  488. for (int i=0; i<4; i++) fRec18_perm[i]=0;
  489. for (int i=0; i<4; i++) fRec21_perm[i]=0;
  490. for (int i=0; i<4096; i++) fYec1[i]=0;
  491. fYec1_idx = 0;
  492. fYec1_idx_save = 0;
  493. for (int i=0; i<4; i++) fRec20_perm[i]=0;
  494. for (int i=0; i<4; i++) fRec23_perm[i]=0;
  495. for (int i=0; i<4096; i++) fYec2[i]=0;
  496. fYec2_idx = 0;
  497. fYec2_idx_save = 0;
  498. for (int i=0; i<4; i++) fRec22_perm[i]=0;
  499. for (int i=0; i<4; i++) fRec25_perm[i]=0;
  500. for (int i=0; i<4096; i++) fYec3[i]=0;
  501. fYec3_idx = 0;
  502. fYec3_idx_save = 0;
  503. for (int i=0; i<4; i++) fRec24_perm[i]=0;
  504. for (int i=0; i<4; i++) fRec27_perm[i]=0;
  505. for (int i=0; i<4096; i++) fYec4[i]=0;
  506. fYec4_idx = 0;
  507. fYec4_idx_save = 0;
  508. for (int i=0; i<4; i++) fRec26_perm[i]=0;
  509. for (int i=0; i<4; i++) fRec29_perm[i]=0;
  510. for (int i=0; i<4096; i++) fYec5[i]=0;
  511. fYec5_idx = 0;
  512. fYec5_idx_save = 0;
  513. for (int i=0; i<4; i++) fRec28_perm[i]=0;
  514. for (int i=0; i<4; i++) fRec31_perm[i]=0;
  515. for (int i=0; i<4096; i++) fYec6[i]=0;
  516. fYec6_idx = 0;
  517. fYec6_idx_save = 0;
  518. for (int i=0; i<4; i++) fRec30_perm[i]=0;
  519. for (int i=0; i<4; i++) fRec33_perm[i]=0;
  520. for (int i=0; i<4096; i++) fYec7[i]=0;
  521. fYec7_idx = 0;
  522. fYec7_idx_save = 0;
  523. for (int i=0; i<4; i++) fRec32_perm[i]=0;
  524. for (int i=0; i<2048; i++) fYec8[i]=0;
  525. fYec8_idx = 0;
  526. fYec8_idx_save = 0;
  527. for (int i=0; i<4; i++) fRec16_perm[i]=0;
  528. for (int i=0; i<2048; i++) fYec9[i]=0;
  529. fYec9_idx = 0;
  530. fYec9_idx_save = 0;
  531. for (int i=0; i<4; i++) fRec14_perm[i]=0;
  532. for (int i=0; i<2048; i++) fYec10[i]=0;
  533. fYec10_idx = 0;
  534. fYec10_idx_save = 0;
  535. for (int i=0; i<4; i++) fRec12_perm[i]=0;
  536. for (int i=0; i<2048; i++) fYec11[i]=0;
  537. fYec11_idx = 0;
  538. fYec11_idx_save = 0;
  539. for (int i=0; i<4; i++) fRec10_perm[i]=0;
  540. fslider2 = 0.3333f;
  541. for (int i=0; i<4; i++) fRec43_perm[i]=0;
  542. for (int i=0; i<4096; i++) fYec12[i]=0;
  543. fYec12_idx = 0;
  544. fYec12_idx_save = 0;
  545. for (int i=0; i<4; i++) fRec42_perm[i]=0;
  546. for (int i=0; i<4; i++) fRec45_perm[i]=0;
  547. for (int i=0; i<4096; i++) fYec13[i]=0;
  548. fYec13_idx = 0;
  549. fYec13_idx_save = 0;
  550. for (int i=0; i<4; i++) fRec44_perm[i]=0;
  551. for (int i=0; i<4; i++) fRec47_perm[i]=0;
  552. for (int i=0; i<4096; i++) fYec14[i]=0;
  553. fYec14_idx = 0;
  554. fYec14_idx_save = 0;
  555. for (int i=0; i<4; i++) fRec46_perm[i]=0;
  556. for (int i=0; i<4; i++) fRec49_perm[i]=0;
  557. for (int i=0; i<4096; i++) fYec15[i]=0;
  558. fYec15_idx = 0;
  559. fYec15_idx_save = 0;
  560. for (int i=0; i<4; i++) fRec48_perm[i]=0;
  561. for (int i=0; i<4; i++) fRec51_perm[i]=0;
  562. for (int i=0; i<4096; i++) fYec16[i]=0;
  563. fYec16_idx = 0;
  564. fYec16_idx_save = 0;
  565. for (int i=0; i<4; i++) fRec50_perm[i]=0;
  566. for (int i=0; i<4; i++) fRec53_perm[i]=0;
  567. for (int i=0; i<4096; i++) fYec17[i]=0;
  568. fYec17_idx = 0;
  569. fYec17_idx_save = 0;
  570. for (int i=0; i<4; i++) fRec52_perm[i]=0;
  571. for (int i=0; i<4; i++) fRec55_perm[i]=0;
  572. for (int i=0; i<4096; i++) fYec18[i]=0;
  573. fYec18_idx = 0;
  574. fYec18_idx_save = 0;
  575. for (int i=0; i<4; i++) fRec54_perm[i]=0;
  576. for (int i=0; i<4; i++) fRec57_perm[i]=0;
  577. for (int i=0; i<4096; i++) fYec19[i]=0;
  578. fYec19_idx = 0;
  579. fYec19_idx_save = 0;
  580. for (int i=0; i<4; i++) fRec56_perm[i]=0;
  581. for (int i=0; i<2048; i++) fYec20[i]=0;
  582. fYec20_idx = 0;
  583. fYec20_idx_save = 0;
  584. for (int i=0; i<4; i++) fRec40_perm[i]=0;
  585. for (int i=0; i<2048; i++) fYec21[i]=0;
  586. fYec21_idx = 0;
  587. fYec21_idx_save = 0;
  588. for (int i=0; i<4; i++) fRec38_perm[i]=0;
  589. for (int i=0; i<2048; i++) fYec22[i]=0;
  590. fYec22_idx = 0;
  591. fYec22_idx_save = 0;
  592. for (int i=0; i<4; i++) fRec36_perm[i]=0;
  593. for (int i=0; i<2048; i++) fYec23[i]=0;
  594. fYec23_idx = 0;
  595. fYec23_idx_save = 0;
  596. for (int i=0; i<4; i++) fRec34_perm[i]=0;
  597. for (int i=0; i<4096; i++) fYec24[i]=0;
  598. fYec24_idx = 0;
  599. fYec24_idx_save = 0;
  600. for (int i=0; i<4; i++) fRec8_perm[i]=0;
  601. for (int i=0; i<4; i++) fRec59_perm[i]=0;
  602. for (int i=0; i<4096; i++) fYec25[i]=0;
  603. fYec25_idx = 0;
  604. fYec25_idx_save = 0;
  605. for (int i=0; i<4; i++) fRec58_perm[i]=0;
  606. for (int i=0; i<4; i++) fRec61_perm[i]=0;
  607. for (int i=0; i<4096; i++) fYec26[i]=0;
  608. fYec26_idx = 0;
  609. fYec26_idx_save = 0;
  610. for (int i=0; i<4; i++) fRec60_perm[i]=0;
  611. for (int i=0; i<4; i++) fRec63_perm[i]=0;
  612. for (int i=0; i<4096; i++) fYec27[i]=0;
  613. fYec27_idx = 0;
  614. fYec27_idx_save = 0;
  615. for (int i=0; i<4; i++) fRec62_perm[i]=0;
  616. for (int i=0; i<4; i++) fRec65_perm[i]=0;
  617. for (int i=0; i<4096; i++) fYec28[i]=0;
  618. fYec28_idx = 0;
  619. fYec28_idx_save = 0;
  620. for (int i=0; i<4; i++) fRec64_perm[i]=0;
  621. for (int i=0; i<4; i++) fRec67_perm[i]=0;
  622. for (int i=0; i<4096; i++) fYec29[i]=0;
  623. fYec29_idx = 0;
  624. fYec29_idx_save = 0;
  625. for (int i=0; i<4; i++) fRec66_perm[i]=0;
  626. for (int i=0; i<4; i++) fRec69_perm[i]=0;
  627. for (int i=0; i<4096; i++) fYec30[i]=0;
  628. fYec30_idx = 0;
  629. fYec30_idx_save = 0;
  630. for (int i=0; i<4; i++) fRec68_perm[i]=0;
  631. for (int i=0; i<4; i++) fRec71_perm[i]=0;
  632. for (int i=0; i<4096; i++) fYec31[i]=0;
  633. fYec31_idx = 0;
  634. fYec31_idx_save = 0;
  635. for (int i=0; i<4; i++) fRec70_perm[i]=0;
  636. for (int i=0; i<2048; i++) fYec32[i]=0;
  637. fYec32_idx = 0;
  638. fYec32_idx_save = 0;
  639. for (int i=0; i<4; i++) fRec6_perm[i]=0;
  640. for (int i=0; i<2048; i++) fYec33[i]=0;
  641. fYec33_idx = 0;
  642. fYec33_idx_save = 0;
  643. for (int i=0; i<4; i++) fRec4_perm[i]=0;
  644. for (int i=0; i<2048; i++) fYec34[i]=0;
  645. fYec34_idx = 0;
  646. fYec34_idx_save = 0;
  647. for (int i=0; i<4; i++) fRec2_perm[i]=0;
  648. for (int i=0; i<2048; i++) fYec35[i]=0;
  649. fYec35_idx = 0;
  650. fYec35_idx_save = 0;
  651. for (int i=0; i<4; i++) fRec0_perm[i]=0;
  652. for (int i=0; i<4; i++) fRec81_perm[i]=0;
  653. for (int i=0; i<4096; i++) fYec36[i]=0;
  654. fYec36_idx = 0;
  655. fYec36_idx_save = 0;
  656. for (int i=0; i<4; i++) fRec80_perm[i]=0;
  657. for (int i=0; i<4; i++) fRec83_perm[i]=0;
  658. for (int i=0; i<4096; i++) fYec37[i]=0;
  659. fYec37_idx = 0;
  660. fYec37_idx_save = 0;
  661. for (int i=0; i<4; i++) fRec82_perm[i]=0;
  662. for (int i=0; i<4; i++) fRec85_perm[i]=0;
  663. for (int i=0; i<4096; i++) fYec38[i]=0;
  664. fYec38_idx = 0;
  665. fYec38_idx_save = 0;
  666. for (int i=0; i<4; i++) fRec84_perm[i]=0;
  667. for (int i=0; i<4; i++) fRec87_perm[i]=0;
  668. for (int i=0; i<4096; i++) fYec39[i]=0;
  669. fYec39_idx = 0;
  670. fYec39_idx_save = 0;
  671. for (int i=0; i<4; i++) fRec86_perm[i]=0;
  672. for (int i=0; i<4; i++) fRec89_perm[i]=0;
  673. for (int i=0; i<4096; i++) fYec40[i]=0;
  674. fYec40_idx = 0;
  675. fYec40_idx_save = 0;
  676. for (int i=0; i<4; i++) fRec88_perm[i]=0;
  677. for (int i=0; i<4; i++) fRec91_perm[i]=0;
  678. for (int i=0; i<4096; i++) fYec41[i]=0;
  679. fYec41_idx = 0;
  680. fYec41_idx_save = 0;
  681. for (int i=0; i<4; i++) fRec90_perm[i]=0;
  682. for (int i=0; i<4; i++) fRec93_perm[i]=0;
  683. for (int i=0; i<4096; i++) fYec42[i]=0;
  684. fYec42_idx = 0;
  685. fYec42_idx_save = 0;
  686. for (int i=0; i<4; i++) fRec92_perm[i]=0;
  687. for (int i=0; i<4; i++) fRec95_perm[i]=0;
  688. for (int i=0; i<4096; i++) fYec43[i]=0;
  689. fYec43_idx = 0;
  690. fYec43_idx_save = 0;
  691. for (int i=0; i<4; i++) fRec94_perm[i]=0;
  692. for (int i=0; i<2048; i++) fYec44[i]=0;
  693. fYec44_idx = 0;
  694. fYec44_idx_save = 0;
  695. for (int i=0; i<4; i++) fRec78_perm[i]=0;
  696. for (int i=0; i<2048; i++) fYec45[i]=0;
  697. fYec45_idx = 0;
  698. fYec45_idx_save = 0;
  699. for (int i=0; i<4; i++) fRec76_perm[i]=0;
  700. for (int i=0; i<2048; i++) fYec46[i]=0;
  701. fYec46_idx = 0;
  702. fYec46_idx_save = 0;
  703. for (int i=0; i<4; i++) fRec74_perm[i]=0;
  704. for (int i=0; i<2048; i++) fYec47[i]=0;
  705. fYec47_idx = 0;
  706. fYec47_idx_save = 0;
  707. for (int i=0; i<4; i++) fRec72_perm[i]=0;
  708. }
  709. virtual void init(int samplingFreq) {
  710. classInit(samplingFreq);
  711. instanceInit(samplingFreq);
  712. }
  713. virtual void buildUserInterface(UI* interface) {
  714. interface->openVerticalBox("Freeverb");
  715. interface->addHorizontalSlider("Damp", &fslider0, 0.5f, 0.0f, 1.0f, 2.500000e-02f);
  716. interface->addHorizontalSlider("RoomSize", &fslider1, 0.5f, 0.0f, 1.0f, 2.500000e-02f);
  717. interface->addHorizontalSlider("Wet", &fslider2, 0.3333f, 0.0f, 1.0f, 2.500000e-02f);
  718. interface->closeBox();
  719. }
  720. virtual void compute (int fullcount, FAUSTFLOAT** input, FAUSTFLOAT** output) {
  721. float fRec9_tmp[1024+4];
  722. float fRec19_tmp[1024+4];
  723. float fZec0[1024];
  724. float fRec18_tmp[1024+4];
  725. float fRec21_tmp[1024+4];
  726. float fRec20_tmp[1024+4];
  727. float fRec23_tmp[1024+4];
  728. float fRec22_tmp[1024+4];
  729. float fRec25_tmp[1024+4];
  730. float fRec24_tmp[1024+4];
  731. float fRec27_tmp[1024+4];
  732. float fRec26_tmp[1024+4];
  733. float fRec29_tmp[1024+4];
  734. float fRec28_tmp[1024+4];
  735. float fRec31_tmp[1024+4];
  736. float fRec30_tmp[1024+4];
  737. float fRec33_tmp[1024+4];
  738. float fRec32_tmp[1024+4];
  739. float fZec1[1024];
  740. float fRec16_tmp[1024+4];
  741. float fRec17[1024];
  742. float fRec14_tmp[1024+4];
  743. float fRec15[1024];
  744. float fRec12_tmp[1024+4];
  745. float fRec13[1024];
  746. float fRec10_tmp[1024+4];
  747. float fRec11[1024];
  748. float fZec2[1024];
  749. float fRec43_tmp[1024+4];
  750. float fRec42_tmp[1024+4];
  751. float fRec45_tmp[1024+4];
  752. float fRec44_tmp[1024+4];
  753. float fRec47_tmp[1024+4];
  754. float fRec46_tmp[1024+4];
  755. float fRec49_tmp[1024+4];
  756. float fRec48_tmp[1024+4];
  757. float fRec51_tmp[1024+4];
  758. float fRec50_tmp[1024+4];
  759. float fRec53_tmp[1024+4];
  760. float fRec52_tmp[1024+4];
  761. float fRec55_tmp[1024+4];
  762. float fRec54_tmp[1024+4];
  763. float fRec57_tmp[1024+4];
  764. float fRec56_tmp[1024+4];
  765. float fZec3[1024];
  766. float fRec40_tmp[1024+4];
  767. float fRec41[1024];
  768. float fRec38_tmp[1024+4];
  769. float fRec39[1024];
  770. float fRec36_tmp[1024+4];
  771. float fRec37[1024];
  772. float fRec34_tmp[1024+4];
  773. float fRec35[1024];
  774. float fZec4[1024];
  775. float fZec5[1024];
  776. float fRec8_tmp[1024+4];
  777. float fRec59_tmp[1024+4];
  778. float fRec58_tmp[1024+4];
  779. float fRec61_tmp[1024+4];
  780. float fRec60_tmp[1024+4];
  781. float fRec63_tmp[1024+4];
  782. float fRec62_tmp[1024+4];
  783. float fRec65_tmp[1024+4];
  784. float fRec64_tmp[1024+4];
  785. float fRec67_tmp[1024+4];
  786. float fRec66_tmp[1024+4];
  787. float fRec69_tmp[1024+4];
  788. float fRec68_tmp[1024+4];
  789. float fRec71_tmp[1024+4];
  790. float fRec70_tmp[1024+4];
  791. float fZec6[1024];
  792. float fRec6_tmp[1024+4];
  793. float fRec7[1024];
  794. float fRec4_tmp[1024+4];
  795. float fRec5[1024];
  796. float fRec2_tmp[1024+4];
  797. float fRec3[1024];
  798. float fRec0_tmp[1024+4];
  799. float fRec1[1024];
  800. float fRec81_tmp[1024+4];
  801. float fRec80_tmp[1024+4];
  802. float fRec83_tmp[1024+4];
  803. float fRec82_tmp[1024+4];
  804. float fRec85_tmp[1024+4];
  805. float fRec84_tmp[1024+4];
  806. float fRec87_tmp[1024+4];
  807. float fRec86_tmp[1024+4];
  808. float fRec89_tmp[1024+4];
  809. float fRec88_tmp[1024+4];
  810. float fRec91_tmp[1024+4];
  811. float fRec90_tmp[1024+4];
  812. float fRec93_tmp[1024+4];
  813. float fRec92_tmp[1024+4];
  814. float fRec95_tmp[1024+4];
  815. float fRec94_tmp[1024+4];
  816. float fZec7[1024];
  817. float fRec78_tmp[1024+4];
  818. float fRec79[1024];
  819. float fRec76_tmp[1024+4];
  820. float fRec77[1024];
  821. float fRec74_tmp[1024+4];
  822. float fRec75[1024];
  823. float fRec72_tmp[1024+4];
  824. float fRec73[1024];
  825. float fSlow0 = (0.4f * fslider0);
  826. float fSlow1 = (1 - fSlow0);
  827. float* fRec9 = &fRec9_tmp[4];
  828. float fSlow2 = (0.7f + (0.28f * fslider1));
  829. float* fRec19 = &fRec19_tmp[4];
  830. float* fRec18 = &fRec18_tmp[4];
  831. float* fRec21 = &fRec21_tmp[4];
  832. float* fRec20 = &fRec20_tmp[4];
  833. float* fRec23 = &fRec23_tmp[4];
  834. float* fRec22 = &fRec22_tmp[4];
  835. float* fRec25 = &fRec25_tmp[4];
  836. float* fRec24 = &fRec24_tmp[4];
  837. float* fRec27 = &fRec27_tmp[4];
  838. float* fRec26 = &fRec26_tmp[4];
  839. float* fRec29 = &fRec29_tmp[4];
  840. float* fRec28 = &fRec28_tmp[4];
  841. float* fRec31 = &fRec31_tmp[4];
  842. float* fRec30 = &fRec30_tmp[4];
  843. float* fRec33 = &fRec33_tmp[4];
  844. float* fRec32 = &fRec32_tmp[4];
  845. float* fRec16 = &fRec16_tmp[4];
  846. float* fRec14 = &fRec14_tmp[4];
  847. float* fRec12 = &fRec12_tmp[4];
  848. float* fRec10 = &fRec10_tmp[4];
  849. float fSlow3 = fslider2;
  850. float fSlow4 = (1 - fSlow3);
  851. float* fRec43 = &fRec43_tmp[4];
  852. float* fRec42 = &fRec42_tmp[4];
  853. float* fRec45 = &fRec45_tmp[4];
  854. float* fRec44 = &fRec44_tmp[4];
  855. float* fRec47 = &fRec47_tmp[4];
  856. float* fRec46 = &fRec46_tmp[4];
  857. float* fRec49 = &fRec49_tmp[4];
  858. float* fRec48 = &fRec48_tmp[4];
  859. float* fRec51 = &fRec51_tmp[4];
  860. float* fRec50 = &fRec50_tmp[4];
  861. float* fRec53 = &fRec53_tmp[4];
  862. float* fRec52 = &fRec52_tmp[4];
  863. float* fRec55 = &fRec55_tmp[4];
  864. float* fRec54 = &fRec54_tmp[4];
  865. float* fRec57 = &fRec57_tmp[4];
  866. float* fRec56 = &fRec56_tmp[4];
  867. float* fRec40 = &fRec40_tmp[4];
  868. float* fRec38 = &fRec38_tmp[4];
  869. float* fRec36 = &fRec36_tmp[4];
  870. float* fRec34 = &fRec34_tmp[4];
  871. float* fRec8 = &fRec8_tmp[4];
  872. float* fRec59 = &fRec59_tmp[4];
  873. float* fRec58 = &fRec58_tmp[4];
  874. float* fRec61 = &fRec61_tmp[4];
  875. float* fRec60 = &fRec60_tmp[4];
  876. float* fRec63 = &fRec63_tmp[4];
  877. float* fRec62 = &fRec62_tmp[4];
  878. float* fRec65 = &fRec65_tmp[4];
  879. float* fRec64 = &fRec64_tmp[4];
  880. float* fRec67 = &fRec67_tmp[4];
  881. float* fRec66 = &fRec66_tmp[4];
  882. float* fRec69 = &fRec69_tmp[4];
  883. float* fRec68 = &fRec68_tmp[4];
  884. float* fRec71 = &fRec71_tmp[4];
  885. float* fRec70 = &fRec70_tmp[4];
  886. float* fRec6 = &fRec6_tmp[4];
  887. float* fRec4 = &fRec4_tmp[4];
  888. float* fRec2 = &fRec2_tmp[4];
  889. float* fRec0 = &fRec0_tmp[4];
  890. float* fRec81 = &fRec81_tmp[4];
  891. float* fRec80 = &fRec80_tmp[4];
  892. float* fRec83 = &fRec83_tmp[4];
  893. float* fRec82 = &fRec82_tmp[4];
  894. float* fRec85 = &fRec85_tmp[4];
  895. float* fRec84 = &fRec84_tmp[4];
  896. float* fRec87 = &fRec87_tmp[4];
  897. float* fRec86 = &fRec86_tmp[4];
  898. float* fRec89 = &fRec89_tmp[4];
  899. float* fRec88 = &fRec88_tmp[4];
  900. float* fRec91 = &fRec91_tmp[4];
  901. float* fRec90 = &fRec90_tmp[4];
  902. float* fRec93 = &fRec93_tmp[4];
  903. float* fRec92 = &fRec92_tmp[4];
  904. float* fRec95 = &fRec95_tmp[4];
  905. float* fRec94 = &fRec94_tmp[4];
  906. float* fRec78 = &fRec78_tmp[4];
  907. float* fRec76 = &fRec76_tmp[4];
  908. float* fRec74 = &fRec74_tmp[4];
  909. float* fRec72 = &fRec72_tmp[4];
  910. int index;
  911. for (index = 0; index <= fullcount - 1024; index += 1024) {
  912. // compute by blocks of 1024 samples
  913. const int count = 1024;
  914. FAUSTFLOAT* input0 = &input[0][index];
  915. FAUSTFLOAT* input1 = &input[1][index];
  916. FAUSTFLOAT* output0 = &output[0][index];
  917. FAUSTFLOAT* output1 = &output[1][index];
  918. // SECTION : 1
  919. // LOOP 0x101350bc0
  920. // exec code
  921. for (int i=0; i<count; i++) {
  922. fZec0[i] = (1.500000e-02f * ((float)input0[i] + (float)input1[i]));
  923. }
  924. // SECTION : 2
  925. // LOOP 0x10134f970
  926. // pre processing
  927. for (int i=0; i<4; i++) fRec19_tmp[i]=fRec19_perm[i];
  928. fYec0_idx = (fYec0_idx+fYec0_idx_save)&4095;
  929. for (int i=0; i<4; i++) fRec18_tmp[i]=fRec18_perm[i];
  930. // exec code
  931. for (int i=0; i<count; i++) {
  932. fRec19[i] = ((fSlow1 * fRec18[i-1]) + (fSlow0 * fRec19[i-1]));
  933. fYec0[(fYec0_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec19[i]));
  934. fRec18[i] = fYec0[(fYec0_idx+i-1617)&4095];
  935. }
  936. // post processing
  937. for (int i=0; i<4; i++) fRec18_perm[i]=fRec18_tmp[count+i];
  938. fYec0_idx_save = count;
  939. for (int i=0; i<4; i++) fRec19_perm[i]=fRec19_tmp[count+i];
  940. // LOOP 0x101351ed0
  941. // pre processing
  942. for (int i=0; i<4; i++) fRec21_tmp[i]=fRec21_perm[i];
  943. fYec1_idx = (fYec1_idx+fYec1_idx_save)&4095;
  944. for (int i=0; i<4; i++) fRec20_tmp[i]=fRec20_perm[i];
  945. // exec code
  946. for (int i=0; i<count; i++) {
  947. fRec21[i] = ((fSlow1 * fRec20[i-1]) + (fSlow0 * fRec21[i-1]));
  948. fYec1[(fYec1_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec21[i]));
  949. fRec20[i] = fYec1[(fYec1_idx+i-1557)&4095];
  950. }
  951. // post processing
  952. for (int i=0; i<4; i++) fRec20_perm[i]=fRec20_tmp[count+i];
  953. fYec1_idx_save = count;
  954. for (int i=0; i<4; i++) fRec21_perm[i]=fRec21_tmp[count+i];
  955. // LOOP 0x101353a50
  956. // pre processing
  957. for (int i=0; i<4; i++) fRec23_tmp[i]=fRec23_perm[i];
  958. fYec2_idx = (fYec2_idx+fYec2_idx_save)&4095;
  959. for (int i=0; i<4; i++) fRec22_tmp[i]=fRec22_perm[i];
  960. // exec code
  961. for (int i=0; i<count; i++) {
  962. fRec23[i] = ((fSlow1 * fRec22[i-1]) + (fSlow0 * fRec23[i-1]));
  963. fYec2[(fYec2_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec23[i]));
  964. fRec22[i] = fYec2[(fYec2_idx+i-1491)&4095];
  965. }
  966. // post processing
  967. for (int i=0; i<4; i++) fRec22_perm[i]=fRec22_tmp[count+i];
  968. fYec2_idx_save = count;
  969. for (int i=0; i<4; i++) fRec23_perm[i]=fRec23_tmp[count+i];
  970. // LOOP 0x1013555d0
  971. // pre processing
  972. for (int i=0; i<4; i++) fRec25_tmp[i]=fRec25_perm[i];
  973. fYec3_idx = (fYec3_idx+fYec3_idx_save)&4095;
  974. for (int i=0; i<4; i++) fRec24_tmp[i]=fRec24_perm[i];
  975. // exec code
  976. for (int i=0; i<count; i++) {
  977. fRec25[i] = ((fSlow1 * fRec24[i-1]) + (fSlow0 * fRec25[i-1]));
  978. fYec3[(fYec3_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec25[i]));
  979. fRec24[i] = fYec3[(fYec3_idx+i-1422)&4095];
  980. }
  981. // post processing
  982. for (int i=0; i<4; i++) fRec24_perm[i]=fRec24_tmp[count+i];
  983. fYec3_idx_save = count;
  984. for (int i=0; i<4; i++) fRec25_perm[i]=fRec25_tmp[count+i];
  985. // LOOP 0x101357120
  986. // pre processing
  987. for (int i=0; i<4; i++) fRec27_tmp[i]=fRec27_perm[i];
  988. fYec4_idx = (fYec4_idx+fYec4_idx_save)&4095;
  989. for (int i=0; i<4; i++) fRec26_tmp[i]=fRec26_perm[i];
  990. // exec code
  991. for (int i=0; i<count; i++) {
  992. fRec27[i] = ((fSlow1 * fRec26[i-1]) + (fSlow0 * fRec27[i-1]));
  993. fYec4[(fYec4_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec27[i]));
  994. fRec26[i] = fYec4[(fYec4_idx+i-1356)&4095];
  995. }
  996. // post processing
  997. for (int i=0; i<4; i++) fRec26_perm[i]=fRec26_tmp[count+i];
  998. fYec4_idx_save = count;
  999. for (int i=0; i<4; i++) fRec27_perm[i]=fRec27_tmp[count+i];
  1000. // LOOP 0x101358c70
  1001. // pre processing
  1002. for (int i=0; i<4; i++) fRec29_tmp[i]=fRec29_perm[i];
  1003. fYec5_idx = (fYec5_idx+fYec5_idx_save)&4095;
  1004. for (int i=0; i<4; i++) fRec28_tmp[i]=fRec28_perm[i];
  1005. // exec code
  1006. for (int i=0; i<count; i++) {
  1007. fRec29[i] = ((fSlow1 * fRec28[i-1]) + (fSlow0 * fRec29[i-1]));
  1008. fYec5[(fYec5_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec29[i]));
  1009. fRec28[i] = fYec5[(fYec5_idx+i-1277)&4095];
  1010. }
  1011. // post processing
  1012. for (int i=0; i<4; i++) fRec28_perm[i]=fRec28_tmp[count+i];
  1013. fYec5_idx_save = count;
  1014. for (int i=0; i<4; i++) fRec29_perm[i]=fRec29_tmp[count+i];
  1015. // LOOP 0x10135a7e0
  1016. // pre processing
  1017. for (int i=0; i<4; i++) fRec31_tmp[i]=fRec31_perm[i];
  1018. fYec6_idx = (fYec6_idx+fYec6_idx_save)&4095;
  1019. for (int i=0; i<4; i++) fRec30_tmp[i]=fRec30_perm[i];
  1020. // exec code
  1021. for (int i=0; i<count; i++) {
  1022. fRec31[i] = ((fSlow1 * fRec30[i-1]) + (fSlow0 * fRec31[i-1]));
  1023. fYec6[(fYec6_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec31[i]));
  1024. fRec30[i] = fYec6[(fYec6_idx+i-1188)&4095];
  1025. }
  1026. // post processing
  1027. for (int i=0; i<4; i++) fRec30_perm[i]=fRec30_tmp[count+i];
  1028. fYec6_idx_save = count;
  1029. for (int i=0; i<4; i++) fRec31_perm[i]=fRec31_tmp[count+i];
  1030. // LOOP 0x10135c330
  1031. // pre processing
  1032. for (int i=0; i<4; i++) fRec33_tmp[i]=fRec33_perm[i];
  1033. fYec7_idx = (fYec7_idx+fYec7_idx_save)&4095;
  1034. for (int i=0; i<4; i++) fRec32_tmp[i]=fRec32_perm[i];
  1035. // exec code
  1036. for (int i=0; i<count; i++) {
  1037. fRec33[i] = ((fSlow1 * fRec32[i-1]) + (fSlow0 * fRec33[i-1]));
  1038. fYec7[(fYec7_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec33[i]));
  1039. fRec32[i] = fYec7[(fYec7_idx+i-1116)&4095];
  1040. }
  1041. // post processing
  1042. for (int i=0; i<4; i++) fRec32_perm[i]=fRec32_tmp[count+i];
  1043. fYec7_idx_save = count;
  1044. for (int i=0; i<4; i++) fRec33_perm[i]=fRec33_tmp[count+i];
  1045. // LOOP 0x101364b70
  1046. // pre processing
  1047. for (int i=0; i<4; i++) fRec43_tmp[i]=fRec43_perm[i];
  1048. fYec12_idx = (fYec12_idx+fYec12_idx_save)&4095;
  1049. for (int i=0; i<4; i++) fRec42_tmp[i]=fRec42_perm[i];
  1050. // exec code
  1051. for (int i=0; i<count; i++) {
  1052. fRec43[i] = ((fSlow1 * fRec42[i-1]) + (fSlow0 * fRec43[i-1]));
  1053. fYec12[(fYec12_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec43[i]));
  1054. fRec42[i] = fYec12[(fYec12_idx+i-1640)&4095];
  1055. }
  1056. // post processing
  1057. for (int i=0; i<4; i++) fRec42_perm[i]=fRec42_tmp[count+i];
  1058. fYec12_idx_save = count;
  1059. for (int i=0; i<4; i++) fRec43_perm[i]=fRec43_tmp[count+i];
  1060. // LOOP 0x1013667b0
  1061. // pre processing
  1062. for (int i=0; i<4; i++) fRec45_tmp[i]=fRec45_perm[i];
  1063. fYec13_idx = (fYec13_idx+fYec13_idx_save)&4095;
  1064. for (int i=0; i<4; i++) fRec44_tmp[i]=fRec44_perm[i];
  1065. // exec code
  1066. for (int i=0; i<count; i++) {
  1067. fRec45[i] = ((fSlow1 * fRec44[i-1]) + (fSlow0 * fRec45[i-1]));
  1068. fYec13[(fYec13_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec45[i]));
  1069. fRec44[i] = fYec13[(fYec13_idx+i-1580)&4095];
  1070. }
  1071. // post processing
  1072. for (int i=0; i<4; i++) fRec44_perm[i]=fRec44_tmp[count+i];
  1073. fYec13_idx_save = count;
  1074. for (int i=0; i<4; i++) fRec45_perm[i]=fRec45_tmp[count+i];
  1075. // LOOP 0x101368330
  1076. // pre processing
  1077. for (int i=0; i<4; i++) fRec47_tmp[i]=fRec47_perm[i];
  1078. fYec14_idx = (fYec14_idx+fYec14_idx_save)&4095;
  1079. for (int i=0; i<4; i++) fRec46_tmp[i]=fRec46_perm[i];
  1080. // exec code
  1081. for (int i=0; i<count; i++) {
  1082. fRec47[i] = ((fSlow1 * fRec46[i-1]) + (fSlow0 * fRec47[i-1]));
  1083. fYec14[(fYec14_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec47[i]));
  1084. fRec46[i] = fYec14[(fYec14_idx+i-1514)&4095];
  1085. }
  1086. // post processing
  1087. for (int i=0; i<4; i++) fRec46_perm[i]=fRec46_tmp[count+i];
  1088. fYec14_idx_save = count;
  1089. for (int i=0; i<4; i++) fRec47_perm[i]=fRec47_tmp[count+i];
  1090. // LOOP 0x101369f40
  1091. // pre processing
  1092. for (int i=0; i<4; i++) fRec49_tmp[i]=fRec49_perm[i];
  1093. fYec15_idx = (fYec15_idx+fYec15_idx_save)&4095;
  1094. for (int i=0; i<4; i++) fRec48_tmp[i]=fRec48_perm[i];
  1095. // exec code
  1096. for (int i=0; i<count; i++) {
  1097. fRec49[i] = ((fSlow1 * fRec48[i-1]) + (fSlow0 * fRec49[i-1]));
  1098. fYec15[(fYec15_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec49[i]));
  1099. fRec48[i] = fYec15[(fYec15_idx+i-1445)&4095];
  1100. }
  1101. // post processing
  1102. for (int i=0; i<4; i++) fRec48_perm[i]=fRec48_tmp[count+i];
  1103. fYec15_idx_save = count;
  1104. for (int i=0; i<4; i++) fRec49_perm[i]=fRec49_tmp[count+i];
  1105. // LOOP 0x10136bae0
  1106. // pre processing
  1107. for (int i=0; i<4; i++) fRec51_tmp[i]=fRec51_perm[i];
  1108. fYec16_idx = (fYec16_idx+fYec16_idx_save)&4095;
  1109. for (int i=0; i<4; i++) fRec50_tmp[i]=fRec50_perm[i];
  1110. // exec code
  1111. for (int i=0; i<count; i++) {
  1112. fRec51[i] = ((fSlow1 * fRec50[i-1]) + (fSlow0 * fRec51[i-1]));
  1113. fYec16[(fYec16_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec51[i]));
  1114. fRec50[i] = fYec16[(fYec16_idx+i-1379)&4095];
  1115. }
  1116. // post processing
  1117. for (int i=0; i<4; i++) fRec50_perm[i]=fRec50_tmp[count+i];
  1118. fYec16_idx_save = count;
  1119. for (int i=0; i<4; i++) fRec51_perm[i]=fRec51_tmp[count+i];
  1120. // LOOP 0x10136d660
  1121. // pre processing
  1122. for (int i=0; i<4; i++) fRec53_tmp[i]=fRec53_perm[i];
  1123. fYec17_idx = (fYec17_idx+fYec17_idx_save)&4095;
  1124. for (int i=0; i<4; i++) fRec52_tmp[i]=fRec52_perm[i];
  1125. // exec code
  1126. for (int i=0; i<count; i++) {
  1127. fRec53[i] = ((fSlow1 * fRec52[i-1]) + (fSlow0 * fRec53[i-1]));
  1128. fYec17[(fYec17_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec53[i]));
  1129. fRec52[i] = fYec17[(fYec17_idx+i-1300)&4095];
  1130. }
  1131. // post processing
  1132. for (int i=0; i<4; i++) fRec52_perm[i]=fRec52_tmp[count+i];
  1133. fYec17_idx_save = count;
  1134. for (int i=0; i<4; i++) fRec53_perm[i]=fRec53_tmp[count+i];
  1135. // LOOP 0x10136f1e0
  1136. // pre processing
  1137. for (int i=0; i<4; i++) fRec55_tmp[i]=fRec55_perm[i];
  1138. fYec18_idx = (fYec18_idx+fYec18_idx_save)&4095;
  1139. for (int i=0; i<4; i++) fRec54_tmp[i]=fRec54_perm[i];
  1140. // exec code
  1141. for (int i=0; i<count; i++) {
  1142. fRec55[i] = ((fSlow1 * fRec54[i-1]) + (fSlow0 * fRec55[i-1]));
  1143. fYec18[(fYec18_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec55[i]));
  1144. fRec54[i] = fYec18[(fYec18_idx+i-1211)&4095];
  1145. }
  1146. // post processing
  1147. for (int i=0; i<4; i++) fRec54_perm[i]=fRec54_tmp[count+i];
  1148. fYec18_idx_save = count;
  1149. for (int i=0; i<4; i++) fRec55_perm[i]=fRec55_tmp[count+i];
  1150. // LOOP 0x101370d60
  1151. // pre processing
  1152. for (int i=0; i<4; i++) fRec57_tmp[i]=fRec57_perm[i];
  1153. fYec19_idx = (fYec19_idx+fYec19_idx_save)&4095;
  1154. for (int i=0; i<4; i++) fRec56_tmp[i]=fRec56_perm[i];
  1155. // exec code
  1156. for (int i=0; i<count; i++) {
  1157. fRec57[i] = ((fSlow1 * fRec56[i-1]) + (fSlow0 * fRec57[i-1]));
  1158. fYec19[(fYec19_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec57[i]));
  1159. fRec56[i] = fYec19[(fYec19_idx+i-1139)&4095];
  1160. }
  1161. // post processing
  1162. for (int i=0; i<4; i++) fRec56_perm[i]=fRec56_tmp[count+i];
  1163. fYec19_idx_save = count;
  1164. for (int i=0; i<4; i++) fRec57_perm[i]=fRec57_tmp[count+i];
  1165. // SECTION : 3
  1166. // LOOP 0x10134f870
  1167. // exec code
  1168. for (int i=0; i<count; i++) {
  1169. fZec1[i] = (((((((fRec32[i] + fRec30[i]) + fRec28[i]) + fRec26[i]) + fRec24[i]) + fRec22[i]) + fRec20[i]) + fRec18[i]);
  1170. }
  1171. // LOOP 0x101364a70
  1172. // exec code
  1173. for (int i=0; i<count; i++) {
  1174. fZec3[i] = (((((((fRec56[i] + fRec54[i]) + fRec52[i]) + fRec50[i]) + fRec48[i]) + fRec46[i]) + fRec44[i]) + fRec42[i]);
  1175. }
  1176. // SECTION : 4
  1177. // LOOP 0x10134f120
  1178. // pre processing
  1179. fYec8_idx = (fYec8_idx+fYec8_idx_save)&2047;
  1180. for (int i=0; i<4; i++) fRec16_tmp[i]=fRec16_perm[i];
  1181. // exec code
  1182. for (int i=0; i<count; i++) {
  1183. fYec8[(fYec8_idx+i)&2047] = (fZec1[i] + (0.5f * fRec16[i-1]));
  1184. fRec16[i] = fYec8[(fYec8_idx+i-556)&2047];
  1185. fRec17[i] = (0 - (fZec1[i] - fRec16[i-1]));
  1186. }
  1187. // post processing
  1188. for (int i=0; i<4; i++) fRec16_perm[i]=fRec16_tmp[count+i];
  1189. fYec8_idx_save = count;
  1190. // LOOP 0x101364320
  1191. // pre processing
  1192. fYec20_idx = (fYec20_idx+fYec20_idx_save)&2047;
  1193. for (int i=0; i<4; i++) fRec40_tmp[i]=fRec40_perm[i];
  1194. // exec code
  1195. for (int i=0; i<count; i++) {
  1196. fYec20[(fYec20_idx+i)&2047] = (fZec3[i] + (0.5f * fRec40[i-1]));
  1197. fRec40[i] = fYec20[(fYec20_idx+i-579)&2047];
  1198. fRec41[i] = (0 - (fZec3[i] - fRec40[i-1]));
  1199. }
  1200. // post processing
  1201. for (int i=0; i<4; i++) fRec40_perm[i]=fRec40_tmp[count+i];
  1202. fYec20_idx_save = count;
  1203. // SECTION : 5
  1204. // LOOP 0x10134e9d0
  1205. // pre processing
  1206. fYec9_idx = (fYec9_idx+fYec9_idx_save)&2047;
  1207. for (int i=0; i<4; i++) fRec14_tmp[i]=fRec14_perm[i];
  1208. // exec code
  1209. for (int i=0; i<count; i++) {
  1210. fYec9[(fYec9_idx+i)&2047] = (fRec17[i] + (0.5f * fRec14[i-1]));
  1211. fRec14[i] = fYec9[(fYec9_idx+i-441)&2047];
  1212. fRec15[i] = (fRec14[i-1] - fRec17[i]);
  1213. }
  1214. // post processing
  1215. for (int i=0; i<4; i++) fRec14_perm[i]=fRec14_tmp[count+i];
  1216. fYec9_idx_save = count;
  1217. // LOOP 0x101363bd0
  1218. // pre processing
  1219. fYec21_idx = (fYec21_idx+fYec21_idx_save)&2047;
  1220. for (int i=0; i<4; i++) fRec38_tmp[i]=fRec38_perm[i];
  1221. // exec code
  1222. for (int i=0; i<count; i++) {
  1223. fYec21[(fYec21_idx+i)&2047] = (fRec41[i] + (0.5f * fRec38[i-1]));
  1224. fRec38[i] = fYec21[(fYec21_idx+i-464)&2047];
  1225. fRec39[i] = (fRec38[i-1] - fRec41[i]);
  1226. }
  1227. // post processing
  1228. for (int i=0; i<4; i++) fRec38_perm[i]=fRec38_tmp[count+i];
  1229. fYec21_idx_save = count;
  1230. // SECTION : 6
  1231. // LOOP 0x10134e2a0
  1232. // pre processing
  1233. fYec10_idx = (fYec10_idx+fYec10_idx_save)&2047;
  1234. for (int i=0; i<4; i++) fRec12_tmp[i]=fRec12_perm[i];
  1235. // exec code
  1236. for (int i=0; i<count; i++) {
  1237. fYec10[(fYec10_idx+i)&2047] = (fRec15[i] + (0.5f * fRec12[i-1]));
  1238. fRec12[i] = fYec10[(fYec10_idx+i-341)&2047];
  1239. fRec13[i] = (fRec12[i-1] - fRec15[i]);
  1240. }
  1241. // post processing
  1242. for (int i=0; i<4; i++) fRec12_perm[i]=fRec12_tmp[count+i];
  1243. fYec10_idx_save = count;
  1244. // LOOP 0x1013634a0
  1245. // pre processing
  1246. fYec22_idx = (fYec22_idx+fYec22_idx_save)&2047;
  1247. for (int i=0; i<4; i++) fRec36_tmp[i]=fRec36_perm[i];
  1248. // exec code
  1249. for (int i=0; i<count; i++) {
  1250. fYec22[(fYec22_idx+i)&2047] = (fRec39[i] + (0.5f * fRec36[i-1]));
  1251. fRec36[i] = fYec22[(fYec22_idx+i-364)&2047];
  1252. fRec37[i] = (fRec36[i-1] - fRec39[i]);
  1253. }
  1254. // post processing
  1255. for (int i=0; i<4; i++) fRec36_perm[i]=fRec36_tmp[count+i];
  1256. fYec22_idx_save = count;
  1257. // SECTION : 7
  1258. // LOOP 0x10134dba0
  1259. // pre processing
  1260. fYec11_idx = (fYec11_idx+fYec11_idx_save)&2047;
  1261. for (int i=0; i<4; i++) fRec10_tmp[i]=fRec10_perm[i];
  1262. // exec code
  1263. for (int i=0; i<count; i++) {
  1264. fYec11[(fYec11_idx+i)&2047] = (fRec13[i] + (0.5f * fRec10[i-1]));
  1265. fRec10[i] = fYec11[(fYec11_idx+i-225)&2047];
  1266. fRec11[i] = (fRec10[i-1] - fRec13[i]);
  1267. }
  1268. // post processing
  1269. for (int i=0; i<4; i++) fRec10_perm[i]=fRec10_tmp[count+i];
  1270. fYec11_idx_save = count;
  1271. // LOOP 0x101362e30
  1272. // pre processing
  1273. fYec23_idx = (fYec23_idx+fYec23_idx_save)&2047;
  1274. for (int i=0; i<4; i++) fRec34_tmp[i]=fRec34_perm[i];
  1275. // exec code
  1276. for (int i=0; i<count; i++) {
  1277. fYec23[(fYec23_idx+i)&2047] = (fRec37[i] + (0.5f * fRec34[i-1]));
  1278. fRec34[i] = fYec23[(fYec23_idx+i-248)&2047];
  1279. fRec35[i] = (fRec34[i-1] - fRec37[i]);
  1280. }
  1281. // post processing
  1282. for (int i=0; i<4; i++) fRec34_perm[i]=fRec34_tmp[count+i];
  1283. fYec23_idx_save = count;
  1284. // SECTION : 8
  1285. // LOOP 0x10134daa0
  1286. // exec code
  1287. for (int i=0; i<count; i++) {
  1288. fZec2[i] = ((fSlow4 * (float)input0[i]) + (fSlow3 * fRec11[i]));
  1289. }
  1290. // LOOP 0x101362d30
  1291. // exec code
  1292. for (int i=0; i<count; i++) {
  1293. fZec4[i] = ((fSlow4 * (float)input1[i]) + (fSlow3 * fRec35[i]));
  1294. }
  1295. // SECTION : 9
  1296. // LOOP 0x10134d9a0
  1297. // exec code
  1298. for (int i=0; i<count; i++) {
  1299. fZec5[i] = (1.500000e-02f * (fZec4[i] + fZec2[i]));
  1300. }
  1301. // SECTION : 10
  1302. // LOOP 0x10134b4b0
  1303. // pre processing
  1304. for (int i=0; i<4; i++) fRec9_tmp[i]=fRec9_perm[i];
  1305. fYec24_idx = (fYec24_idx+fYec24_idx_save)&4095;
  1306. for (int i=0; i<4; i++) fRec8_tmp[i]=fRec8_perm[i];
  1307. // exec code
  1308. for (int i=0; i<count; i++) {
  1309. fRec9[i] = ((fSlow1 * fRec8[i-1]) + (fSlow0 * fRec9[i-1]));
  1310. fYec24[(fYec24_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec9[i]));
  1311. fRec8[i] = fYec24[(fYec24_idx+i-1617)&4095];
  1312. }
  1313. // post processing
  1314. for (int i=0; i<4; i++) fRec8_perm[i]=fRec8_tmp[count+i];
  1315. fYec24_idx_save = count;
  1316. for (int i=0; i<4; i++) fRec9_perm[i]=fRec9_tmp[count+i];
  1317. // LOOP 0x101377dc0
  1318. // pre processing
  1319. for (int i=0; i<4; i++) fRec59_tmp[i]=fRec59_perm[i];
  1320. fYec25_idx = (fYec25_idx+fYec25_idx_save)&4095;
  1321. for (int i=0; i<4; i++) fRec58_tmp[i]=fRec58_perm[i];
  1322. // exec code
  1323. for (int i=0; i<count; i++) {
  1324. fRec59[i] = ((fSlow1 * fRec58[i-1]) + (fSlow0 * fRec59[i-1]));
  1325. fYec25[(fYec25_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec59[i]));
  1326. fRec58[i] = fYec25[(fYec25_idx+i-1557)&4095];
  1327. }
  1328. // post processing
  1329. for (int i=0; i<4; i++) fRec58_perm[i]=fRec58_tmp[count+i];
  1330. fYec25_idx_save = count;
  1331. for (int i=0; i<4; i++) fRec59_perm[i]=fRec59_tmp[count+i];
  1332. // LOOP 0x101379900
  1333. // pre processing
  1334. for (int i=0; i<4; i++) fRec61_tmp[i]=fRec61_perm[i];
  1335. fYec26_idx = (fYec26_idx+fYec26_idx_save)&4095;
  1336. for (int i=0; i<4; i++) fRec60_tmp[i]=fRec60_perm[i];
  1337. // exec code
  1338. for (int i=0; i<count; i++) {
  1339. fRec61[i] = ((fSlow1 * fRec60[i-1]) + (fSlow0 * fRec61[i-1]));
  1340. fYec26[(fYec26_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec61[i]));
  1341. fRec60[i] = fYec26[(fYec26_idx+i-1491)&4095];
  1342. }
  1343. // post processing
  1344. for (int i=0; i<4; i++) fRec60_perm[i]=fRec60_tmp[count+i];
  1345. fYec26_idx_save = count;
  1346. for (int i=0; i<4; i++) fRec61_perm[i]=fRec61_tmp[count+i];
  1347. // LOOP 0x10137b480
  1348. // pre processing
  1349. for (int i=0; i<4; i++) fRec63_tmp[i]=fRec63_perm[i];
  1350. fYec27_idx = (fYec27_idx+fYec27_idx_save)&4095;
  1351. for (int i=0; i<4; i++) fRec62_tmp[i]=fRec62_perm[i];
  1352. // exec code
  1353. for (int i=0; i<count; i++) {
  1354. fRec63[i] = ((fSlow1 * fRec62[i-1]) + (fSlow0 * fRec63[i-1]));
  1355. fYec27[(fYec27_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec63[i]));
  1356. fRec62[i] = fYec27[(fYec27_idx+i-1422)&4095];
  1357. }
  1358. // post processing
  1359. for (int i=0; i<4; i++) fRec62_perm[i]=fRec62_tmp[count+i];
  1360. fYec27_idx_save = count;
  1361. for (int i=0; i<4; i++) fRec63_perm[i]=fRec63_tmp[count+i];
  1362. // LOOP 0x10137d000
  1363. // pre processing
  1364. for (int i=0; i<4; i++) fRec65_tmp[i]=fRec65_perm[i];
  1365. fYec28_idx = (fYec28_idx+fYec28_idx_save)&4095;
  1366. for (int i=0; i<4; i++) fRec64_tmp[i]=fRec64_perm[i];
  1367. // exec code
  1368. for (int i=0; i<count; i++) {
  1369. fRec65[i] = ((fSlow1 * fRec64[i-1]) + (fSlow0 * fRec65[i-1]));
  1370. fYec28[(fYec28_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec65[i]));
  1371. fRec64[i] = fYec28[(fYec28_idx+i-1356)&4095];
  1372. }
  1373. // post processing
  1374. for (int i=0; i<4; i++) fRec64_perm[i]=fRec64_tmp[count+i];
  1375. fYec28_idx_save = count;
  1376. for (int i=0; i<4; i++) fRec65_perm[i]=fRec65_tmp[count+i];
  1377. // LOOP 0x10137eb80
  1378. // pre processing
  1379. for (int i=0; i<4; i++) fRec67_tmp[i]=fRec67_perm[i];
  1380. fYec29_idx = (fYec29_idx+fYec29_idx_save)&4095;
  1381. for (int i=0; i<4; i++) fRec66_tmp[i]=fRec66_perm[i];
  1382. // exec code
  1383. for (int i=0; i<count; i++) {
  1384. fRec67[i] = ((fSlow1 * fRec66[i-1]) + (fSlow0 * fRec67[i-1]));
  1385. fYec29[(fYec29_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec67[i]));
  1386. fRec66[i] = fYec29[(fYec29_idx+i-1277)&4095];
  1387. }
  1388. // post processing
  1389. for (int i=0; i<4; i++) fRec66_perm[i]=fRec66_tmp[count+i];
  1390. fYec29_idx_save = count;
  1391. for (int i=0; i<4; i++) fRec67_perm[i]=fRec67_tmp[count+i];
  1392. // LOOP 0x101380700
  1393. // pre processing
  1394. for (int i=0; i<4; i++) fRec69_tmp[i]=fRec69_perm[i];
  1395. fYec30_idx = (fYec30_idx+fYec30_idx_save)&4095;
  1396. for (int i=0; i<4; i++) fRec68_tmp[i]=fRec68_perm[i];
  1397. // exec code
  1398. for (int i=0; i<count; i++) {
  1399. fRec69[i] = ((fSlow1 * fRec68[i-1]) + (fSlow0 * fRec69[i-1]));
  1400. fYec30[(fYec30_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec69[i]));
  1401. fRec68[i] = fYec30[(fYec30_idx+i-1188)&4095];
  1402. }
  1403. // post processing
  1404. for (int i=0; i<4; i++) fRec68_perm[i]=fRec68_tmp[count+i];
  1405. fYec30_idx_save = count;
  1406. for (int i=0; i<4; i++) fRec69_perm[i]=fRec69_tmp[count+i];
  1407. // LOOP 0x101382280
  1408. // pre processing
  1409. for (int i=0; i<4; i++) fRec71_tmp[i]=fRec71_perm[i];
  1410. fYec31_idx = (fYec31_idx+fYec31_idx_save)&4095;
  1411. for (int i=0; i<4; i++) fRec70_tmp[i]=fRec70_perm[i];
  1412. // exec code
  1413. for (int i=0; i<count; i++) {
  1414. fRec71[i] = ((fSlow1 * fRec70[i-1]) + (fSlow0 * fRec71[i-1]));
  1415. fYec31[(fYec31_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec71[i]));
  1416. fRec70[i] = fYec31[(fYec31_idx+i-1116)&4095];
  1417. }
  1418. // post processing
  1419. for (int i=0; i<4; i++) fRec70_perm[i]=fRec70_tmp[count+i];
  1420. fYec31_idx_save = count;
  1421. for (int i=0; i<4; i++) fRec71_perm[i]=fRec71_tmp[count+i];
  1422. // LOOP 0x101389fc0
  1423. // pre processing
  1424. for (int i=0; i<4; i++) fRec81_tmp[i]=fRec81_perm[i];
  1425. fYec36_idx = (fYec36_idx+fYec36_idx_save)&4095;
  1426. for (int i=0; i<4; i++) fRec80_tmp[i]=fRec80_perm[i];
  1427. // exec code
  1428. for (int i=0; i<count; i++) {
  1429. fRec81[i] = ((fSlow1 * fRec80[i-1]) + (fSlow0 * fRec81[i-1]));
  1430. fYec36[(fYec36_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec81[i]));
  1431. fRec80[i] = fYec36[(fYec36_idx+i-1640)&4095];
  1432. }
  1433. // post processing
  1434. for (int i=0; i<4; i++) fRec80_perm[i]=fRec80_tmp[count+i];
  1435. fYec36_idx_save = count;
  1436. for (int i=0; i<4; i++) fRec81_perm[i]=fRec81_tmp[count+i];
  1437. // LOOP 0x10138bc10
  1438. // pre processing
  1439. for (int i=0; i<4; i++) fRec83_tmp[i]=fRec83_perm[i];
  1440. fYec37_idx = (fYec37_idx+fYec37_idx_save)&4095;
  1441. for (int i=0; i<4; i++) fRec82_tmp[i]=fRec82_perm[i];
  1442. // exec code
  1443. for (int i=0; i<count; i++) {
  1444. fRec83[i] = ((fSlow1 * fRec82[i-1]) + (fSlow0 * fRec83[i-1]));
  1445. fYec37[(fYec37_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec83[i]));
  1446. fRec82[i] = fYec37[(fYec37_idx+i-1580)&4095];
  1447. }
  1448. // post processing
  1449. for (int i=0; i<4; i++) fRec82_perm[i]=fRec82_tmp[count+i];
  1450. fYec37_idx_save = count;
  1451. for (int i=0; i<4; i++) fRec83_perm[i]=fRec83_tmp[count+i];
  1452. // LOOP 0x10138d7b0
  1453. // pre processing
  1454. for (int i=0; i<4; i++) fRec85_tmp[i]=fRec85_perm[i];
  1455. fYec38_idx = (fYec38_idx+fYec38_idx_save)&4095;
  1456. for (int i=0; i<4; i++) fRec84_tmp[i]=fRec84_perm[i];
  1457. // exec code
  1458. for (int i=0; i<count; i++) {
  1459. fRec85[i] = ((fSlow1 * fRec84[i-1]) + (fSlow0 * fRec85[i-1]));
  1460. fYec38[(fYec38_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec85[i]));
  1461. fRec84[i] = fYec38[(fYec38_idx+i-1514)&4095];
  1462. }
  1463. // post processing
  1464. for (int i=0; i<4; i++) fRec84_perm[i]=fRec84_tmp[count+i];
  1465. fYec38_idx_save = count;
  1466. for (int i=0; i<4; i++) fRec85_perm[i]=fRec85_tmp[count+i];
  1467. // LOOP 0x10138f330
  1468. // pre processing
  1469. for (int i=0; i<4; i++) fRec87_tmp[i]=fRec87_perm[i];
  1470. fYec39_idx = (fYec39_idx+fYec39_idx_save)&4095;
  1471. for (int i=0; i<4; i++) fRec86_tmp[i]=fRec86_perm[i];
  1472. // exec code
  1473. for (int i=0; i<count; i++) {
  1474. fRec87[i] = ((fSlow1 * fRec86[i-1]) + (fSlow0 * fRec87[i-1]));
  1475. fYec39[(fYec39_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec87[i]));
  1476. fRec86[i] = fYec39[(fYec39_idx+i-1445)&4095];
  1477. }
  1478. // post processing
  1479. for (int i=0; i<4; i++) fRec86_perm[i]=fRec86_tmp[count+i];
  1480. fYec39_idx_save = count;
  1481. for (int i=0; i<4; i++) fRec87_perm[i]=fRec87_tmp[count+i];
  1482. // LOOP 0x101390eb0
  1483. // pre processing
  1484. for (int i=0; i<4; i++) fRec89_tmp[i]=fRec89_perm[i];
  1485. fYec40_idx = (fYec40_idx+fYec40_idx_save)&4095;
  1486. for (int i=0; i<4; i++) fRec88_tmp[i]=fRec88_perm[i];
  1487. // exec code
  1488. for (int i=0; i<count; i++) {
  1489. fRec89[i] = ((fSlow1 * fRec88[i-1]) + (fSlow0 * fRec89[i-1]));
  1490. fYec40[(fYec40_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec89[i]));
  1491. fRec88[i] = fYec40[(fYec40_idx+i-1379)&4095];
  1492. }
  1493. // post processing
  1494. for (int i=0; i<4; i++) fRec88_perm[i]=fRec88_tmp[count+i];
  1495. fYec40_idx_save = count;
  1496. for (int i=0; i<4; i++) fRec89_perm[i]=fRec89_tmp[count+i];
  1497. // LOOP 0x101392a30
  1498. // pre processing
  1499. for (int i=0; i<4; i++) fRec91_tmp[i]=fRec91_perm[i];
  1500. fYec41_idx = (fYec41_idx+fYec41_idx_save)&4095;
  1501. for (int i=0; i<4; i++) fRec90_tmp[i]=fRec90_perm[i];
  1502. // exec code
  1503. for (int i=0; i<count; i++) {
  1504. fRec91[i] = ((fSlow1 * fRec90[i-1]) + (fSlow0 * fRec91[i-1]));
  1505. fYec41[(fYec41_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec91[i]));
  1506. fRec90[i] = fYec41[(fYec41_idx+i-1300)&4095];
  1507. }
  1508. // post processing
  1509. for (int i=0; i<4; i++) fRec90_perm[i]=fRec90_tmp[count+i];
  1510. fYec41_idx_save = count;
  1511. for (int i=0; i<4; i++) fRec91_perm[i]=fRec91_tmp[count+i];
  1512. // LOOP 0x1013945b0
  1513. // pre processing
  1514. for (int i=0; i<4; i++) fRec93_tmp[i]=fRec93_perm[i];
  1515. fYec42_idx = (fYec42_idx+fYec42_idx_save)&4095;
  1516. for (int i=0; i<4; i++) fRec92_tmp[i]=fRec92_perm[i];
  1517. // exec code
  1518. for (int i=0; i<count; i++) {
  1519. fRec93[i] = ((fSlow1 * fRec92[i-1]) + (fSlow0 * fRec93[i-1]));
  1520. fYec42[(fYec42_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec93[i]));
  1521. fRec92[i] = fYec42[(fYec42_idx+i-1211)&4095];
  1522. }
  1523. // post processing
  1524. for (int i=0; i<4; i++) fRec92_perm[i]=fRec92_tmp[count+i];
  1525. fYec42_idx_save = count;
  1526. for (int i=0; i<4; i++) fRec93_perm[i]=fRec93_tmp[count+i];
  1527. // LOOP 0x101396130
  1528. // pre processing
  1529. for (int i=0; i<4; i++) fRec95_tmp[i]=fRec95_perm[i];
  1530. fYec43_idx = (fYec43_idx+fYec43_idx_save)&4095;
  1531. for (int i=0; i<4; i++) fRec94_tmp[i]=fRec94_perm[i];
  1532. // exec code
  1533. for (int i=0; i<count; i++) {
  1534. fRec95[i] = ((fSlow1 * fRec94[i-1]) + (fSlow0 * fRec95[i-1]));
  1535. fYec43[(fYec43_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec95[i]));
  1536. fRec94[i] = fYec43[(fYec43_idx+i-1139)&4095];
  1537. }
  1538. // post processing
  1539. for (int i=0; i<4; i++) fRec94_perm[i]=fRec94_tmp[count+i];
  1540. fYec43_idx_save = count;
  1541. for (int i=0; i<4; i++) fRec95_perm[i]=fRec95_tmp[count+i];
  1542. // SECTION : 11
  1543. // LOOP 0x10134b3b0
  1544. // exec code
  1545. for (int i=0; i<count; i++) {
  1546. fZec6[i] = (((((((fRec70[i] + fRec68[i]) + fRec66[i]) + fRec64[i]) + fRec62[i]) + fRec60[i]) + fRec58[i]) + fRec8[i]);
  1547. }
  1548. // LOOP 0x101389ec0
  1549. // exec code
  1550. for (int i=0; i<count; i++) {
  1551. fZec7[i] = (((((((fRec94[i] + fRec92[i]) + fRec90[i]) + fRec88[i]) + fRec86[i]) + fRec84[i]) + fRec82[i]) + fRec80[i]);
  1552. }
  1553. // SECTION : 12
  1554. // LOOP 0x10134acd0
  1555. // pre processing
  1556. fYec32_idx = (fYec32_idx+fYec32_idx_save)&2047;
  1557. for (int i=0; i<4; i++) fRec6_tmp[i]=fRec6_perm[i];
  1558. // exec code
  1559. for (int i=0; i<count; i++) {
  1560. fYec32[(fYec32_idx+i)&2047] = (fZec6[i] + (0.5f * fRec6[i-1]));
  1561. fRec6[i] = fYec32[(fYec32_idx+i-556)&2047];
  1562. fRec7[i] = (0 - (fZec6[i] - fRec6[i-1]));
  1563. }
  1564. // post processing
  1565. for (int i=0; i<4; i++) fRec6_perm[i]=fRec6_tmp[count+i];
  1566. fYec32_idx_save = count;
  1567. // LOOP 0x1013897e0
  1568. // pre processing
  1569. fYec44_idx = (fYec44_idx+fYec44_idx_save)&2047;
  1570. for (int i=0; i<4; i++) fRec78_tmp[i]=fRec78_perm[i];
  1571. // exec code
  1572. for (int i=0; i<count; i++) {
  1573. fYec44[(fYec44_idx+i)&2047] = (fZec7[i] + (0.5f * fRec78[i-1]));
  1574. fRec78[i] = fYec44[(fYec44_idx+i-579)&2047];
  1575. fRec79[i] = (0 - (fZec7[i] - fRec78[i-1]));
  1576. }
  1577. // post processing
  1578. for (int i=0; i<4; i++) fRec78_perm[i]=fRec78_tmp[count+i];
  1579. fYec44_idx_save = count;
  1580. // SECTION : 13
  1581. // LOOP 0x10134a5f0
  1582. // pre processing
  1583. fYec33_idx = (fYec33_idx+fYec33_idx_save)&2047;
  1584. for (int i=0; i<4; i++) fRec4_tmp[i]=fRec4_perm[i];
  1585. // exec code
  1586. for (int i=0; i<count; i++) {
  1587. fYec33[(fYec33_idx+i)&2047] = (fRec7[i] + (0.5f * fRec4[i-1]));
  1588. fRec4[i] = fYec33[(fYec33_idx+i-441)&2047];
  1589. fRec5[i] = (fRec4[i-1] - fRec7[i]);
  1590. }
  1591. // post processing
  1592. for (int i=0; i<4; i++) fRec4_perm[i]=fRec4_tmp[count+i];
  1593. fYec33_idx_save = count;
  1594. // LOOP 0x101389100
  1595. // pre processing
  1596. fYec45_idx = (fYec45_idx+fYec45_idx_save)&2047;
  1597. for (int i=0; i<4; i++) fRec76_tmp[i]=fRec76_perm[i];
  1598. // exec code
  1599. for (int i=0; i<count; i++) {
  1600. fYec45[(fYec45_idx+i)&2047] = (fRec79[i] + (0.5f * fRec76[i-1]));
  1601. fRec76[i] = fYec45[(fYec45_idx+i-464)&2047];
  1602. fRec77[i] = (fRec76[i-1] - fRec79[i]);
  1603. }
  1604. // post processing
  1605. for (int i=0; i<4; i++) fRec76_perm[i]=fRec76_tmp[count+i];
  1606. fYec45_idx_save = count;
  1607. // SECTION : 14
  1608. // LOOP 0x101349f10
  1609. // pre processing
  1610. fYec34_idx = (fYec34_idx+fYec34_idx_save)&2047;
  1611. for (int i=0; i<4; i++) fRec2_tmp[i]=fRec2_perm[i];
  1612. // exec code
  1613. for (int i=0; i<count; i++) {
  1614. fYec34[(fYec34_idx+i)&2047] = (fRec5[i] + (0.5f * fRec2[i-1]));
  1615. fRec2[i] = fYec34[(fYec34_idx+i-341)&2047];
  1616. fRec3[i] = (fRec2[i-1] - fRec5[i]);
  1617. }
  1618. // post processing
  1619. for (int i=0; i<4; i++) fRec2_perm[i]=fRec2_tmp[count+i];
  1620. fYec34_idx_save = count;
  1621. // LOOP 0x101388a20
  1622. // pre processing
  1623. fYec46_idx = (fYec46_idx+fYec46_idx_save)&2047;
  1624. for (int i=0; i<4; i++) fRec74_tmp[i]=fRec74_perm[i];
  1625. // exec code
  1626. for (int i=0; i<count; i++) {
  1627. fYec46[(fYec46_idx+i)&2047] = (fRec77[i] + (0.5f * fRec74[i-1]));
  1628. fRec74[i] = fYec46[(fYec46_idx+i-364)&2047];
  1629. fRec75[i] = (fRec74[i-1] - fRec77[i]);
  1630. }
  1631. // post processing
  1632. for (int i=0; i<4; i++) fRec74_perm[i]=fRec74_tmp[count+i];
  1633. fYec46_idx_save = count;
  1634. // SECTION : 15
  1635. // LOOP 0x101349700
  1636. // pre processing
  1637. fYec35_idx = (fYec35_idx+fYec35_idx_save)&2047;
  1638. for (int i=0; i<4; i++) fRec0_tmp[i]=fRec0_perm[i];
  1639. // exec code
  1640. for (int i=0; i<count; i++) {
  1641. fYec35[(fYec35_idx+i)&2047] = (fRec3[i] + (0.5f * fRec0[i-1]));
  1642. fRec0[i] = fYec35[(fYec35_idx+i-225)&2047];
  1643. fRec1[i] = (fRec0[i-1] - fRec3[i]);
  1644. }
  1645. // post processing
  1646. for (int i=0; i<4; i++) fRec0_perm[i]=fRec0_tmp[count+i];
  1647. fYec35_idx_save = count;
  1648. // LOOP 0x1013883a0
  1649. // pre processing
  1650. fYec47_idx = (fYec47_idx+fYec47_idx_save)&2047;
  1651. for (int i=0; i<4; i++) fRec72_tmp[i]=fRec72_perm[i];
  1652. // exec code
  1653. for (int i=0; i<count; i++) {
  1654. fYec47[(fYec47_idx+i)&2047] = (fRec75[i] + (0.5f * fRec72[i-1]));
  1655. fRec72[i] = fYec47[(fYec47_idx+i-248)&2047];
  1656. fRec73[i] = (fRec72[i-1] - fRec75[i]);
  1657. }
  1658. // post processing
  1659. for (int i=0; i<4; i++) fRec72_perm[i]=fRec72_tmp[count+i];
  1660. fYec47_idx_save = count;
  1661. // SECTION : 16
  1662. // LOOP 0x101349600
  1663. // exec code
  1664. for (int i=0; i<count; i++) {
  1665. output0[i] = (FAUSTFLOAT)((fSlow4 * fZec2[i]) + (fSlow3 * fRec1[i]));
  1666. }
  1667. // LOOP 0x1013881d0
  1668. // exec code
  1669. for (int i=0; i<count; i++) {
  1670. output1[i] = (FAUSTFLOAT)((fSlow4 * fZec4[i]) + (fSlow3 * fRec73[i]));
  1671. }
  1672. }
  1673. if (index < fullcount) {
  1674. // compute the remaining samples if any
  1675. int count = fullcount-index;
  1676. FAUSTFLOAT* input0 = &input[0][index];
  1677. FAUSTFLOAT* input1 = &input[1][index];
  1678. FAUSTFLOAT* output0 = &output[0][index];
  1679. FAUSTFLOAT* output1 = &output[1][index];
  1680. // SECTION : 1
  1681. // LOOP 0x101350bc0
  1682. // exec code
  1683. for (int i=0; i<count; i++) {
  1684. fZec0[i] = (1.500000e-02f * ((float)input0[i] + (float)input1[i]));
  1685. }
  1686. // SECTION : 2
  1687. // LOOP 0x10134f970
  1688. // pre processing
  1689. for (int i=0; i<4; i++) fRec19_tmp[i]=fRec19_perm[i];
  1690. fYec0_idx = (fYec0_idx+fYec0_idx_save)&4095;
  1691. for (int i=0; i<4; i++) fRec18_tmp[i]=fRec18_perm[i];
  1692. // exec code
  1693. for (int i=0; i<count; i++) {
  1694. fRec19[i] = ((fSlow1 * fRec18[i-1]) + (fSlow0 * fRec19[i-1]));
  1695. fYec0[(fYec0_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec19[i]));
  1696. fRec18[i] = fYec0[(fYec0_idx+i-1617)&4095];
  1697. }
  1698. // post processing
  1699. for (int i=0; i<4; i++) fRec18_perm[i]=fRec18_tmp[count+i];
  1700. fYec0_idx_save = count;
  1701. for (int i=0; i<4; i++) fRec19_perm[i]=fRec19_tmp[count+i];
  1702. // LOOP 0x101351ed0
  1703. // pre processing
  1704. for (int i=0; i<4; i++) fRec21_tmp[i]=fRec21_perm[i];
  1705. fYec1_idx = (fYec1_idx+fYec1_idx_save)&4095;
  1706. for (int i=0; i<4; i++) fRec20_tmp[i]=fRec20_perm[i];
  1707. // exec code
  1708. for (int i=0; i<count; i++) {
  1709. fRec21[i] = ((fSlow1 * fRec20[i-1]) + (fSlow0 * fRec21[i-1]));
  1710. fYec1[(fYec1_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec21[i]));
  1711. fRec20[i] = fYec1[(fYec1_idx+i-1557)&4095];
  1712. }
  1713. // post processing
  1714. for (int i=0; i<4; i++) fRec20_perm[i]=fRec20_tmp[count+i];
  1715. fYec1_idx_save = count;
  1716. for (int i=0; i<4; i++) fRec21_perm[i]=fRec21_tmp[count+i];
  1717. // LOOP 0x101353a50
  1718. // pre processing
  1719. for (int i=0; i<4; i++) fRec23_tmp[i]=fRec23_perm[i];
  1720. fYec2_idx = (fYec2_idx+fYec2_idx_save)&4095;
  1721. for (int i=0; i<4; i++) fRec22_tmp[i]=fRec22_perm[i];
  1722. // exec code
  1723. for (int i=0; i<count; i++) {
  1724. fRec23[i] = ((fSlow1 * fRec22[i-1]) + (fSlow0 * fRec23[i-1]));
  1725. fYec2[(fYec2_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec23[i]));
  1726. fRec22[i] = fYec2[(fYec2_idx+i-1491)&4095];
  1727. }
  1728. // post processing
  1729. for (int i=0; i<4; i++) fRec22_perm[i]=fRec22_tmp[count+i];
  1730. fYec2_idx_save = count;
  1731. for (int i=0; i<4; i++) fRec23_perm[i]=fRec23_tmp[count+i];
  1732. // LOOP 0x1013555d0
  1733. // pre processing
  1734. for (int i=0; i<4; i++) fRec25_tmp[i]=fRec25_perm[i];
  1735. fYec3_idx = (fYec3_idx+fYec3_idx_save)&4095;
  1736. for (int i=0; i<4; i++) fRec24_tmp[i]=fRec24_perm[i];
  1737. // exec code
  1738. for (int i=0; i<count; i++) {
  1739. fRec25[i] = ((fSlow1 * fRec24[i-1]) + (fSlow0 * fRec25[i-1]));
  1740. fYec3[(fYec3_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec25[i]));
  1741. fRec24[i] = fYec3[(fYec3_idx+i-1422)&4095];
  1742. }
  1743. // post processing
  1744. for (int i=0; i<4; i++) fRec24_perm[i]=fRec24_tmp[count+i];
  1745. fYec3_idx_save = count;
  1746. for (int i=0; i<4; i++) fRec25_perm[i]=fRec25_tmp[count+i];
  1747. // LOOP 0x101357120
  1748. // pre processing
  1749. for (int i=0; i<4; i++) fRec27_tmp[i]=fRec27_perm[i];
  1750. fYec4_idx = (fYec4_idx+fYec4_idx_save)&4095;
  1751. for (int i=0; i<4; i++) fRec26_tmp[i]=fRec26_perm[i];
  1752. // exec code
  1753. for (int i=0; i<count; i++) {
  1754. fRec27[i] = ((fSlow1 * fRec26[i-1]) + (fSlow0 * fRec27[i-1]));
  1755. fYec4[(fYec4_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec27[i]));
  1756. fRec26[i] = fYec4[(fYec4_idx+i-1356)&4095];
  1757. }
  1758. // post processing
  1759. for (int i=0; i<4; i++) fRec26_perm[i]=fRec26_tmp[count+i];
  1760. fYec4_idx_save = count;
  1761. for (int i=0; i<4; i++) fRec27_perm[i]=fRec27_tmp[count+i];
  1762. // LOOP 0x101358c70
  1763. // pre processing
  1764. for (int i=0; i<4; i++) fRec29_tmp[i]=fRec29_perm[i];
  1765. fYec5_idx = (fYec5_idx+fYec5_idx_save)&4095;
  1766. for (int i=0; i<4; i++) fRec28_tmp[i]=fRec28_perm[i];
  1767. // exec code
  1768. for (int i=0; i<count; i++) {
  1769. fRec29[i] = ((fSlow1 * fRec28[i-1]) + (fSlow0 * fRec29[i-1]));
  1770. fYec5[(fYec5_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec29[i]));
  1771. fRec28[i] = fYec5[(fYec5_idx+i-1277)&4095];
  1772. }
  1773. // post processing
  1774. for (int i=0; i<4; i++) fRec28_perm[i]=fRec28_tmp[count+i];
  1775. fYec5_idx_save = count;
  1776. for (int i=0; i<4; i++) fRec29_perm[i]=fRec29_tmp[count+i];
  1777. // LOOP 0x10135a7e0
  1778. // pre processing
  1779. for (int i=0; i<4; i++) fRec31_tmp[i]=fRec31_perm[i];
  1780. fYec6_idx = (fYec6_idx+fYec6_idx_save)&4095;
  1781. for (int i=0; i<4; i++) fRec30_tmp[i]=fRec30_perm[i];
  1782. // exec code
  1783. for (int i=0; i<count; i++) {
  1784. fRec31[i] = ((fSlow1 * fRec30[i-1]) + (fSlow0 * fRec31[i-1]));
  1785. fYec6[(fYec6_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec31[i]));
  1786. fRec30[i] = fYec6[(fYec6_idx+i-1188)&4095];
  1787. }
  1788. // post processing
  1789. for (int i=0; i<4; i++) fRec30_perm[i]=fRec30_tmp[count+i];
  1790. fYec6_idx_save = count;
  1791. for (int i=0; i<4; i++) fRec31_perm[i]=fRec31_tmp[count+i];
  1792. // LOOP 0x10135c330
  1793. // pre processing
  1794. for (int i=0; i<4; i++) fRec33_tmp[i]=fRec33_perm[i];
  1795. fYec7_idx = (fYec7_idx+fYec7_idx_save)&4095;
  1796. for (int i=0; i<4; i++) fRec32_tmp[i]=fRec32_perm[i];
  1797. // exec code
  1798. for (int i=0; i<count; i++) {
  1799. fRec33[i] = ((fSlow1 * fRec32[i-1]) + (fSlow0 * fRec33[i-1]));
  1800. fYec7[(fYec7_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec33[i]));
  1801. fRec32[i] = fYec7[(fYec7_idx+i-1116)&4095];
  1802. }
  1803. // post processing
  1804. for (int i=0; i<4; i++) fRec32_perm[i]=fRec32_tmp[count+i];
  1805. fYec7_idx_save = count;
  1806. for (int i=0; i<4; i++) fRec33_perm[i]=fRec33_tmp[count+i];
  1807. // LOOP 0x101364b70
  1808. // pre processing
  1809. for (int i=0; i<4; i++) fRec43_tmp[i]=fRec43_perm[i];
  1810. fYec12_idx = (fYec12_idx+fYec12_idx_save)&4095;
  1811. for (int i=0; i<4; i++) fRec42_tmp[i]=fRec42_perm[i];
  1812. // exec code
  1813. for (int i=0; i<count; i++) {
  1814. fRec43[i] = ((fSlow1 * fRec42[i-1]) + (fSlow0 * fRec43[i-1]));
  1815. fYec12[(fYec12_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec43[i]));
  1816. fRec42[i] = fYec12[(fYec12_idx+i-1640)&4095];
  1817. }
  1818. // post processing
  1819. for (int i=0; i<4; i++) fRec42_perm[i]=fRec42_tmp[count+i];
  1820. fYec12_idx_save = count;
  1821. for (int i=0; i<4; i++) fRec43_perm[i]=fRec43_tmp[count+i];
  1822. // LOOP 0x1013667b0
  1823. // pre processing
  1824. for (int i=0; i<4; i++) fRec45_tmp[i]=fRec45_perm[i];
  1825. fYec13_idx = (fYec13_idx+fYec13_idx_save)&4095;
  1826. for (int i=0; i<4; i++) fRec44_tmp[i]=fRec44_perm[i];
  1827. // exec code
  1828. for (int i=0; i<count; i++) {
  1829. fRec45[i] = ((fSlow1 * fRec44[i-1]) + (fSlow0 * fRec45[i-1]));
  1830. fYec13[(fYec13_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec45[i]));
  1831. fRec44[i] = fYec13[(fYec13_idx+i-1580)&4095];
  1832. }
  1833. // post processing
  1834. for (int i=0; i<4; i++) fRec44_perm[i]=fRec44_tmp[count+i];
  1835. fYec13_idx_save = count;
  1836. for (int i=0; i<4; i++) fRec45_perm[i]=fRec45_tmp[count+i];
  1837. // LOOP 0x101368330
  1838. // pre processing
  1839. for (int i=0; i<4; i++) fRec47_tmp[i]=fRec47_perm[i];
  1840. fYec14_idx = (fYec14_idx+fYec14_idx_save)&4095;
  1841. for (int i=0; i<4; i++) fRec46_tmp[i]=fRec46_perm[i];
  1842. // exec code
  1843. for (int i=0; i<count; i++) {
  1844. fRec47[i] = ((fSlow1 * fRec46[i-1]) + (fSlow0 * fRec47[i-1]));
  1845. fYec14[(fYec14_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec47[i]));
  1846. fRec46[i] = fYec14[(fYec14_idx+i-1514)&4095];
  1847. }
  1848. // post processing
  1849. for (int i=0; i<4; i++) fRec46_perm[i]=fRec46_tmp[count+i];
  1850. fYec14_idx_save = count;
  1851. for (int i=0; i<4; i++) fRec47_perm[i]=fRec47_tmp[count+i];
  1852. // LOOP 0x101369f40
  1853. // pre processing
  1854. for (int i=0; i<4; i++) fRec49_tmp[i]=fRec49_perm[i];
  1855. fYec15_idx = (fYec15_idx+fYec15_idx_save)&4095;
  1856. for (int i=0; i<4; i++) fRec48_tmp[i]=fRec48_perm[i];
  1857. // exec code
  1858. for (int i=0; i<count; i++) {
  1859. fRec49[i] = ((fSlow1 * fRec48[i-1]) + (fSlow0 * fRec49[i-1]));
  1860. fYec15[(fYec15_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec49[i]));
  1861. fRec48[i] = fYec15[(fYec15_idx+i-1445)&4095];
  1862. }
  1863. // post processing
  1864. for (int i=0; i<4; i++) fRec48_perm[i]=fRec48_tmp[count+i];
  1865. fYec15_idx_save = count;
  1866. for (int i=0; i<4; i++) fRec49_perm[i]=fRec49_tmp[count+i];
  1867. // LOOP 0x10136bae0
  1868. // pre processing
  1869. for (int i=0; i<4; i++) fRec51_tmp[i]=fRec51_perm[i];
  1870. fYec16_idx = (fYec16_idx+fYec16_idx_save)&4095;
  1871. for (int i=0; i<4; i++) fRec50_tmp[i]=fRec50_perm[i];
  1872. // exec code
  1873. for (int i=0; i<count; i++) {
  1874. fRec51[i] = ((fSlow1 * fRec50[i-1]) + (fSlow0 * fRec51[i-1]));
  1875. fYec16[(fYec16_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec51[i]));
  1876. fRec50[i] = fYec16[(fYec16_idx+i-1379)&4095];
  1877. }
  1878. // post processing
  1879. for (int i=0; i<4; i++) fRec50_perm[i]=fRec50_tmp[count+i];
  1880. fYec16_idx_save = count;
  1881. for (int i=0; i<4; i++) fRec51_perm[i]=fRec51_tmp[count+i];
  1882. // LOOP 0x10136d660
  1883. // pre processing
  1884. for (int i=0; i<4; i++) fRec53_tmp[i]=fRec53_perm[i];
  1885. fYec17_idx = (fYec17_idx+fYec17_idx_save)&4095;
  1886. for (int i=0; i<4; i++) fRec52_tmp[i]=fRec52_perm[i];
  1887. // exec code
  1888. for (int i=0; i<count; i++) {
  1889. fRec53[i] = ((fSlow1 * fRec52[i-1]) + (fSlow0 * fRec53[i-1]));
  1890. fYec17[(fYec17_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec53[i]));
  1891. fRec52[i] = fYec17[(fYec17_idx+i-1300)&4095];
  1892. }
  1893. // post processing
  1894. for (int i=0; i<4; i++) fRec52_perm[i]=fRec52_tmp[count+i];
  1895. fYec17_idx_save = count;
  1896. for (int i=0; i<4; i++) fRec53_perm[i]=fRec53_tmp[count+i];
  1897. // LOOP 0x10136f1e0
  1898. // pre processing
  1899. for (int i=0; i<4; i++) fRec55_tmp[i]=fRec55_perm[i];
  1900. fYec18_idx = (fYec18_idx+fYec18_idx_save)&4095;
  1901. for (int i=0; i<4; i++) fRec54_tmp[i]=fRec54_perm[i];
  1902. // exec code
  1903. for (int i=0; i<count; i++) {
  1904. fRec55[i] = ((fSlow1 * fRec54[i-1]) + (fSlow0 * fRec55[i-1]));
  1905. fYec18[(fYec18_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec55[i]));
  1906. fRec54[i] = fYec18[(fYec18_idx+i-1211)&4095];
  1907. }
  1908. // post processing
  1909. for (int i=0; i<4; i++) fRec54_perm[i]=fRec54_tmp[count+i];
  1910. fYec18_idx_save = count;
  1911. for (int i=0; i<4; i++) fRec55_perm[i]=fRec55_tmp[count+i];
  1912. // LOOP 0x101370d60
  1913. // pre processing
  1914. for (int i=0; i<4; i++) fRec57_tmp[i]=fRec57_perm[i];
  1915. fYec19_idx = (fYec19_idx+fYec19_idx_save)&4095;
  1916. for (int i=0; i<4; i++) fRec56_tmp[i]=fRec56_perm[i];
  1917. // exec code
  1918. for (int i=0; i<count; i++) {
  1919. fRec57[i] = ((fSlow1 * fRec56[i-1]) + (fSlow0 * fRec57[i-1]));
  1920. fYec19[(fYec19_idx+i)&4095] = (fZec0[i] + (fSlow2 * fRec57[i]));
  1921. fRec56[i] = fYec19[(fYec19_idx+i-1139)&4095];
  1922. }
  1923. // post processing
  1924. for (int i=0; i<4; i++) fRec56_perm[i]=fRec56_tmp[count+i];
  1925. fYec19_idx_save = count;
  1926. for (int i=0; i<4; i++) fRec57_perm[i]=fRec57_tmp[count+i];
  1927. // SECTION : 3
  1928. // LOOP 0x10134f870
  1929. // exec code
  1930. for (int i=0; i<count; i++) {
  1931. fZec1[i] = (((((((fRec32[i] + fRec30[i]) + fRec28[i]) + fRec26[i]) + fRec24[i]) + fRec22[i]) + fRec20[i]) + fRec18[i]);
  1932. }
  1933. // LOOP 0x101364a70
  1934. // exec code
  1935. for (int i=0; i<count; i++) {
  1936. fZec3[i] = (((((((fRec56[i] + fRec54[i]) + fRec52[i]) + fRec50[i]) + fRec48[i]) + fRec46[i]) + fRec44[i]) + fRec42[i]);
  1937. }
  1938. // SECTION : 4
  1939. // LOOP 0x10134f120
  1940. // pre processing
  1941. fYec8_idx = (fYec8_idx+fYec8_idx_save)&2047;
  1942. for (int i=0; i<4; i++) fRec16_tmp[i]=fRec16_perm[i];
  1943. // exec code
  1944. for (int i=0; i<count; i++) {
  1945. fYec8[(fYec8_idx+i)&2047] = (fZec1[i] + (0.5f * fRec16[i-1]));
  1946. fRec16[i] = fYec8[(fYec8_idx+i-556)&2047];
  1947. fRec17[i] = (0 - (fZec1[i] - fRec16[i-1]));
  1948. }
  1949. // post processing
  1950. for (int i=0; i<4; i++) fRec16_perm[i]=fRec16_tmp[count+i];
  1951. fYec8_idx_save = count;
  1952. // LOOP 0x101364320
  1953. // pre processing
  1954. fYec20_idx = (fYec20_idx+fYec20_idx_save)&2047;
  1955. for (int i=0; i<4; i++) fRec40_tmp[i]=fRec40_perm[i];
  1956. // exec code
  1957. for (int i=0; i<count; i++) {
  1958. fYec20[(fYec20_idx+i)&2047] = (fZec3[i] + (0.5f * fRec40[i-1]));
  1959. fRec40[i] = fYec20[(fYec20_idx+i-579)&2047];
  1960. fRec41[i] = (0 - (fZec3[i] - fRec40[i-1]));
  1961. }
  1962. // post processing
  1963. for (int i=0; i<4; i++) fRec40_perm[i]=fRec40_tmp[count+i];
  1964. fYec20_idx_save = count;
  1965. // SECTION : 5
  1966. // LOOP 0x10134e9d0
  1967. // pre processing
  1968. fYec9_idx = (fYec9_idx+fYec9_idx_save)&2047;
  1969. for (int i=0; i<4; i++) fRec14_tmp[i]=fRec14_perm[i];
  1970. // exec code
  1971. for (int i=0; i<count; i++) {
  1972. fYec9[(fYec9_idx+i)&2047] = (fRec17[i] + (0.5f * fRec14[i-1]));
  1973. fRec14[i] = fYec9[(fYec9_idx+i-441)&2047];
  1974. fRec15[i] = (fRec14[i-1] - fRec17[i]);
  1975. }
  1976. // post processing
  1977. for (int i=0; i<4; i++) fRec14_perm[i]=fRec14_tmp[count+i];
  1978. fYec9_idx_save = count;
  1979. // LOOP 0x101363bd0
  1980. // pre processing
  1981. fYec21_idx = (fYec21_idx+fYec21_idx_save)&2047;
  1982. for (int i=0; i<4; i++) fRec38_tmp[i]=fRec38_perm[i];
  1983. // exec code
  1984. for (int i=0; i<count; i++) {
  1985. fYec21[(fYec21_idx+i)&2047] = (fRec41[i] + (0.5f * fRec38[i-1]));
  1986. fRec38[i] = fYec21[(fYec21_idx+i-464)&2047];
  1987. fRec39[i] = (fRec38[i-1] - fRec41[i]);
  1988. }
  1989. // post processing
  1990. for (int i=0; i<4; i++) fRec38_perm[i]=fRec38_tmp[count+i];
  1991. fYec21_idx_save = count;
  1992. // SECTION : 6
  1993. // LOOP 0x10134e2a0
  1994. // pre processing
  1995. fYec10_idx = (fYec10_idx+fYec10_idx_save)&2047;
  1996. for (int i=0; i<4; i++) fRec12_tmp[i]=fRec12_perm[i];
  1997. // exec code
  1998. for (int i=0; i<count; i++) {
  1999. fYec10[(fYec10_idx+i)&2047] = (fRec15[i] + (0.5f * fRec12[i-1]));
  2000. fRec12[i] = fYec10[(fYec10_idx+i-341)&2047];
  2001. fRec13[i] = (fRec12[i-1] - fRec15[i]);
  2002. }
  2003. // post processing
  2004. for (int i=0; i<4; i++) fRec12_perm[i]=fRec12_tmp[count+i];
  2005. fYec10_idx_save = count;
  2006. // LOOP 0x1013634a0
  2007. // pre processing
  2008. fYec22_idx = (fYec22_idx+fYec22_idx_save)&2047;
  2009. for (int i=0; i<4; i++) fRec36_tmp[i]=fRec36_perm[i];
  2010. // exec code
  2011. for (int i=0; i<count; i++) {
  2012. fYec22[(fYec22_idx+i)&2047] = (fRec39[i] + (0.5f * fRec36[i-1]));
  2013. fRec36[i] = fYec22[(fYec22_idx+i-364)&2047];
  2014. fRec37[i] = (fRec36[i-1] - fRec39[i]);
  2015. }
  2016. // post processing
  2017. for (int i=0; i<4; i++) fRec36_perm[i]=fRec36_tmp[count+i];
  2018. fYec22_idx_save = count;
  2019. // SECTION : 7
  2020. // LOOP 0x10134dba0
  2021. // pre processing
  2022. fYec11_idx = (fYec11_idx+fYec11_idx_save)&2047;
  2023. for (int i=0; i<4; i++) fRec10_tmp[i]=fRec10_perm[i];
  2024. // exec code
  2025. for (int i=0; i<count; i++) {
  2026. fYec11[(fYec11_idx+i)&2047] = (fRec13[i] + (0.5f * fRec10[i-1]));
  2027. fRec10[i] = fYec11[(fYec11_idx+i-225)&2047];
  2028. fRec11[i] = (fRec10[i-1] - fRec13[i]);
  2029. }
  2030. // post processing
  2031. for (int i=0; i<4; i++) fRec10_perm[i]=fRec10_tmp[count+i];
  2032. fYec11_idx_save = count;
  2033. // LOOP 0x101362e30
  2034. // pre processing
  2035. fYec23_idx = (fYec23_idx+fYec23_idx_save)&2047;
  2036. for (int i=0; i<4; i++) fRec34_tmp[i]=fRec34_perm[i];
  2037. // exec code
  2038. for (int i=0; i<count; i++) {
  2039. fYec23[(fYec23_idx+i)&2047] = (fRec37[i] + (0.5f * fRec34[i-1]));
  2040. fRec34[i] = fYec23[(fYec23_idx+i-248)&2047];
  2041. fRec35[i] = (fRec34[i-1] - fRec37[i]);
  2042. }
  2043. // post processing
  2044. for (int i=0; i<4; i++) fRec34_perm[i]=fRec34_tmp[count+i];
  2045. fYec23_idx_save = count;
  2046. // SECTION : 8
  2047. // LOOP 0x10134daa0
  2048. // exec code
  2049. for (int i=0; i<count; i++) {
  2050. fZec2[i] = ((fSlow4 * (float)input0[i]) + (fSlow3 * fRec11[i]));
  2051. }
  2052. // LOOP 0x101362d30
  2053. // exec code
  2054. for (int i=0; i<count; i++) {
  2055. fZec4[i] = ((fSlow4 * (float)input1[i]) + (fSlow3 * fRec35[i]));
  2056. }
  2057. // SECTION : 9
  2058. // LOOP 0x10134d9a0
  2059. // exec code
  2060. for (int i=0; i<count; i++) {
  2061. fZec5[i] = (1.500000e-02f * (fZec4[i] + fZec2[i]));
  2062. }
  2063. // SECTION : 10
  2064. // LOOP 0x10134b4b0
  2065. // pre processing
  2066. for (int i=0; i<4; i++) fRec9_tmp[i]=fRec9_perm[i];
  2067. fYec24_idx = (fYec24_idx+fYec24_idx_save)&4095;
  2068. for (int i=0; i<4; i++) fRec8_tmp[i]=fRec8_perm[i];
  2069. // exec code
  2070. for (int i=0; i<count; i++) {
  2071. fRec9[i] = ((fSlow1 * fRec8[i-1]) + (fSlow0 * fRec9[i-1]));
  2072. fYec24[(fYec24_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec9[i]));
  2073. fRec8[i] = fYec24[(fYec24_idx+i-1617)&4095];
  2074. }
  2075. // post processing
  2076. for (int i=0; i<4; i++) fRec8_perm[i]=fRec8_tmp[count+i];
  2077. fYec24_idx_save = count;
  2078. for (int i=0; i<4; i++) fRec9_perm[i]=fRec9_tmp[count+i];
  2079. // LOOP 0x101377dc0
  2080. // pre processing
  2081. for (int i=0; i<4; i++) fRec59_tmp[i]=fRec59_perm[i];
  2082. fYec25_idx = (fYec25_idx+fYec25_idx_save)&4095;
  2083. for (int i=0; i<4; i++) fRec58_tmp[i]=fRec58_perm[i];
  2084. // exec code
  2085. for (int i=0; i<count; i++) {
  2086. fRec59[i] = ((fSlow1 * fRec58[i-1]) + (fSlow0 * fRec59[i-1]));
  2087. fYec25[(fYec25_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec59[i]));
  2088. fRec58[i] = fYec25[(fYec25_idx+i-1557)&4095];
  2089. }
  2090. // post processing
  2091. for (int i=0; i<4; i++) fRec58_perm[i]=fRec58_tmp[count+i];
  2092. fYec25_idx_save = count;
  2093. for (int i=0; i<4; i++) fRec59_perm[i]=fRec59_tmp[count+i];
  2094. // LOOP 0x101379900
  2095. // pre processing
  2096. for (int i=0; i<4; i++) fRec61_tmp[i]=fRec61_perm[i];
  2097. fYec26_idx = (fYec26_idx+fYec26_idx_save)&4095;
  2098. for (int i=0; i<4; i++) fRec60_tmp[i]=fRec60_perm[i];
  2099. // exec code
  2100. for (int i=0; i<count; i++) {
  2101. fRec61[i] = ((fSlow1 * fRec60[i-1]) + (fSlow0 * fRec61[i-1]));
  2102. fYec26[(fYec26_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec61[i]));
  2103. fRec60[i] = fYec26[(fYec26_idx+i-1491)&4095];
  2104. }
  2105. // post processing
  2106. for (int i=0; i<4; i++) fRec60_perm[i]=fRec60_tmp[count+i];
  2107. fYec26_idx_save = count;
  2108. for (int i=0; i<4; i++) fRec61_perm[i]=fRec61_tmp[count+i];
  2109. // LOOP 0x10137b480
  2110. // pre processing
  2111. for (int i=0; i<4; i++) fRec63_tmp[i]=fRec63_perm[i];
  2112. fYec27_idx = (fYec27_idx+fYec27_idx_save)&4095;
  2113. for (int i=0; i<4; i++) fRec62_tmp[i]=fRec62_perm[i];
  2114. // exec code
  2115. for (int i=0; i<count; i++) {
  2116. fRec63[i] = ((fSlow1 * fRec62[i-1]) + (fSlow0 * fRec63[i-1]));
  2117. fYec27[(fYec27_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec63[i]));
  2118. fRec62[i] = fYec27[(fYec27_idx+i-1422)&4095];
  2119. }
  2120. // post processing
  2121. for (int i=0; i<4; i++) fRec62_perm[i]=fRec62_tmp[count+i];
  2122. fYec27_idx_save = count;
  2123. for (int i=0; i<4; i++) fRec63_perm[i]=fRec63_tmp[count+i];
  2124. // LOOP 0x10137d000
  2125. // pre processing
  2126. for (int i=0; i<4; i++) fRec65_tmp[i]=fRec65_perm[i];
  2127. fYec28_idx = (fYec28_idx+fYec28_idx_save)&4095;
  2128. for (int i=0; i<4; i++) fRec64_tmp[i]=fRec64_perm[i];
  2129. // exec code
  2130. for (int i=0; i<count; i++) {
  2131. fRec65[i] = ((fSlow1 * fRec64[i-1]) + (fSlow0 * fRec65[i-1]));
  2132. fYec28[(fYec28_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec65[i]));
  2133. fRec64[i] = fYec28[(fYec28_idx+i-1356)&4095];
  2134. }
  2135. // post processing
  2136. for (int i=0; i<4; i++) fRec64_perm[i]=fRec64_tmp[count+i];
  2137. fYec28_idx_save = count;
  2138. for (int i=0; i<4; i++) fRec65_perm[i]=fRec65_tmp[count+i];
  2139. // LOOP 0x10137eb80
  2140. // pre processing
  2141. for (int i=0; i<4; i++) fRec67_tmp[i]=fRec67_perm[i];
  2142. fYec29_idx = (fYec29_idx+fYec29_idx_save)&4095;
  2143. for (int i=0; i<4; i++) fRec66_tmp[i]=fRec66_perm[i];
  2144. // exec code
  2145. for (int i=0; i<count; i++) {
  2146. fRec67[i] = ((fSlow1 * fRec66[i-1]) + (fSlow0 * fRec67[i-1]));
  2147. fYec29[(fYec29_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec67[i]));
  2148. fRec66[i] = fYec29[(fYec29_idx+i-1277)&4095];
  2149. }
  2150. // post processing
  2151. for (int i=0; i<4; i++) fRec66_perm[i]=fRec66_tmp[count+i];
  2152. fYec29_idx_save = count;
  2153. for (int i=0; i<4; i++) fRec67_perm[i]=fRec67_tmp[count+i];
  2154. // LOOP 0x101380700
  2155. // pre processing
  2156. for (int i=0; i<4; i++) fRec69_tmp[i]=fRec69_perm[i];
  2157. fYec30_idx = (fYec30_idx+fYec30_idx_save)&4095;
  2158. for (int i=0; i<4; i++) fRec68_tmp[i]=fRec68_perm[i];
  2159. // exec code
  2160. for (int i=0; i<count; i++) {
  2161. fRec69[i] = ((fSlow1 * fRec68[i-1]) + (fSlow0 * fRec69[i-1]));
  2162. fYec30[(fYec30_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec69[i]));
  2163. fRec68[i] = fYec30[(fYec30_idx+i-1188)&4095];
  2164. }
  2165. // post processing
  2166. for (int i=0; i<4; i++) fRec68_perm[i]=fRec68_tmp[count+i];
  2167. fYec30_idx_save = count;
  2168. for (int i=0; i<4; i++) fRec69_perm[i]=fRec69_tmp[count+i];
  2169. // LOOP 0x101382280
  2170. // pre processing
  2171. for (int i=0; i<4; i++) fRec71_tmp[i]=fRec71_perm[i];
  2172. fYec31_idx = (fYec31_idx+fYec31_idx_save)&4095;
  2173. for (int i=0; i<4; i++) fRec70_tmp[i]=fRec70_perm[i];
  2174. // exec code
  2175. for (int i=0; i<count; i++) {
  2176. fRec71[i] = ((fSlow1 * fRec70[i-1]) + (fSlow0 * fRec71[i-1]));
  2177. fYec31[(fYec31_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec71[i]));
  2178. fRec70[i] = fYec31[(fYec31_idx+i-1116)&4095];
  2179. }
  2180. // post processing
  2181. for (int i=0; i<4; i++) fRec70_perm[i]=fRec70_tmp[count+i];
  2182. fYec31_idx_save = count;
  2183. for (int i=0; i<4; i++) fRec71_perm[i]=fRec71_tmp[count+i];
  2184. // LOOP 0x101389fc0
  2185. // pre processing
  2186. for (int i=0; i<4; i++) fRec81_tmp[i]=fRec81_perm[i];
  2187. fYec36_idx = (fYec36_idx+fYec36_idx_save)&4095;
  2188. for (int i=0; i<4; i++) fRec80_tmp[i]=fRec80_perm[i];
  2189. // exec code
  2190. for (int i=0; i<count; i++) {
  2191. fRec81[i] = ((fSlow1 * fRec80[i-1]) + (fSlow0 * fRec81[i-1]));
  2192. fYec36[(fYec36_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec81[i]));
  2193. fRec80[i] = fYec36[(fYec36_idx+i-1640)&4095];
  2194. }
  2195. // post processing
  2196. for (int i=0; i<4; i++) fRec80_perm[i]=fRec80_tmp[count+i];
  2197. fYec36_idx_save = count;
  2198. for (int i=0; i<4; i++) fRec81_perm[i]=fRec81_tmp[count+i];
  2199. // LOOP 0x10138bc10
  2200. // pre processing
  2201. for (int i=0; i<4; i++) fRec83_tmp[i]=fRec83_perm[i];
  2202. fYec37_idx = (fYec37_idx+fYec37_idx_save)&4095;
  2203. for (int i=0; i<4; i++) fRec82_tmp[i]=fRec82_perm[i];
  2204. // exec code
  2205. for (int i=0; i<count; i++) {
  2206. fRec83[i] = ((fSlow1 * fRec82[i-1]) + (fSlow0 * fRec83[i-1]));
  2207. fYec37[(fYec37_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec83[i]));
  2208. fRec82[i] = fYec37[(fYec37_idx+i-1580)&4095];
  2209. }
  2210. // post processing
  2211. for (int i=0; i<4; i++) fRec82_perm[i]=fRec82_tmp[count+i];
  2212. fYec37_idx_save = count;
  2213. for (int i=0; i<4; i++) fRec83_perm[i]=fRec83_tmp[count+i];
  2214. // LOOP 0x10138d7b0
  2215. // pre processing
  2216. for (int i=0; i<4; i++) fRec85_tmp[i]=fRec85_perm[i];
  2217. fYec38_idx = (fYec38_idx+fYec38_idx_save)&4095;
  2218. for (int i=0; i<4; i++) fRec84_tmp[i]=fRec84_perm[i];
  2219. // exec code
  2220. for (int i=0; i<count; i++) {
  2221. fRec85[i] = ((fSlow1 * fRec84[i-1]) + (fSlow0 * fRec85[i-1]));
  2222. fYec38[(fYec38_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec85[i]));
  2223. fRec84[i] = fYec38[(fYec38_idx+i-1514)&4095];
  2224. }
  2225. // post processing
  2226. for (int i=0; i<4; i++) fRec84_perm[i]=fRec84_tmp[count+i];
  2227. fYec38_idx_save = count;
  2228. for (int i=0; i<4; i++) fRec85_perm[i]=fRec85_tmp[count+i];
  2229. // LOOP 0x10138f330
  2230. // pre processing
  2231. for (int i=0; i<4; i++) fRec87_tmp[i]=fRec87_perm[i];
  2232. fYec39_idx = (fYec39_idx+fYec39_idx_save)&4095;
  2233. for (int i=0; i<4; i++) fRec86_tmp[i]=fRec86_perm[i];
  2234. // exec code
  2235. for (int i=0; i<count; i++) {
  2236. fRec87[i] = ((fSlow1 * fRec86[i-1]) + (fSlow0 * fRec87[i-1]));
  2237. fYec39[(fYec39_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec87[i]));
  2238. fRec86[i] = fYec39[(fYec39_idx+i-1445)&4095];
  2239. }
  2240. // post processing
  2241. for (int i=0; i<4; i++) fRec86_perm[i]=fRec86_tmp[count+i];
  2242. fYec39_idx_save = count;
  2243. for (int i=0; i<4; i++) fRec87_perm[i]=fRec87_tmp[count+i];
  2244. // LOOP 0x101390eb0
  2245. // pre processing
  2246. for (int i=0; i<4; i++) fRec89_tmp[i]=fRec89_perm[i];
  2247. fYec40_idx = (fYec40_idx+fYec40_idx_save)&4095;
  2248. for (int i=0; i<4; i++) fRec88_tmp[i]=fRec88_perm[i];
  2249. // exec code
  2250. for (int i=0; i<count; i++) {
  2251. fRec89[i] = ((fSlow1 * fRec88[i-1]) + (fSlow0 * fRec89[i-1]));
  2252. fYec40[(fYec40_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec89[i]));
  2253. fRec88[i] = fYec40[(fYec40_idx+i-1379)&4095];
  2254. }
  2255. // post processing
  2256. for (int i=0; i<4; i++) fRec88_perm[i]=fRec88_tmp[count+i];
  2257. fYec40_idx_save = count;
  2258. for (int i=0; i<4; i++) fRec89_perm[i]=fRec89_tmp[count+i];
  2259. // LOOP 0x101392a30
  2260. // pre processing
  2261. for (int i=0; i<4; i++) fRec91_tmp[i]=fRec91_perm[i];
  2262. fYec41_idx = (fYec41_idx+fYec41_idx_save)&4095;
  2263. for (int i=0; i<4; i++) fRec90_tmp[i]=fRec90_perm[i];
  2264. // exec code
  2265. for (int i=0; i<count; i++) {
  2266. fRec91[i] = ((fSlow1 * fRec90[i-1]) + (fSlow0 * fRec91[i-1]));
  2267. fYec41[(fYec41_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec91[i]));
  2268. fRec90[i] = fYec41[(fYec41_idx+i-1300)&4095];
  2269. }
  2270. // post processing
  2271. for (int i=0; i<4; i++) fRec90_perm[i]=fRec90_tmp[count+i];
  2272. fYec41_idx_save = count;
  2273. for (int i=0; i<4; i++) fRec91_perm[i]=fRec91_tmp[count+i];
  2274. // LOOP 0x1013945b0
  2275. // pre processing
  2276. for (int i=0; i<4; i++) fRec93_tmp[i]=fRec93_perm[i];
  2277. fYec42_idx = (fYec42_idx+fYec42_idx_save)&4095;
  2278. for (int i=0; i<4; i++) fRec92_tmp[i]=fRec92_perm[i];
  2279. // exec code
  2280. for (int i=0; i<count; i++) {
  2281. fRec93[i] = ((fSlow1 * fRec92[i-1]) + (fSlow0 * fRec93[i-1]));
  2282. fYec42[(fYec42_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec93[i]));
  2283. fRec92[i] = fYec42[(fYec42_idx+i-1211)&4095];
  2284. }
  2285. // post processing
  2286. for (int i=0; i<4; i++) fRec92_perm[i]=fRec92_tmp[count+i];
  2287. fYec42_idx_save = count;
  2288. for (int i=0; i<4; i++) fRec93_perm[i]=fRec93_tmp[count+i];
  2289. // LOOP 0x101396130
  2290. // pre processing
  2291. for (int i=0; i<4; i++) fRec95_tmp[i]=fRec95_perm[i];
  2292. fYec43_idx = (fYec43_idx+fYec43_idx_save)&4095;
  2293. for (int i=0; i<4; i++) fRec94_tmp[i]=fRec94_perm[i];
  2294. // exec code
  2295. for (int i=0; i<count; i++) {
  2296. fRec95[i] = ((fSlow1 * fRec94[i-1]) + (fSlow0 * fRec95[i-1]));
  2297. fYec43[(fYec43_idx+i)&4095] = (fZec5[i] + (fSlow2 * fRec95[i]));
  2298. fRec94[i] = fYec43[(fYec43_idx+i-1139)&4095];
  2299. }
  2300. // post processing
  2301. for (int i=0; i<4; i++) fRec94_perm[i]=fRec94_tmp[count+i];
  2302. fYec43_idx_save = count;
  2303. for (int i=0; i<4; i++) fRec95_perm[i]=fRec95_tmp[count+i];
  2304. // SECTION : 11
  2305. // LOOP 0x10134b3b0
  2306. // exec code
  2307. for (int i=0; i<count; i++) {
  2308. fZec6[i] = (((((((fRec70[i] + fRec68[i]) + fRec66[i]) + fRec64[i]) + fRec62[i]) + fRec60[i]) + fRec58[i]) + fRec8[i]);
  2309. }
  2310. // LOOP 0x101389ec0
  2311. // exec code
  2312. for (int i=0; i<count; i++) {
  2313. fZec7[i] = (((((((fRec94[i] + fRec92[i]) + fRec90[i]) + fRec88[i]) + fRec86[i]) + fRec84[i]) + fRec82[i]) + fRec80[i]);
  2314. }
  2315. // SECTION : 12
  2316. // LOOP 0x10134acd0
  2317. // pre processing
  2318. fYec32_idx = (fYec32_idx+fYec32_idx_save)&2047;
  2319. for (int i=0; i<4; i++) fRec6_tmp[i]=fRec6_perm[i];
  2320. // exec code
  2321. for (int i=0; i<count; i++) {
  2322. fYec32[(fYec32_idx+i)&2047] = (fZec6[i] + (0.5f * fRec6[i-1]));
  2323. fRec6[i] = fYec32[(fYec32_idx+i-556)&2047];
  2324. fRec7[i] = (0 - (fZec6[i] - fRec6[i-1]));
  2325. }
  2326. // post processing
  2327. for (int i=0; i<4; i++) fRec6_perm[i]=fRec6_tmp[count+i];
  2328. fYec32_idx_save = count;
  2329. // LOOP 0x1013897e0
  2330. // pre processing
  2331. fYec44_idx = (fYec44_idx+fYec44_idx_save)&2047;
  2332. for (int i=0; i<4; i++) fRec78_tmp[i]=fRec78_perm[i];
  2333. // exec code
  2334. for (int i=0; i<count; i++) {
  2335. fYec44[(fYec44_idx+i)&2047] = (fZec7[i] + (0.5f * fRec78[i-1]));
  2336. fRec78[i] = fYec44[(fYec44_idx+i-579)&2047];
  2337. fRec79[i] = (0 - (fZec7[i] - fRec78[i-1]));
  2338. }
  2339. // post processing
  2340. for (int i=0; i<4; i++) fRec78_perm[i]=fRec78_tmp[count+i];
  2341. fYec44_idx_save = count;
  2342. // SECTION : 13
  2343. // LOOP 0x10134a5f0
  2344. // pre processing
  2345. fYec33_idx = (fYec33_idx+fYec33_idx_save)&2047;
  2346. for (int i=0; i<4; i++) fRec4_tmp[i]=fRec4_perm[i];
  2347. // exec code
  2348. for (int i=0; i<count; i++) {
  2349. fYec33[(fYec33_idx+i)&2047] = (fRec7[i] + (0.5f * fRec4[i-1]));
  2350. fRec4[i] = fYec33[(fYec33_idx+i-441)&2047];
  2351. fRec5[i] = (fRec4[i-1] - fRec7[i]);
  2352. }
  2353. // post processing
  2354. for (int i=0; i<4; i++) fRec4_perm[i]=fRec4_tmp[count+i];
  2355. fYec33_idx_save = count;
  2356. // LOOP 0x101389100
  2357. // pre processing
  2358. fYec45_idx = (fYec45_idx+fYec45_idx_save)&2047;
  2359. for (int i=0; i<4; i++) fRec76_tmp[i]=fRec76_perm[i];
  2360. // exec code
  2361. for (int i=0; i<count; i++) {
  2362. fYec45[(fYec45_idx+i)&2047] = (fRec79[i] + (0.5f * fRec76[i-1]));
  2363. fRec76[i] = fYec45[(fYec45_idx+i-464)&2047];
  2364. fRec77[i] = (fRec76[i-1] - fRec79[i]);
  2365. }
  2366. // post processing
  2367. for (int i=0; i<4; i++) fRec76_perm[i]=fRec76_tmp[count+i];
  2368. fYec45_idx_save = count;
  2369. // SECTION : 14
  2370. // LOOP 0x101349f10
  2371. // pre processing
  2372. fYec34_idx = (fYec34_idx+fYec34_idx_save)&2047;
  2373. for (int i=0; i<4; i++) fRec2_tmp[i]=fRec2_perm[i];
  2374. // exec code
  2375. for (int i=0; i<count; i++) {
  2376. fYec34[(fYec34_idx+i)&2047] = (fRec5[i] + (0.5f * fRec2[i-1]));
  2377. fRec2[i] = fYec34[(fYec34_idx+i-341)&2047];
  2378. fRec3[i] = (fRec2[i-1] - fRec5[i]);
  2379. }
  2380. // post processing
  2381. for (int i=0; i<4; i++) fRec2_perm[i]=fRec2_tmp[count+i];
  2382. fYec34_idx_save = count;
  2383. // LOOP 0x101388a20
  2384. // pre processing
  2385. fYec46_idx = (fYec46_idx+fYec46_idx_save)&2047;
  2386. for (int i=0; i<4; i++) fRec74_tmp[i]=fRec74_perm[i];
  2387. // exec code
  2388. for (int i=0; i<count; i++) {
  2389. fYec46[(fYec46_idx+i)&2047] = (fRec77[i] + (0.5f * fRec74[i-1]));
  2390. fRec74[i] = fYec46[(fYec46_idx+i-364)&2047];
  2391. fRec75[i] = (fRec74[i-1] - fRec77[i]);
  2392. }
  2393. // post processing
  2394. for (int i=0; i<4; i++) fRec74_perm[i]=fRec74_tmp[count+i];
  2395. fYec46_idx_save = count;
  2396. // SECTION : 15
  2397. // LOOP 0x101349700
  2398. // pre processing
  2399. fYec35_idx = (fYec35_idx+fYec35_idx_save)&2047;
  2400. for (int i=0; i<4; i++) fRec0_tmp[i]=fRec0_perm[i];
  2401. // exec code
  2402. for (int i=0; i<count; i++) {
  2403. fYec35[(fYec35_idx+i)&2047] = (fRec3[i] + (0.5f * fRec0[i-1]));
  2404. fRec0[i] = fYec35[(fYec35_idx+i-225)&2047];
  2405. fRec1[i] = (fRec0[i-1] - fRec3[i]);
  2406. }
  2407. // post processing
  2408. for (int i=0; i<4; i++) fRec0_perm[i]=fRec0_tmp[count+i];
  2409. fYec35_idx_save = count;
  2410. // LOOP 0x1013883a0
  2411. // pre processing
  2412. fYec47_idx = (fYec47_idx+fYec47_idx_save)&2047;
  2413. for (int i=0; i<4; i++) fRec72_tmp[i]=fRec72_perm[i];
  2414. // exec code
  2415. for (int i=0; i<count; i++) {
  2416. fYec47[(fYec47_idx+i)&2047] = (fRec75[i] + (0.5f * fRec72[i-1]));
  2417. fRec72[i] = fYec47[(fYec47_idx+i-248)&2047];
  2418. fRec73[i] = (fRec72[i-1] - fRec75[i]);
  2419. }
  2420. // post processing
  2421. for (int i=0; i<4; i++) fRec72_perm[i]=fRec72_tmp[count+i];
  2422. fYec47_idx_save = count;
  2423. // SECTION : 16
  2424. // LOOP 0x101349600
  2425. // exec code
  2426. for (int i=0; i<count; i++) {
  2427. output0[i] = (FAUSTFLOAT)((fSlow4 * fZec2[i]) + (fSlow3 * fRec1[i]));
  2428. }
  2429. // LOOP 0x1013881d0
  2430. // exec code
  2431. for (int i=0; i<count; i++) {
  2432. output1[i] = (FAUSTFLOAT)((fSlow4 * fZec4[i]) + (fSlow3 * fRec73[i]));
  2433. }
  2434. }
  2435. }
  2436. };
  2437. mydsp DSP;
  2438. /******************************************************************************
  2439. *******************************************************************************
  2440. COREAUDIO INTERFACE
  2441. *******************************************************************************
  2442. *******************************************************************************/
  2443. #define MAX_CHANNELS 256
  2444. #define OPEN_ERR -1
  2445. #define NO_ERR 0
  2446. class TiPhoneCoreAudioRenderer
  2447. {
  2448. private:
  2449. AudioUnit fAUHAL;
  2450. int fDevNumInChans;
  2451. int fDevNumOutChans;
  2452. float* fInChannel[MAX_CHANNELS];
  2453. float* fOutChannel[MAX_CHANNELS];
  2454. static OSStatus Render(void *inRefCon,
  2455. AudioUnitRenderActionFlags *ioActionFlags,
  2456. const AudioTimeStamp *inTimeStamp,
  2457. UInt32 inBusNumber,
  2458. UInt32 inNumberFrames,
  2459. AudioBufferList *ioData);
  2460. static void InterruptionListener(void *inClientData, UInt32 inInterruption);
  2461. public:
  2462. TiPhoneCoreAudioRenderer(int input, int output)
  2463. :fDevNumInChans(input), fDevNumOutChans(output)
  2464. {
  2465. for (int i = 0; i < fDevNumInChans; i++) {
  2466. fInChannel[i] = new float[8192];
  2467. }
  2468. for (int i = 0; i < fDevNumOutChans; i++) {
  2469. fOutChannel[i] = new float[8192];
  2470. }
  2471. }
  2472. virtual ~TiPhoneCoreAudioRenderer()
  2473. {
  2474. for (int i = 0; i < fDevNumInChans; i++) {
  2475. delete[] fInChannel[i];
  2476. }
  2477. for (int i = 0; i < fDevNumOutChans; i++) {
  2478. delete[] fOutChannel[i];
  2479. }
  2480. }
  2481. long Open(long bufferSize, long sampleRate);
  2482. long Close();
  2483. long Start();
  2484. long Stop();
  2485. };
  2486. typedef TiPhoneCoreAudioRenderer * TiPhoneCoreAudioRendererPtr;
  2487. static void PrintStreamDesc(AudioStreamBasicDescription *inDesc)
  2488. {
  2489. printf("- - - - - - - - - - - - - - - - - - - -\n");
  2490. printf(" Sample Rate:%f\n", inDesc->mSampleRate);
  2491. printf(" Format ID:%.*s\n", (int) sizeof(inDesc->mFormatID), (char*)&inDesc->mFormatID);
  2492. printf(" Format Flags:%lX\n", inDesc->mFormatFlags);
  2493. printf(" Bytes per Packet:%ld\n", inDesc->mBytesPerPacket);
  2494. printf(" Frames per Packet:%ld\n", inDesc->mFramesPerPacket);
  2495. printf(" Bytes per Frame:%ld\n", inDesc->mBytesPerFrame);
  2496. printf(" Channels per Frame:%ld\n", inDesc->mChannelsPerFrame);
  2497. printf(" Bits per Channel:%ld\n", inDesc->mBitsPerChannel);
  2498. printf("- - - - - - - - - - - - - - - - - - - -\n");
  2499. }
  2500. static void printError(OSStatus err)
  2501. {
  2502. switch (err) {
  2503. case kAudioConverterErr_FormatNotSupported:
  2504. printf("error code : kAudioConverterErr_FormatNotSupported\n");
  2505. break;
  2506. case kAudioConverterErr_OperationNotSupported:
  2507. printf("error code : kAudioConverterErr_OperationNotSupported\n");
  2508. break;
  2509. case kAudioConverterErr_PropertyNotSupported:
  2510. printf("error code : kAudioConverterErr_PropertyNotSupported\n");
  2511. break;
  2512. case kAudioConverterErr_InvalidInputSize:
  2513. printf("error code : kAudioConverterErr_InvalidInputSize\n");
  2514. break;
  2515. case kAudioConverterErr_InvalidOutputSize:
  2516. printf("error code : kAudioConverterErr_InvalidOutputSize\n");
  2517. break;
  2518. case kAudioConverterErr_UnspecifiedError:
  2519. printf("error code : kAudioConverterErr_UnspecifiedError\n");
  2520. break;
  2521. case kAudioConverterErr_BadPropertySizeError:
  2522. printf("error code : kAudioConverterErr_BadPropertySizeError\n");
  2523. break;
  2524. case kAudioConverterErr_RequiresPacketDescriptionsError:
  2525. printf("error code : kAudioConverterErr_RequiresPacketDescriptionsError\n");
  2526. break;
  2527. case kAudioConverterErr_InputSampleRateOutOfRange:
  2528. printf("error code : kAudioConverterErr_InputSampleRateOutOfRange\n");
  2529. break;
  2530. case kAudioConverterErr_OutputSampleRateOutOfRange:
  2531. printf("error code : kAudioConverterErr_OutputSampleRateOutOfRange\n");
  2532. break;
  2533. default:
  2534. printf("error code : unknown\n");
  2535. break;
  2536. }
  2537. }
  2538. st::HardwareClock my_clock;
  2539. OSStatus TiPhoneCoreAudioRenderer::Render(void *inRefCon,
  2540. AudioUnitRenderActionFlags *ioActionFlags,
  2541. const AudioTimeStamp *inTimeStamp,
  2542. UInt32,
  2543. UInt32 inNumberFrames,
  2544. AudioBufferList *ioData)
  2545. {
  2546. TiPhoneCoreAudioRendererPtr renderer = (TiPhoneCoreAudioRendererPtr)inRefCon;
  2547. my_clock.Update();
  2548. //printf("TiPhoneCoreAudioRenderer::Render 0 %d\n", inNumberFrames);
  2549. AudioUnitRender(renderer->fAUHAL, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
  2550. float coef = 1.f/32768.f;
  2551. /*
  2552. for (int chan = 0; chan < fDevNumInChans; chan++) {
  2553. for (int frame = 0; frame < inNumberFrames; frame++) {
  2554. fInChannel[chan][frame] = float(((long*)ioData->mBuffers[chan].mData)[frame]) / 32768.f;
  2555. fInChannel[chan][frame] = float(((long*)ioData->mBuffers[chan].mData)[frame]) / 32768.f;
  2556. }
  2557. }
  2558. */
  2559. for (int frame = 0; frame < inNumberFrames; frame++) {
  2560. float sample = float(((long*)ioData->mBuffers[0].mData)[frame]) * coef;
  2561. renderer->fInChannel[0][frame] = sample;
  2562. renderer->fInChannel[1][frame] = sample;
  2563. }
  2564. //printf("TiPhoneCoreAudioRenderer::Render 1 %d\n", inNumberFrames);
  2565. DSP.compute((int)inNumberFrames, renderer->fInChannel, renderer->fOutChannel);
  2566. for (int chan = 0; chan < renderer->fDevNumOutChans; chan++) {
  2567. for (int frame = 0; frame < inNumberFrames; frame++) {
  2568. ((long*)ioData->mBuffers[chan].mData)[frame] = long(renderer->fOutChannel[chan][frame] * 32768.f);
  2569. }
  2570. }
  2571. my_clock.Update();
  2572. const float dt = my_clock.GetDeltaTime();
  2573. printf("Normal: %f s\n", dt);
  2574. //printf("TiPhoneCoreAudioRenderer::Render 3 %d\n", inNumberFrames);
  2575. return 0;
  2576. }
  2577. void TiPhoneCoreAudioRenderer::InterruptionListener(void *inClientData, UInt32 inInterruption)
  2578. {
  2579. printf("Session interrupted! --- %s ---", inInterruption == kAudioSessionBeginInterruption ? "Begin Interruption" : "End Interruption");
  2580. TiPhoneCoreAudioRenderer *obj = (TiPhoneCoreAudioRenderer*)inClientData;
  2581. if (inInterruption == kAudioSessionEndInterruption) {
  2582. // make sure we are again the active session
  2583. AudioSessionSetActive(true);
  2584. AudioOutputUnitStart(obj->fAUHAL);
  2585. }
  2586. if (inInterruption == kAudioSessionBeginInterruption) {
  2587. AudioOutputUnitStop(obj->fAUHAL);
  2588. }
  2589. }
  2590. long TiPhoneCoreAudioRenderer::Open(long bufferSize, long samplerate)
  2591. {
  2592. OSStatus err1;
  2593. UInt32 outSize;
  2594. UInt32 enableIO;
  2595. Boolean isWritable;
  2596. AudioStreamBasicDescription srcFormat, dstFormat;
  2597. printf("Open fDevNumInChans = %ld fDevNumOutChans = %ld bufferSize = %ld samplerate = %ld\n", fDevNumInChans, fDevNumOutChans, bufferSize, samplerate);
  2598. // Initialize and configure the audio session
  2599. err1 = AudioSessionInitialize(NULL, NULL, InterruptionListener, this);
  2600. if (err1 != noErr) {
  2601. printf("Couldn't initialize audio session\n");
  2602. printError(err1);
  2603. return OPEN_ERR;
  2604. }
  2605. err1 = AudioSessionSetActive(true);
  2606. if (err1 != noErr) {
  2607. printf("Couldn't set audio session active\n");
  2608. printError(err1);
  2609. return OPEN_ERR;
  2610. }
  2611. UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
  2612. err1 = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
  2613. if (err1 != noErr) {
  2614. printf("Couldn't set audio category\n");
  2615. printError(err1);
  2616. return OPEN_ERR;
  2617. }
  2618. //err1 = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, propListener, self), "couldn't set property listener");
  2619. Float64 hwSampleRate;
  2620. outSize = sizeof(hwSampleRate);
  2621. err1 = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareSampleRate, &outSize, &hwSampleRate);
  2622. if (err1 != noErr) {
  2623. printf("Couldn't get hw sample rate\n");
  2624. printError(err1);
  2625. return OPEN_ERR;
  2626. } else {
  2627. printf("Get hw sample rate %f\n", hwSampleRate);
  2628. }
  2629. Float32 hwBufferSize;
  2630. outSize = sizeof(hwBufferSize);
  2631. err1 = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration, &outSize, &hwBufferSize);
  2632. if (err1 != noErr) {
  2633. printf("Couldn't get hw buffer duration\n");
  2634. printError(err1);
  2635. return OPEN_ERR;
  2636. } else {
  2637. printf("Get hw buffer duration %f\n", hwBufferSize);
  2638. }
  2639. UInt32 hwInput;
  2640. outSize = sizeof(hwInput);
  2641. err1 = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareInputNumberChannels, &outSize, &hwInput);
  2642. if (err1 != noErr) {
  2643. printf("Couldn't get hw input channels\n");
  2644. printError(err1);
  2645. return OPEN_ERR;
  2646. } else {
  2647. printf("Get hw input channels %d\n", hwInput);
  2648. }
  2649. UInt32 hwOutput;
  2650. outSize = sizeof(hwOutput);
  2651. err1 = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputNumberChannels, &outSize, &hwOutput);
  2652. if (err1 != noErr) {
  2653. printf("Couldn't get hw output channels\n");
  2654. printError(err1);
  2655. return OPEN_ERR;
  2656. } else {
  2657. printf("Get hw output channels %d\n", hwOutput);
  2658. }
  2659. Float32 preferredBufferSize = float(bufferSize) / float(samplerate);
  2660. printf("preferredBufferSize %f \n", preferredBufferSize);
  2661. err1 = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferSize), &preferredBufferSize);
  2662. if (err1 != noErr) {
  2663. printf("Couldn't set i/o buffer duration\n");
  2664. printError(err1);
  2665. return OPEN_ERR;
  2666. }
  2667. Float64 preferredSamplerate = float(samplerate);
  2668. err1 = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareSampleRate, sizeof(preferredSamplerate), &preferredSamplerate);
  2669. if (err1 != noErr) {
  2670. printf("Couldn't set i/o sample rate\n");
  2671. printError(err1);
  2672. return OPEN_ERR;
  2673. }
  2674. // AUHAL
  2675. AudioComponentDescription cd = {kAudioUnitType_Output, kAudioUnitSubType_RemoteIO, kAudioUnitManufacturer_Apple, 0, 0};
  2676. AudioComponent HALOutput = AudioComponentFindNext(NULL, &cd);
  2677. err1 = AudioComponentInstanceNew(HALOutput, &fAUHAL);
  2678. if (err1 != noErr) {
  2679. printf("Error calling OpenAComponent\n");
  2680. printError(err1);
  2681. goto error;
  2682. }
  2683. enableIO = 1;
  2684. err1 = AudioUnitSetProperty(fAUHAL, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, &enableIO, sizeof(enableIO));
  2685. if (err1 != noErr) {
  2686. printf("Error calling AudioUnitSetProperty - kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output\n");
  2687. printError(err1);
  2688. goto error;
  2689. }
  2690. enableIO = 1;
  2691. err1 = AudioUnitSetProperty(fAUHAL, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &enableIO, sizeof(enableIO));
  2692. if (err1 != noErr) {
  2693. printf("Error calling AudioUnitSetProperty - kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input\n");
  2694. printError(err1);
  2695. goto error;
  2696. }
  2697. UInt32 maxFPS;
  2698. outSize = sizeof(maxFPS);
  2699. err1 = AudioUnitGetProperty(fAUHAL, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 0, &maxFPS, &outSize);
  2700. if (err1 != noErr) {
  2701. printf("Couldn't get kAudioUnitProperty_MaximumFramesPerSlice\n");
  2702. printError(err1);
  2703. goto error;
  2704. } else {
  2705. printf("Get kAudioUnitProperty_MaximumFramesPerSlice %d\n", maxFPS);
  2706. }
  2707. err1 = AudioUnitSetProperty(fAUHAL, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 1, (UInt32*)&bufferSize, sizeof(UInt32));
  2708. if (err1 != noErr) {
  2709. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_MaximumFramesPerSlice\n");
  2710. printError(err1);
  2711. goto error;
  2712. }
  2713. err1 = AudioUnitSetProperty(fAUHAL, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global, 0, (UInt32*)&bufferSize, sizeof(UInt32));
  2714. if (err1 != noErr) {
  2715. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_MaximumFramesPerSlice\n");
  2716. printError(err1);
  2717. goto error;
  2718. }
  2719. err1 = AudioUnitInitialize(fAUHAL);
  2720. if (err1 != noErr) {
  2721. printf("Cannot initialize AUHAL unit\n");
  2722. printError(err1);
  2723. goto error;
  2724. }
  2725. // Setting format
  2726. if (fDevNumInChans > 0) {
  2727. outSize = sizeof(AudioStreamBasicDescription);
  2728. err1 = AudioUnitGetProperty(fAUHAL, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &srcFormat, &outSize);
  2729. if (err1 != noErr) {
  2730. printf("Error calling AudioUnitGetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Output\n");
  2731. printError(err1);
  2732. }
  2733. PrintStreamDesc(&srcFormat);
  2734. srcFormat.mFormatID = kAudioFormatLinearPCM;
  2735. srcFormat.mFormatFlags = kAudioFormatFlagsCanonical | kLinearPCMFormatFlagIsNonInterleaved;
  2736. srcFormat.mBytesPerPacket = sizeof(AudioUnitSampleType);
  2737. srcFormat.mFramesPerPacket = 1;
  2738. srcFormat.mBytesPerFrame = sizeof(AudioUnitSampleType);
  2739. srcFormat.mChannelsPerFrame = fDevNumInChans;
  2740. srcFormat.mBitsPerChannel = 32;
  2741. PrintStreamDesc(&srcFormat);
  2742. err1 = AudioUnitSetProperty(fAUHAL, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &srcFormat, sizeof(AudioStreamBasicDescription));
  2743. if (err1 != noErr) {
  2744. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Output\n");
  2745. printError(err1);
  2746. }
  2747. }
  2748. if (fDevNumOutChans > 0) {
  2749. outSize = sizeof(AudioStreamBasicDescription);
  2750. err1 = AudioUnitGetProperty(fAUHAL, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &dstFormat, &outSize);
  2751. if (err1 != noErr) {
  2752. printf("Error calling AudioUnitGetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Input\n");
  2753. printError(err1);
  2754. }
  2755. PrintStreamDesc(&dstFormat);
  2756. dstFormat.mFormatID = kAudioFormatLinearPCM;
  2757. dstFormat.mFormatFlags = kAudioFormatFlagsCanonical | kLinearPCMFormatFlagIsNonInterleaved;
  2758. dstFormat.mBytesPerPacket = sizeof(AudioUnitSampleType);
  2759. dstFormat.mFramesPerPacket = 1;
  2760. dstFormat.mBytesPerFrame = sizeof(AudioUnitSampleType);
  2761. dstFormat.mChannelsPerFrame = fDevNumOutChans;
  2762. dstFormat.mBitsPerChannel = 32;
  2763. PrintStreamDesc(&dstFormat);
  2764. err1 = AudioUnitSetProperty(fAUHAL, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &dstFormat, sizeof(AudioStreamBasicDescription));
  2765. if (err1 != noErr) {
  2766. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Input\n");
  2767. printError(err1);
  2768. }
  2769. }
  2770. if (fDevNumInChans > 0 && fDevNumOutChans == 0) {
  2771. AURenderCallbackStruct output;
  2772. output.inputProc = Render;
  2773. output.inputProcRefCon = this;
  2774. err1 = AudioUnitSetProperty(fAUHAL, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 0, &output, sizeof(output));
  2775. if (err1 != noErr) {
  2776. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_SetRenderCallback 1\n");
  2777. printError(err1);
  2778. goto error;
  2779. }
  2780. } else {
  2781. AURenderCallbackStruct output;
  2782. output.inputProc = Render;
  2783. output.inputProcRefCon = this;
  2784. err1 = AudioUnitSetProperty(fAUHAL, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &output, sizeof(output));
  2785. if (err1 != noErr) {
  2786. printf("Error calling AudioUnitSetProperty - kAudioUnitProperty_SetRenderCallback 0\n");
  2787. printError(err1);
  2788. goto error;
  2789. }
  2790. }
  2791. return NO_ERR;
  2792. error:
  2793. AudioUnitUninitialize(fAUHAL);
  2794. AudioComponentInstanceDispose(fAUHAL);
  2795. return OPEN_ERR;
  2796. }
  2797. long TiPhoneCoreAudioRenderer::Close()
  2798. {
  2799. AudioUnitUninitialize(fAUHAL);
  2800. AudioComponentInstanceDispose(fAUHAL);
  2801. return NO_ERR;
  2802. }
  2803. long TiPhoneCoreAudioRenderer::Start()
  2804. {
  2805. AudioSessionSetActive(true);
  2806. OSStatus err = AudioOutputUnitStart(fAUHAL);
  2807. if (err != noErr) {
  2808. printf("Error while opening device : device open error \n");
  2809. return OPEN_ERR;
  2810. } else {
  2811. return NO_ERR;
  2812. }
  2813. }
  2814. long TiPhoneCoreAudioRenderer::Stop()
  2815. {
  2816. OSStatus err = AudioOutputUnitStop(fAUHAL);
  2817. if (err != noErr) {
  2818. printf("Error while closing device : device close error \n");
  2819. return OPEN_ERR;
  2820. } else {
  2821. return NO_ERR;
  2822. }
  2823. }
  2824. /******************************************************************************
  2825. *******************************************************************************
  2826. MAIN PLAY THREAD
  2827. *******************************************************************************
  2828. *******************************************************************************/
  2829. long lopt(char *argv[], const char *name, long def)
  2830. {
  2831. int i;
  2832. for (i = 0; argv[i]; i++) if (!strcmp(argv[i], name)) return atoi(argv[i + 1]);
  2833. return def;
  2834. }
  2835. //-------------------------------------------------------------------------
  2836. // MAIN
  2837. //-------------------------------------------------------------------------
  2838. int main(int argc, char *argv[])
  2839. {
  2840. UI* interface = new CMDUI(argc, argv);
  2841. TiPhoneCoreAudioRenderer audio_device(DSP.getNumInputs(), DSP.getNumOutputs());
  2842. long srate = (long)lopt(argv, "--frequency", 44100);
  2843. int fpb = lopt(argv, "--buffer", 512);
  2844. DSP.init(long(srate));
  2845. DSP.buildUserInterface(interface);
  2846. if (audio_device.Open(fpb, srate) < 0) {
  2847. printf("Cannot open CoreAudio device\n");
  2848. return 0;
  2849. }
  2850. if (audio_device.Start() < 0) {
  2851. printf("Cannot start CoreAudio device\n");
  2852. return 0;
  2853. }
  2854. printf("inchan = %d, outchan = %d, freq = %ld\n", DSP.getNumInputs(), DSP.getNumOutputs(), srate);
  2855. interface->run();
  2856. audio_device.Stop();
  2857. audio_device.Close();
  2858. return 0;
  2859. }