Grame, Centre National de Creation Musicale, has announced the release of Faust (Functional Audio Stream) 0.9.10, a functional programming language specifically designed for real-time signal processing and synthesis.
This version introduces several new possibilities. It is the first official release to offer full parallelization of the C++ code to exploit multicore architectures, as well as automatic generation of mathematical documentation.
New in Faust v0.9.10
- Several new options have been added to control how the C++ code is generated, in particular:
- control of the floating point precision : single (default), double, quad
- code re-organization in simple loops to facilitate automatic vectorization
- automatic parallelization based on OpenMP
- automatic parallelization based on a specific “Work-Stealing” algorithm
- Using formal methods the Faust compiler can automatically produce a complete mathematical documentation of a Faust program.
- Language Extensions
- Sequential composition operator (A:B) has been restricted to expressions so that outputs(A) = inputs(B). This restriction has several advantages. It improves error detection, makes the code easier to understand and provides nicer and simpler formal semantic ( A:B is B o A)
- User interface labels can now contain metadata. For example the label “volume[unit:dB][tooltip:control the output volume of the reverb]” contains two metadata, a unit definition and a tooltip message than can be exploited by an architecture file to fine tune the user interface.
- User interface labels can contain absolute and relative pathnames to better control the hierarchical structure of the user interface. For example the label “../volume” points to place the widget one group higher in the hierarchy.
- Several new audio architectures have been included, in particular Action Script, CoreAudio, CSOUND, Chuck, Pure, SND-RT, for a total of about 20 different plateforms now supported: Action Script, Alsa, ChucK, CoreAudio, CSOUND, Jack, LADSPA, Matlab, MaxMSP, Octave, OSS, PortAudio, Pure, PureData, Q, Sndfile, Snd-RT, SuperCollider, SynthFile, VST, VSTi (mono)