1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
#ifndef FAUSTFLOAT
#define FAUSTFLOAT double
#endif
#include "controlTools.h"
//----------------------------------------------------------------------------
//FAUST generated code
//----------------------------------------------------------------------------
<<includeIntrinsic>>
<<includeclass>>
// Wrapping C++ class for the C object
class Cdsp : public dsp {
private:
mydsp* fDSP;
public:
Cdsp()
{
fDSP = newmydsp();
}
virtual ~Cdsp()
{
deletemydsp(fDSP);
}
virtual int getNumInputs() { return getNumInputsmydsp(fDSP); }
virtual int getNumOutputs() { return getNumOutputsmydsp(fDSP); }
virtual void buildUserInterface(UI* ui_interface)
{
UIGlue glue;
buildUIGlue(&glue, ui_interface, true);
buildUserInterfacemydsp(fDSP, &glue);
}
virtual int getSampleRate()
{
return getSampleRatemydsp(fDSP);
}
virtual void init(int sample_rate)
{
initmydsp(fDSP, sample_rate);
}
static void classInit(int sample_rate)
{
classInitmydsp(sample_rate);
}
virtual void instanceInit(int sample_rate)
{
instanceInitmydsp(fDSP, sample_rate);
}
virtual void instanceConstants(int sample_rate)
{
instanceConstantsmydsp(fDSP, sample_rate);
}
virtual void instanceResetUserInterface()
{
instanceResetUserInterfacemydsp(fDSP);
}
virtual void instanceClear()
{
instanceClearmydsp(fDSP);
}
virtual dsp* clone()
{
return new Cdsp();
}
virtual void metadata(Meta* m)
{
MetaGlue glue;
buildMetaGlue(&glue, m);
metadatamydsp(&glue);
}
virtual void control()
{
controlmydsp(fDSP);
}
virtual void compute(int count, FAUSTFLOAT** input, FAUSTFLOAT** output)
{
computemydsp(fDSP, count, input, output);
}
virtual void compute(double /*date_usec*/, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
{
compute(count, inputs, outputs);
}
};
// Wrapping C++ class used with -ec option.
struct ControlDSP : public decorator_dsp {
ControlDSP(dsp* dsp):decorator_dsp(dsp)
{}
// This is mandatory
virtual ControlDSP* clone()
{
return new ControlDSP(fDSP->clone());
}
void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs)
{
fDSP->control();
fDSP->compute(count, inputs, outputs);
}
};
int main(int argc, char* argv[])
{
int linenum = 0;
int nbsamples = 60000;
// print general informations
printHeader(new Cdsp(), nbsamples);
// linenum is incremented in runDSP
runDSP(new ControlDSP(new Cdsp()), argv[0], linenum, nbsamples/4);
runDSP(new ControlDSP(new Cdsp()), argv[0], linenum, nbsamples/4, false, true);
return 0;
}
|