| 
							- /* link with  */
 - #include <stdlib.h>
 - #include <stdio.h>
 - #include <string.h>
 - #include <limits.h>
 - #include <math.h>
 - #include <errno.h>
 - #include <time.h>
 - #include <vector>
 - #include <stack>
 - #include <string>
 - #include <map>
 - #include <iostream>
 - #include <jack/jack.h>
 - 
 - #include <windows.h>
 - 
 - // g++ -O3 -lm -lsndfile  myfx.cpp
 - 
 - using namespace std;
 - 
 - 
 - #define max(x,y) (((x)>(y)) ? (x) : (y))
 - #define min(x,y) (((x)<(y)) ? (x) : (y))
 - 
 - // abs is now predefined
 - //template<typename T> T abs (T a)			{ return (a<T(0)) ? -a : a; }
 - 
 - 
 - inline int	lsr (int x, int n)
 - {
 -     return int(((unsigned int)x) >> n);
 - }
 - 
 - 
 - /******************************************************************************
 - *******************************************************************************
 -  
 - 							       VECTOR INTRINSICS
 -  
 - *******************************************************************************
 - *******************************************************************************/
 - 
 - inline void *aligned_calloc(size_t nmemb, size_t size)
 - {
 -     return (void*)((unsigned)(calloc((nmemb*size) + 15, sizeof(char))) + 15 & 0xfffffff0);
 - }
 - 
 - /******************************************************************************
 - *******************************************************************************
 -  
 - 								USER INTERFACE
 -  
 - *******************************************************************************
 - *******************************************************************************/
 - 
 - class UI
 - {
 -         bool	fStopped;
 -     public:
 - 
 -         UI() : fStopped(false)
 -         {}
 -         virtual ~UI()
 -         {}
 - 
 -         // -- active widgets
 - 
 -         virtual void addButton(char* label, float* zone) = 0;
 -         virtual void addToggleButton(char* label, float* zone) = 0;
 -         virtual void addCheckButton(char* label, float* zone) = 0;
 -         virtual void addVerticalSlider(char* label, float* zone, float init, float min, float max, float step) = 0;
 -         virtual void addHorizontalSlider(char* label, float* zone, float init, float min, float max, float step) = 0;
 -         virtual void addNumEntry(char* label, float* zone, float init, float min, float max, float step) = 0;
 - 
 -         // -- passive widgets
 - 
 -         virtual void addNumDisplay(char* label, float* zone, int precision) = 0;
 -         virtual void addTextDisplay(char* label, float* zone, char* names[], float min, float max) = 0;
 -         virtual void addHorizontalBargraph(char* label, float* zone, float min, float max) = 0;
 -         virtual void addVerticalBargraph(char* label, float* zone, float min, float max) = 0;
 - 
 -         // -- frames and labels
 - 
 -         virtual void openFrameBox(char* label) = 0;
 -         virtual void openTabBox(char* label) = 0;
 -         virtual void openHorizontalBox(char* label) = 0;
 -         virtual void openVerticalBox(char* label) = 0;
 -         virtual void closeBox() = 0;
 - 
 -         virtual void show() = 0;
 -         virtual void run() = 0;
 - 
 -         void stop()
 -         {
 -             fStopped = true;
 -         }
 -         bool stopped()
 -         {
 -             return fStopped;
 -         }
 - };
 - 
 - struct param
 - {
 -     float* fZone;
 -     float fMin;
 -     float fMax;
 -     param(float* z, float a, float b) : fZone(z), fMin(a), fMax(b)
 -     {}
 - };
 - 
 - class CMDUI : public UI
 - {
 -         int	fArgc;
 -         char**	fArgv;
 -         stack<string>	fPrefix;
 -         map<string, param>	fKeyParam;
 - 
 -         void addOption(char* label, float* zone, float min, float max)
 -         {
 -             string fullname = fPrefix.top() + label;
 -             fKeyParam.insert(make_pair(fullname, param(zone, min, max)));
 -         }
 - 
 -         void openAnyBox(char* label)
 -         {
 -             string prefix;
 - 
 -             if (label && label[0]) {
 -                 prefix = fPrefix.top() + "-" + label;
 -             } else {
 -                 prefix = fPrefix.top();
 -             }
 -             fPrefix.push(prefix);
 -         }
 - 
 - 
 -     public:
 - 
 -         CMDUI(int argc, char *argv[]) : UI(), fArgc(argc), fArgv(argv)
 -         {
 -             fPrefix.push("--");
 -         }
 -         virtual ~CMDUI()
 -         {}
 - 
 -         virtual void addButton(char* label, float* zone)
 -         {}
 -         ;
 -         virtual void addToggleButton(char* label, float* zone)
 -         {}
 -         ;
 -         virtual void addCheckButton(char* label, float* zone)
 -         {}
 -         ;
 - 
 -         virtual void addVerticalSlider(char* label, float* zone, float init, float min, float max, float step)
 -         {
 -             addOption(label, zone, min, max);
 -         }
 - 
 -         virtual void addHorizontalSlider(char* label, float* zone, float init, float min, float max, float step)
 -         {
 -             addOption(label, zone, min, max);
 -         }
 - 
 -         virtual void addNumEntry(char* label, float* zone, float init, float min, float max, float step)
 -         {
 -             addOption(label, zone, min, max);
 -         }
 - 
 -         // -- passive widgets
 - 
 -         virtual void addNumDisplay(char* label, float* zone, int precision)
 -         {}
 -         virtual void addTextDisplay(char* label, float* zone, char* names[], float min, float max)
 -         {}
 -         virtual void addHorizontalBargraph(char* label, float* zone, float min, float max)
 -         {}
 -         virtual void addVerticalBargraph(char* label, float* zone, float min, float max)
 -         {}
 - 
 -         virtual void openFrameBox(char* label)
 -         {
 -             openAnyBox(label);
 -         }
 -         virtual void openTabBox(char* label)
 -         {
 -             openAnyBox(label);
 -         }
 -         virtual void openHorizontalBox(char* label)
 -         {
 -             openAnyBox(label);
 -         }
 -         virtual void openVerticalBox(char* label)
 -         {
 -             openAnyBox(label);
 -         }
 - 
 -         virtual void closeBox()
 -         {
 -             fPrefix.pop();
 -         }
 - 
 -         virtual void show()
 -         {}
 -         virtual void run()
 -         {
 -             char c;
 -             printf("Type 'q' to quit\n");
 -             while ((c = getchar()) != 'q') {
 -                 //sleep(1);
 -                 Sleep(1000);
 -             }
 -         }
 - 
 -         void print()
 -         {
 -             map<string, param>::iterator i;
 -             cout << fArgc << "\n";
 -             cout << fArgv[0] << " option list : ";
 -             for (i = fKeyParam.begin(); i != fKeyParam.end(); i++) {
 -                 cout << "[ " << i->first << " " << i->second.fMin << ".." << i->second.fMax << " ] ";
 -             }
 -             //cout << " infile outfile\n";
 -         }
 - 
 -         void process_command()
 -         {
 -             map<string, param>::iterator p;
 -             for (int i = 1; i < fArgc; i++) {
 -                 if (fArgv[i][0] == '-') {
 -                     p = fKeyParam.find(fArgv[i]);
 -                     if (p == fKeyParam.end()) {
 -                         cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
 -                         print();
 -                         exit(1);
 -                     }
 -                     char*	end;
 -                     *(p->second.fZone) = float(strtod(fArgv[i + 1], &end));
 -                     i++;
 -                 }
 -             }
 -         }
 - 
 -         void process_init()
 -         {
 -             map<string, param>::iterator p;
 -             for (int i = 1; i < fArgc; i++) {
 -                 if (fArgv[i][0] == '-') {
 -                     p = fKeyParam.find(fArgv[i]);
 -                     if (p == fKeyParam.end()) {
 -                         cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
 -                         exit(1);
 -                     }
 -                     char*	end;
 -                     *(p->second.fZone) = float(strtod(fArgv[i + 1], &end));
 -                     i++;
 -                 }
 -             }
 -         }
 - };
 - 
 - //----------------------------------------------------------------
 - //  d�inition du processeur de signal
 - //----------------------------------------------------------------
 - 
 - class dsp
 - {
 -     protected:
 -         int fSamplingFreq;
 -     public:
 -         dsp()
 -         {}
 -         virtual ~dsp()
 -         {}
 - 
 -         virtual int getNumInputs() = 0;
 -         virtual int getNumOutputs() = 0;
 -         virtual void buildUserInterface(UI* interface) = 0;
 -         virtual void init(int samplingRate) = 0;
 -         virtual void compute(int len, float** inputs, float** outputs) = 0;
 -         virtual void conclude()
 -         {}
 - };
 - 
 - 
 - //----------------------------------------------------------------------------
 - // 	FAUST generated code
 - //----------------------------------------------------------------------------
 - 
 - class mydsp : public dsp
 - {
 -     private:
 -         float fslider0;
 -         float R0_0;
 -         int iota0;
 -         float dline0[225];
 -         float R1_0;
 -         int iota1;
 -         float dline1[341];
 -         float R2_0;
 -         int iota2;
 -         float dline2[441];
 -         float R3_0;
 -         int iota3;
 -         float dline3[556];
 -         float R4_0;
 -         int iota4;
 -         float dline4[1617];
 -         float fslider1;
 -         float R5_0;
 -         float fslider2;
 -         float R6_0;
 -         int iota5;
 -         float dline5[1557];
 -         float R7_0;
 -         float R8_0;
 -         int iota6;
 -         float dline6[1491];
 -         float R9_0;
 -         float R10_0;
 -         int iota7;
 -         float dline7[1422];
 -         float R11_0;
 -         float R12_0;
 -         int iota8;
 -         float dline8[1277];
 -         float R13_0;
 -         float R14_0;
 -         int iota9;
 -         float dline9[1116];
 -         float R15_0;
 -         float R16_0;
 -         int iota10;
 -         float dline10[1188];
 -         float R17_0;
 -         float R18_0;
 -         int iota11;
 -         float dline11[1356];
 -         float R19_0;
 -         float R3_1;
 -         float R2_1;
 -         float R1_1;
 -         float R0_1;
 -         float R20_0;
 -         int iota12;
 -         float dline12[248];
 -         float R21_0;
 -         int iota13;
 -         float dline13[364];
 -         float R22_0;
 -         int iota14;
 -         float dline14[464];
 -         float R23_0;
 -         int iota15;
 -         float dline15[579];
 -         float R24_0;
 -         int iota16;
 -         float dline16[1640];
 -         float R25_0;
 -         float R26_0;
 -         int iota17;
 -         float dline17[1580];
 -         float R27_0;
 -         float R28_0;
 -         int iota18;
 -         float dline18[1514];
 -         float R29_0;
 -         float R30_0;
 -         int iota19;
 -         float dline19[1445];
 -         float R31_0;
 -         float R32_0;
 -         int iota20;
 -         float dline20[1300];
 -         float R33_0;
 -         float R34_0;
 -         int iota21;
 -         float dline21[1139];
 -         float R35_0;
 -         float R36_0;
 -         int iota22;
 -         float dline22[1211];
 -         float R37_0;
 -         float R38_0;
 -         int iota23;
 -         float dline23[1379];
 -         float R39_0;
 -         float R23_1;
 -         float R22_1;
 -         float R21_1;
 -         float R20_1;
 -     public:
 -         virtual int getNumInputs()
 -         {
 -             return 2;
 -         }
 -         virtual int getNumOutputs()
 -         {
 -             return 2;
 -         }
 -         virtual void init(int samplingFreq)
 -         {
 -             int i;
 -             fSamplingFreq = samplingFreq;
 -             fslider0 = 0.333300f;
 -             R0_0 = 0.0;
 -             iota0 = 0;
 -             for (i = 0; i < 225; i++)
 -                 dline0[i] = 0.0;
 -             R1_0 = 0.0;
 -             iota1 = 0;
 -             for (i = 0; i < 341; i++)
 -                 dline1[i] = 0.0;
 -             R2_0 = 0.0;
 -             iota2 = 0;
 -             for (i = 0; i < 441; i++)
 -                 dline2[i] = 0.0;
 -             R3_0 = 0.0;
 -             iota3 = 0;
 -             for (i = 0; i < 556; i++)
 -                 dline3[i] = 0.0;
 -             R4_0 = 0.0;
 -             iota4 = 0;
 -             for (i = 0; i < 1617; i++)
 -                 dline4[i] = 0.0;
 -             fslider1 = 0.9500000f;
 -             R5_0 = 0.0;
 -             fslider2 = 0.9500000f;
 -             R6_0 = 0.0;
 -             iota5 = 0;
 -             for (i = 0; i < 1557; i++)
 -                 dline5[i] = 0.0;
 -             R7_0 = 0.0;
 -             R8_0 = 0.0;
 -             iota6 = 0;
 -             for (i = 0; i < 1491; i++)
 -                 dline6[i] = 0.0;
 -             R9_0 = 0.0;
 -             R10_0 = 0.0;
 -             iota7 = 0;
 -             for (i = 0; i < 1422; i++)
 -                 dline7[i] = 0.0;
 -             R11_0 = 0.0;
 -             R12_0 = 0.0;
 -             iota8 = 0;
 -             for (i = 0; i < 1277; i++)
 -                 dline8[i] = 0.0;
 -             R13_0 = 0.0;
 -             R14_0 = 0.0;
 -             iota9 = 0;
 -             for (i = 0; i < 1116; i++)
 -                 dline9[i] = 0.0;
 -             R15_0 = 0.0;
 -             R16_0 = 0.0;
 -             iota10 = 0;
 -             for (i = 0; i < 1188; i++)
 -                 dline10[i] = 0.0;
 -             R17_0 = 0.0;
 -             R18_0 = 0.0;
 -             iota11 = 0;
 -             for (i = 0; i < 1356; i++)
 -                 dline11[i] = 0.0;
 -             R19_0 = 0.0;
 -             R3_1 = 0.0;
 -             R2_1 = 0.0;
 -             R1_1 = 0.0;
 -             R0_1 = 0.0;
 -             R20_0 = 0.0;
 -             iota12 = 0;
 -             for (i = 0; i < 248; i++)
 -                 dline12[i] = 0.0;
 -             R21_0 = 0.0;
 -             iota13 = 0;
 -             for (i = 0; i < 364; i++)
 -                 dline13[i] = 0.0;
 -             R22_0 = 0.0;
 -             iota14 = 0;
 -             for (i = 0; i < 464; i++)
 -                 dline14[i] = 0.0;
 -             R23_0 = 0.0;
 -             iota15 = 0;
 -             for (i = 0; i < 579; i++)
 -                 dline15[i] = 0.0;
 -             R24_0 = 0.0;
 -             iota16 = 0;
 -             for (i = 0; i < 1640; i++)
 -                 dline16[i] = 0.0;
 -             R25_0 = 0.0;
 -             R26_0 = 0.0;
 -             iota17 = 0;
 -             for (i = 0; i < 1580; i++)
 -                 dline17[i] = 0.0;
 -             R27_0 = 0.0;
 -             R28_0 = 0.0;
 -             iota18 = 0;
 -             for (i = 0; i < 1514; i++)
 -                 dline18[i] = 0.0;
 -             R29_0 = 0.0;
 -             R30_0 = 0.0;
 -             iota19 = 0;
 -             for (i = 0; i < 1445; i++)
 -                 dline19[i] = 0.0;
 -             R31_0 = 0.0;
 -             R32_0 = 0.0;
 -             iota20 = 0;
 -             for (i = 0; i < 1300; i++)
 -                 dline20[i] = 0.0;
 -             R33_0 = 0.0;
 -             R34_0 = 0.0;
 -             iota21 = 0;
 -             for (i = 0; i < 1139; i++)
 -                 dline21[i] = 0.0;
 -             R35_0 = 0.0;
 -             R36_0 = 0.0;
 -             iota22 = 0;
 -             for (i = 0; i < 1211; i++)
 -                 dline22[i] = 0.0;
 -             R37_0 = 0.0;
 -             R38_0 = 0.0;
 -             iota23 = 0;
 -             for (i = 0; i < 1379; i++)
 -                 dline23[i] = 0.0;
 -             R39_0 = 0.0;
 -             R23_1 = 0.0;
 -             R22_1 = 0.0;
 -             R21_1 = 0.0;
 -             R20_1 = 0.0;
 -         }
 - 
 -         virtual void buildUserInterface(UI* inter)
 -         {
 -             inter->openVerticalBox("Freeverb");
 -             inter->addHorizontalSlider("Damp", &fslider2, 0.500000f, 0.000000f, 1.000000f, 2.500000e-02f);
 -             inter->addHorizontalSlider("RoomSize", &fslider1, 0.500000f, 0.000000f, 1.000000f, 2.500000e-02f);
 -             inter->addHorizontalSlider("Wet", &fslider0, 0.333300f, 0.000000f, 1.000000f, 2.500000e-02f);
 -             inter->closeBox();
 -         }
 -         virtual void compute (int count, float** input, float** output)
 -         {
 -             float* input0;
 -             input0 = input[0];
 -             float* input1;
 -             input1 = input[1];
 -             float* output0;
 -             output0 = output[0];
 -             float* output1;
 -             output1 = output[1];
 -             float ftemp0 = fslider0;
 -             float ftemp1 = (1 - ftemp0);
 -             float ftemp5 = (0.700000f + (0.280000f * fslider1));
 -             float ftemp6 = (0.400000f * fslider2);
 -             float ftemp7 = (1 - ftemp6);
 -             for (int i = 0; i < count; i++) {
 -                 float ftemp2 = input0[i];
 -                 if (++iota0 == 225)
 -                     iota0 = 0;
 -                 float T0 = dline0[iota0];
 -                 if (++iota1 == 341)
 -                     iota1 = 0;
 -                 float T1 = dline1[iota1];
 -                 if (++iota2 == 441)
 -                     iota2 = 0;
 -                 float T2 = dline2[iota2];
 -                 if (++iota3 == 556)
 -                     iota3 = 0;
 -                 float T3 = dline3[iota3];
 -                 if (++iota4 == 1617)
 -                     iota4 = 0;
 -                 float T4 = dline4[iota4];
 -                 float ftemp3 = input1[i];
 -                 float ftemp4 = (1.500000e-02f * (ftemp2 + ftemp3));
 -                 R5_0 = ((ftemp7 * R4_0) + (ftemp6 * R5_0));
 -                 dline4[iota4] = (ftemp4 + (ftemp5 * R5_0));
 -                 R4_0 = T4;
 -                 if (++iota5 == 1557)
 -                     iota5 = 0;
 -                 float T5 = dline5[iota5];
 -                 R7_0 = ((ftemp7 * R6_0) + (ftemp6 * R7_0));
 -                 dline5[iota5] = (ftemp4 + (ftemp5 * R7_0));
 -                 R6_0 = T5;
 -                 if (++iota6 == 1491)
 -                     iota6 = 0;
 -                 float T6 = dline6[iota6];
 -                 R9_0 = ((ftemp7 * R8_0) + (ftemp6 * R9_0));
 -                 dline6[iota6] = (ftemp4 + (ftemp5 * R9_0));
 -                 R8_0 = T6;
 -                 if (++iota7 == 1422)
 -                     iota7 = 0;
 -                 float T7 = dline7[iota7];
 -                 R11_0 = ((ftemp7 * R10_0) + (ftemp6 * R11_0));
 -                 dline7[iota7] = (ftemp4 + (ftemp5 * R11_0));
 -                 R10_0 = T7;
 -                 if (++iota8 == 1277)
 -                     iota8 = 0;
 -                 float T8 = dline8[iota8];
 -                 R13_0 = ((ftemp7 * R12_0) + (ftemp6 * R13_0));
 -                 dline8[iota8] = (ftemp4 + (ftemp5 * R13_0));
 -                 R12_0 = T8;
 -                 if (++iota9 == 1116)
 -                     iota9 = 0;
 -                 float T9 = dline9[iota9];
 -                 R15_0 = ((ftemp7 * R14_0) + (ftemp6 * R15_0));
 -                 dline9[iota9] = (ftemp4 + (ftemp5 * R15_0));
 -                 R14_0 = T9;
 -                 if (++iota10 == 1188)
 -                     iota10 = 0;
 -                 float T10 = dline10[iota10];
 -                 R17_0 = ((ftemp7 * R16_0) + (ftemp6 * R17_0));
 -                 dline10[iota10] = (ftemp4 + (ftemp5 * R17_0));
 -                 R16_0 = T10;
 -                 if (++iota11 == 1356)
 -                     iota11 = 0;
 -                 float T11 = dline11[iota11];
 -                 R19_0 = ((ftemp7 * R18_0) + (ftemp6 * R19_0));
 -                 dline11[iota11] = (ftemp4 + (ftemp5 * R19_0));
 -                 R18_0 = T11;
 -                 float ftemp8 = (R16_0 + R18_0);
 -                 dline3[iota3] = ((((0.500000f * R3_0) + R4_0) + (R6_0 + R8_0)) + ((R10_0 + R12_0) + (R14_0 + ftemp8)));
 -                 float R3temp0 = T3;
 -                 float R3temp1 = (R3_0 - (((R4_0 + R6_0) + (R8_0 + R10_0)) + ((R12_0 + R14_0) + ftemp8)));
 -                 R3_0 = R3temp0;
 -                 R3_1 = R3temp1;
 -                 dline2[iota2] = ((0.500000f * R2_0) + R3_1);
 -                 float R2temp0 = T2;
 -                 float R2temp1 = (R2_0 - R3_1);
 -                 R2_0 = R2temp0;
 -                 R2_1 = R2temp1;
 -                 dline1[iota1] = ((0.500000f * R1_0) + R2_1);
 -                 float R1temp0 = T1;
 -                 float R1temp1 = (R1_0 - R2_1);
 -                 R1_0 = R1temp0;
 -                 R1_1 = R1temp1;
 -                 dline0[iota0] = ((0.500000f * R0_0) + R1_1);
 -                 float R0temp0 = T0;
 -                 float R0temp1 = (R0_0 - R1_1);
 -                 R0_0 = R0temp0;
 -                 R0_1 = R0temp1;
 -                 output0[i] = ((ftemp1 * ftemp2) + (ftemp0 * R0_1));
 -                 if (++iota12 == 248)
 -                     iota12 = 0;
 -                 float T12 = dline12[iota12];
 -                 if (++iota13 == 364)
 -                     iota13 = 0;
 -                 float T13 = dline13[iota13];
 -                 if (++iota14 == 464)
 -                     iota14 = 0;
 -                 float T14 = dline14[iota14];
 -                 if (++iota15 == 579)
 -                     iota15 = 0;
 -                 float T15 = dline15[iota15];
 -                 if (++iota16 == 1640)
 -                     iota16 = 0;
 -                 float T16 = dline16[iota16];
 -                 R25_0 = ((ftemp7 * R24_0) + (ftemp6 * R25_0));
 -                 dline16[iota16] = (ftemp4 + (ftemp5 * R25_0));
 -                 R24_0 = T16;
 -                 if (++iota17 == 1580)
 -                     iota17 = 0;
 -                 float T17 = dline17[iota17];
 -                 R27_0 = ((ftemp7 * R26_0) + (ftemp6 * R27_0));
 -                 dline17[iota17] = (ftemp4 + (ftemp5 * R27_0));
 -                 R26_0 = T17;
 -                 if (++iota18 == 1514)
 -                     iota18 = 0;
 -                 float T18 = dline18[iota18];
 -                 R29_0 = ((ftemp7 * R28_0) + (ftemp6 * R29_0));
 -                 dline18[iota18] = (ftemp4 + (ftemp5 * R29_0));
 -                 R28_0 = T18;
 -                 if (++iota19 == 1445)
 -                     iota19 = 0;
 -                 float T19 = dline19[iota19];
 -                 R31_0 = ((ftemp7 * R30_0) + (ftemp6 * R31_0));
 -                 dline19[iota19] = (ftemp4 + (ftemp5 * R31_0));
 -                 R30_0 = T19;
 -                 if (++iota20 == 1300)
 -                     iota20 = 0;
 -                 float T20 = dline20[iota20];
 -                 R33_0 = ((ftemp7 * R32_0) + (ftemp6 * R33_0));
 -                 dline20[iota20] = (ftemp4 + (ftemp5 * R33_0));
 -                 R32_0 = T20;
 -                 if (++iota21 == 1139)
 -                     iota21 = 0;
 -                 float T21 = dline21[iota21];
 -                 R35_0 = ((ftemp7 * R34_0) + (ftemp6 * R35_0));
 -                 dline21[iota21] = (ftemp4 + (ftemp5 * R35_0));
 -                 R34_0 = T21;
 -                 if (++iota22 == 1211)
 -                     iota22 = 0;
 -                 float T22 = dline22[iota22];
 -                 R37_0 = ((ftemp7 * R36_0) + (ftemp6 * R37_0));
 -                 dline22[iota22] = (ftemp4 + (ftemp5 * R37_0));
 -                 R36_0 = T22;
 -                 if (++iota23 == 1379)
 -                     iota23 = 0;
 -                 float T23 = dline23[iota23];
 -                 R39_0 = ((ftemp7 * R38_0) + (ftemp6 * R39_0));
 -                 dline23[iota23] = (ftemp4 + (ftemp5 * R39_0));
 -                 R38_0 = T23;
 -                 float ftemp9 = (R36_0 + R38_0);
 -                 dline15[iota15] = ((((0.500000f * R23_0) + R24_0) + (R26_0 + R28_0)) + ((R30_0 + R32_0) + (R34_0 + ftemp9)));
 -                 float R23temp0 = T15;
 -                 float R23temp1 = (R23_0 - (((R24_0 + R26_0) + (R28_0 + R30_0)) + ((R32_0 + R34_0) + ftemp9)));
 -                 R23_0 = R23temp0;
 -                 R23_1 = R23temp1;
 -                 dline14[iota14] = ((0.500000f * R22_0) + R23_1);
 -                 float R22temp0 = T14;
 -                 float R22temp1 = (R22_0 - R23_1);
 -                 R22_0 = R22temp0;
 -                 R22_1 = R22temp1;
 -                 dline13[iota13] = ((0.500000f * R21_0) + R22_1);
 -                 float R21temp0 = T13;
 -                 float R21temp1 = (R21_0 - R22_1);
 -                 R21_0 = R21temp0;
 -                 R21_1 = R21temp1;
 -                 dline12[iota12] = ((0.500000f * R20_0) + R21_1);
 -                 float R20temp0 = T12;
 -                 float R20temp1 = (R20_0 - R21_1);
 -                 R20_0 = R20temp0;
 -                 R20_1 = R20temp1;
 -                 output1[i] = ((ftemp1 * ftemp3) + (ftemp0 * R20_1));
 -             }
 -         }
 - };
 - 
 - mydsp	DSP;
 - 
 - 
 - /******************************************************************************
 - *******************************************************************************
 -  
 - 							JACK AUDIO INTERFACE
 -  
 - *******************************************************************************
 - *******************************************************************************/
 - 
 - 
 - //----------------------------------------------------------------------------
 - // 	number of input and output channels
 - //----------------------------------------------------------------------------
 - 
 - int	gNumInChans;
 - int	gNumOutChans;
 - 
 - 
 - //----------------------------------------------------------------------------
 - // Jack ports
 - //----------------------------------------------------------------------------
 - 
 - jack_port_t *input_ports[256];
 - jack_port_t *output_ports[256];
 - 
 - //----------------------------------------------------------------------------
 - // tables of noninterleaved input and output channels for FAUST
 - //----------------------------------------------------------------------------
 - 
 - float* gInChannel[256];
 - float* gOutChannel[256];
 - 
 - //----------------------------------------------------------------------------
 - // Jack Callbacks
 - //----------------------------------------------------------------------------
 - 
 - int srate(jack_nframes_t nframes, void *arg)
 - {
 -     printf("the sample rate is now %u/sec\n", nframes);
 -     return 0;
 - }
 - 
 - void jack_shutdown(void *arg)
 - {
 -     exit(1);
 - }
 - 
 - int process (jack_nframes_t nframes, void *arg)
 - {
 -     int i;
 -     for (i = 0; i < gNumInChans; i++) {
 -         gInChannel[i] = (float *)jack_port_get_buffer(input_ports[i], nframes);
 -     }
 -     for (i = 0; i < gNumOutChans; i++) {
 -         gOutChannel[i] = (float *)jack_port_get_buffer(output_ports[i], nframes);
 -     }
 -     DSP.compute(nframes, gInChannel, gOutChannel);
 -     return 0;
 - }
 - 
 - //-------------------------------------------------------------------------
 - // 									MAIN
 - //-------------------------------------------------------------------------
 - 
 - int main(int argc, char *argv[] )
 - {
 -     char jackname[256];
 -     char**	physicalInPorts;
 -     char**	physicalOutPorts;
 -     jack_client_t*	client;
 -     int i;
 - 
 -     CMDUI* inter = new CMDUI(argc, argv);
 -     DSP.buildUserInterface(inter);
 - 
 -     //_snprintf(jackname, 255, "%s", basename(argv[0]));
 -     _snprintf(jackname, 255, "%s", "freeverb");
 - 
 -     if ((client = jack_client_new(jackname)) == 0) {
 -         fprintf(stderr, "jack server not running?\n");
 -         return 1;
 -     }
 - 
 -     jack_set_process_callback(client, process, 0);
 - 
 -     jack_set_sample_rate_callback(client, srate, 0);
 - 
 -     jack_on_shutdown(client, jack_shutdown, 0);
 - 
 -     gNumInChans = DSP.getNumInputs();
 -     gNumOutChans = DSP.getNumOutputs();
 - 
 -     for (i = 0; i < gNumInChans; i++) {
 -         char buf[256];
 -         _snprintf(buf, 256, "in_%d", i);
 -         input_ports[i] = jack_port_register(client, buf, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
 -     }
 -     for (i = 0; i < gNumOutChans; i++) {
 -         char buf[256];
 -         _snprintf(buf, 256, "out_%d", i);
 -         output_ports[i] = jack_port_register(client, buf, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
 -     }
 - 
 -     DSP.init(jack_get_sample_rate(client));
 -     DSP.buildUserInterface(inter);
 - 
 -     inter->process_command();
 - 
 -     physicalInPorts = (char **)jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsInput);
 -     physicalOutPorts = (char **)jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsOutput);
 - 
 -     if (jack_activate(client)) {
 -         fprintf(stderr, "cannot activate client");
 -         return 1;
 -     }
 - 
 -     /*
 -     if (physicalOutPorts != NULL) {
 -     	for (int i = 0; i < gNumInChans && physicalOutPorts[i]; i++) {
 -     		jack_connect(client, physicalOutPorts[i], jack_port_name(input_ports[i]));
 -     	}
 -     }
 -     */
 - 
 -     if (physicalInPorts != NULL) {
 -         for (int i = 0; i < gNumOutChans && physicalInPorts[i]; i++) {
 -             jack_connect(client, jack_port_name(output_ports[i]), physicalInPorts[i]);
 -         }
 -     }
 - 
 -     /*
 -     jack_connect(client, "AudioPlayer:out1", jack_port_name(input_ports[0]));
 -     jack_connect(client, "AudioPlayer:out1", jack_port_name(input_ports[1]));
 - 
 -     jack_connect(client, "AudioPlayer:out2", jack_port_name(input_ports[0]));
 -     jack_connect(client, "AudioPlayer:out2", jack_port_name(input_ports[1]));
 -     */
 - 
 -     jack_connect(client, "JackRouter:out1", jack_port_name(input_ports[0]));
 -     jack_connect(client, "JackRouter:out2", jack_port_name(input_ports[1]));
 - 
 - 
 -     inter->run();
 - 
 -     jack_deactivate(client);
 - 
 -     for (i = 0; i < gNumInChans; i++) {
 -         jack_port_unregister(client, input_ports[i]);
 -     }
 -     for (i = 0; i < gNumOutChans; i++) {
 -         jack_port_unregister(client, output_ports[i]);
 -     }
 - 
 -     jack_client_close(client);
 - 
 -     return 0;
 - }
 
 
  |