FAUST که مخفف عبارات Functional Audio Stream است، یک زبان برنامهنویسی فانکشنال است که به طور خاص برای پردازش و ترکیب سیگنالهای صوتی در کمترین زمان ممکن طراحی شده است به طوری که این زبان برنامههای پردازش صوت با عملکرد بالا و افزونههای صوتی برای انواع سیستمعاملها و استانداردها را هدف قرار داده است.
یک برنامۀ نوشتهشده با زبان FAUST میتواند به سادگی اسکریپت زیر باشد که به طور کامل یک تولیدکنندۀ نویز را نمایش میدهد:
process = +(12345) ~ *(1103515245) : /(2147483647.0);
اگر بخواهیم یک مثال پیچیدهتر را بررسی میکنیم، میتوانیم برنامهٔ زیر را مد نظر قرار دهیم که یک اِسلایدر برای کنترل میزان نویز در اختیارمان قرار میگیرد:
noise = +(12345) ~ *(1103515245) : /(2147483647.0);
process = noise * hslider("noise volume", 0, 0, 1, 0.01);
البته با استفاده از کامپایلر FAUST میتوان کدهای این زبان را به زبان ++C ترجمه کرد. برای مثال، میتوان کامند زیر را در نظر گرفت:
$ faust noise.dsp
کامند فوق، کدهای زیر را تولید خواهد کرد:
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];
}
}
برای ساخت و توسعهٔ یک برنامهٔ در حال اجرا یا یک پلاگین، میتوانید از یکی از دستورات بسیار زیاد اسکریپت faust2 استفاده نمائید. برای مثال داریم:
$ faust2jaqt noise.dsp
دستور بالا یک برنامۀ مستقل آمادۀ اجرا بر پایه Jack و QT تولید خواهد کرد (با استفاده از این لینک، میتوانید یک برنامۀ تحت وب از تولیدکنندهٔ نویز را امتحان کنید.)