The program source is organized as a set of definitions with at least the definition of the keyword process (the equivalent of main in C): The FAUST compiler translates FAUST code into a C++ object, which may then interface with other C++ code to produce a full program.
Moreover, having access to the exact semantics of a FAUST program can simplify preservation issues.
FAUST programs define a process function that operates on incoming data.
The following code multiplies an input signal with 0.5: The above may be rewritten in curried form: The recursive composition operator ~ can be used to create block diagrams with cycles (that include an implicit one-sample delay).
These architecture files act as wrappers and describe the interactions with the host audio and GUI system.
A useful option makes it possible to generate the block diagram representation of the program as one or more SVG graphic files.
As stated, the key idea here is not to compile the block diagram literally, but the mathematical function it denotes.
The Arrow combinators are more restrictive than their FAUST counterparts, e.g., the nesting of parallel composition is preserved, and inputs of the operands of &&& must match exactly.