About
FAUST (Functional Audio Stream) is a functional programming language specifically designed for real-time signal processing and synthesis. FAUST targets high-performance signal processing applications and audio plug-ins for a variety of platforms and standards.
A Faust program can be as simple as:
process = +(12345) ~ *(1103515245) : /(2147483647.0);
The above code fully describes a simple white noise generator. Here is a more sophisticated example with a slider to control the amount of noise:
noise = +(12345) ~ *(1103515245) : /(2147483647.0);
process = noise * hslider("noise volume", 0, 0, 1, 0.01);
The Faust compiler translates Faust code into C++. For example the command:
faust noise.dsp
will produce the following code:
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) {
FAUSTFLOAT* output0 = outputs[0];
float fSlow0 = (4.65661e-10f * float(fHslider0));
for (int i = 0; (i < count); i = (i + 1)) {
iRec0[0] = (12345 + (1103515245 * iRec0[1]));
output0[i] = FAUSTFLOAT((fSlow0 * float(iRec0[0])));
iRec0[1] = iRec0[0];
}
}
In order to produce a running application or a plug-in, one can use one of the many faust2xxx scripts. For example:
faust2jaqt noise.dsp
will produce a ready-to-run standalone application based on Jack and QT. Here below you can try a web version of the noise generator:
