.\" Automatically generated by Pandoc 3.1.11 .\" .TH "man" "1" "" "Version 2.70.3 (04\-January\-2024)" "Faust man page" .SH NAME Faust \- DSP to C/C++, CMajor, Codebox, CSharp, DLang, Interpreter, Java, LLVM IR, Julia, JSFX, Rust and WebAssembly (wast/wasm) .SH SYNOPSIS \f[B]faust\f[R] [options] file1 [file2 \&...] .SH DESCRIPTION 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. .SH OPTIONS .SS Input options: \f[B]\-a\f[R] wrapper architecture file. .PP \f[B]\-i\f[R] \f[B]\[en]inline\-architecture\-files\f[R] inline architecture files. .PP \f[B]\-A\f[R] \f[B]\[en]architecture\-dir\f[R] add the directory to the architecture search path. .PP \f[B]\-I\f[R] \f[B]\[en]import\-dir\f[R] add the directory to the libraries search path. .PP \f[B]\-L\f[R] \f[B]\[en]library\f[R] link with the LLVM module . .SS Output options: \f[B]\-o\f[R] the output file. .PP \f[B]\-e\f[R] \f[B]\[en]export\-dsp\f[R] export expanded DSP (with all included libraries). .PP \f[B]\-uim\f[R] \f[B]\[en]user\-interface\-macros\f[R] add user interface macro definitions to the output code. .PP \f[B]\-xml\f[R] generate an XML description file. .PP \f[B]\-json\f[R] generate a JSON description file. .PP \f[B]\-O\f[R] \f[B]\[en]output\-dir\f[R] specify the relative directory of the generated output code and of additional generated files (SVG, XML\&...). .SS Code generation options: \f[B]\-lang\f[R] \f[B]\[en]language\f[R] select output language, `lang' should be c, cpp (default), cmajor, codebox, csharp, dlang, fir, interp, java, jax, jsfx, julia, llvm, ocpp, rust, vhdl or wast/wasm. .PP \f[B]\-single\f[R] \f[B]\[en]single\-precision\-floats\f[R] use single precision floats for internal computations (default). .PP \f[B]\-double\f[R] \f[B]\[en]double\-precision\-floats\f[R] use double precision floats for internal computations. .PP \f[B]\-quad\f[R] \f[B]\[en]quad\-precision\-floats\f[R] use quad precision floats for internal computations. .PP \f[B]\-fx\f[R] \f[B]\[en]fixed\-point\f[R] use fixed\-point for internal computations. .PP \f[B]\-es\f[R] 1|0 \f[B]\[en]enable\-semantics\f[R] 1|0 use enable semantics when 1 (default), and simple multiplication otherwise. .PP \f[B]\-lcc\f[R] \f[B]\[en]local\-causality\-check\f[R] check causality also at local level. .PP \f[B]\-light\f[R] \f[B]\[en]light\-mode\f[R] do not generate the entire DSP API. .PP \f[B]\-clang\f[R] \f[B]\[en]clang\f[R] when compiled with clang/clang++, adds specific #pragma for auto\-vectorization. .PP \f[B]\-nvi\f[R] \f[B]\[en]no\-virtual\f[R] when compiled with the C++ backend, does not add the `virtual' keyword. .PP \f[B]\-fp\f[R] \f[B]\[en]full\-parentheses\f[R] always add parentheses around binops. .PP \f[B]\-cir\f[R] \f[B]\[en]check\-integer\-range\f[R] check float to integer range conversion. .PP \f[B]\-exp10\f[R] \f[B]\[en]generate\-exp10\f[R] pow(10,x) replaced by possibly faster exp10(x). .PP \f[B]\-os\f[R] \f[B]\[en]one\-sample\f[R] generate one sample computation (same as \-os0). .PP \f[B]\-os0\f[R] \f[B]\[en]one\-sample0\f[R] generate one sample computation (0 = separated control). .PP \f[B]\-os1\f[R] \f[B]\[en]one\-sample1\f[R] generate one sample computation (1 = separated control and DSP struct). .PP \f[B]\-os2\f[R] \f[B]\[en]one\-sample2\f[R] generate one sample computation (2 = separated control and DSP struct. Separation in short and long delay lines). .PP \f[B]\-os3\f[R] \f[B]\[en]one\-sample3\f[R] generate one sample computation (3 = like 2 but with external memory pointers kept in the DSP struct). .PP \f[B]\-it\f[R] \f[B]\[en]inline\-table\f[R] inline rdtable/rwtable code in the main class. .PP \f[B]\-cm\f[R] \f[B]\[en]compute\-mix\f[R] mix in outputs buffers. .PP \f[B]\-ct\f[R] \f[B]\[en]check\-table\f[R] check rtable/rwtable index range and generate safe access code [0/1: 1 by default]. .PP \f[B]\-cn\f[R] \f[B]\[en]class\-name\f[R] specify the name of the dsp class to be used instead of mydsp. .PP \f[B]\-scn\f[R] \f[B]\[en]super\-class\-name\f[R] specify the name of the super class to be used instead of dsp. .PP \f[B]\-pn\f[R] \f[B]\[en]process\-name\f[R] specify the name of the dsp entry\-point instead of process. .PP \f[B]\-mcd\f[R] \f[B]\[en]max\-copy\-delay\f[R] use a copy delay up to max delay and a dense delay above (ocpp only) or a ring buffer (defaut 16 samples). .PP \f[B]\-mdd\f[R] \f[B]\[en]max\-dense\-delay\f[R] use a dense delay up to max delay (if enough density) and a ring buffer delay above (ocpp only, default 1024). .PP \f[B]\-mdy\f[R] \f[B]\[en]min\-density\f[R] minimal density (100*number of delays/max delay) to use a dense delays (ocpp only, default 33). .PP \f[B]\-dlt\f[R] \f[B]\[en]delay\-line\-threshold\f[R] use a mask\-based ring buffer delays up to max delay and a select based ring buffers above (default INT_MAX samples). .PP \f[B]\-mem\f[R] \f[B]\[en]memory\-manager\f[R] allocate static in global state using a custom memory manager. .PP \f[B]\-ftz\f[R] \f[B]\[en]flush\-to\-zero\f[R] code added to recursive signals [0:no (default), 1:fabs based, 2:mask based (fastest)]. .PP \f[B]\-rui\f[R] \f[B]\[en]range\-ui\f[R] whether to generate code to constraint vslider/hslider/nentry values in [min..max] range. .PP \f[B]\-fui\f[R] \f[B]\[en]freeze\-ui\f[R] whether to freeze vslider/hslider/nentry to a given value (init value by default). .PP \f[B]\-inj\f[R] \f[B]\[en]inject\f[R] inject source file into architecture file instead of compiling a dsp file. .PP \f[B]\-scal\f[R] \f[B]\[en]scalar\f[R] generate non\-vectorized code (default). .PP \f[B]\-inpl\f[R] \f[B]\[en]in\-place\f[R] generates code working when input and output buffers are the same (scalar mode only). .PP \f[B]\-vec\f[R] \f[B]\[en]vectorize\f[R] generate easier to vectorize code. .PP \f[B]\-vs\f[R] \f[B]\[en]vec\-size\f[R] size of the vector (default 32 samples). .PP \f[B]\-lv\f[R] \f[B]\[en]loop\-variant\f[R] [0:fastest, fixed vector size and a remaining loop (default), 1:simple, variable vector size]. .PP \f[B]\-omp\f[R] \f[B]\[en]openmp\f[R] generate OpenMP pragmas, activates \[en]vectorize option. .PP \f[B]\-pl\f[R] \f[B]\[en]par\-loop\f[R] generate parallel loops in \[en]openmp mode. .PP \f[B]\-sch\f[R] \f[B]\[en]scheduler\f[R] generate tasks and use a Work Stealing scheduler, activates \[en]vectorize option. .PP \f[B]\-ocl\f[R] \f[B]\[en]opencl\f[R] generate tasks with OpenCL (experimental). .PP \f[B]\-cuda\f[R] \f[B]\[en]cuda\f[R] generate tasks with CUDA (experimental). .PP \f[B]\-dfs\f[R] \f[B]\[en]deep\-first\-scheduling\f[R] schedule vector loops in deep first order. .PP \f[B]\-g\f[R] \f[B]\[en]group\-tasks\f[R] group single\-threaded sequential tasks together when \-omp or \-sch is used. .PP \f[B]\-fun\f[R] \f[B]\[en]fun\-tasks\f[R] separate tasks code as separated functions (in \-vec, \-sch, or \-omp mode). .PP \f[B]\-fm\f[R] \f[B]\[en]fast\-math\f[R] use optimized versions of mathematical functions implemented in , use `faust/dsp/fastmath.cpp' when file is `def', assume functions are defined in the architecture file when file is `arch'. .PP \f[B]\-mapp\f[R] \f[B]\[en]math\-approximation\f[R] simpler/faster versions of `floor/ceil/fmod/remainder' functions. .PP \f[B]\-noreprc\f[R] \f[B]\[en]no\-reprc\f[R] (Rust only) Don\[cq]t force dsp struct layout to follow C ABI. .PP \f[B]\-ns\f[R] \f[B]\[en]namespace\f[R] generate C++ or D code in a namespace . .PP \f[B]\-vhdl\f[R]\-trace \f[B]\[en]vhdl\-trace\f[R] activate trace. .PP \f[B]\-vhdl\f[R]\-float \f[B]\[en]vhdl\-float\f[R] uses IEEE\-754 format for samples instead of fixed point. .PP \f[B]\-vhdl\f[R]\-components \f[B]\[en]vhdl\-components\f[R] path to a file describing custom components for the VHDL backend. .PP \f[B]\-fpga\f[R]\-mem \f[B]\[en]fpga\-mem\f[R] FPGA block ram max size, used in \-os2/\-os3 mode. .PP \f[B]\-wi\f[R] \f[B]\[en]widening\-iterations\f[R] number of iterations before widening in signal bounding. .PP \f[B]\-ni\f[R] \f[B]\[en]narrowing\-iterations\f[R] number of iterations before stopping narrowing in signal bounding. .SS Block diagram options: \f[B]\-ps\f[R] \f[B]\[en]postscript\f[R] print block\-diagram to a postscript file. .PP \f[B]\-svg\f[R] \f[B]\[en]svg\f[R] print block\-diagram to a svg file. .PP \f[B]\-sd\f[R] \f[B]\[en]simplify\-diagrams\f[R] try to further simplify diagrams before drawing. .PP \f[B]\-drf\f[R] \f[B]\[en]draw\-route\-frame\f[R] draw route frames instead of simple cables. .PP \f[B]\-f\f[R] \f[B]\[en]fold\f[R] threshold to activate folding mode during block\-diagram generation (default 25 elements). .PP \f[B]\-fc\f[R] \f[B]\[en]fold\-complexity\f[R] complexity threshold to fold an expression in folding mode (default 2). .PP \f[B]\-mns\f[R] \f[B]\[en]max\-name\-size\f[R] threshold during block\-diagram generation (default 40 char). .PP \f[B]\-sn\f[R] \f[B]\[en]simple\-names\f[R] use simple names (without arguments) during block\-diagram generation. .PP \f[B]\-blur\f[R] \f[B]\[en]shadow\-blur\f[R] add a shadow blur to SVG boxes. .PP \f[B]\-sc\f[R] \f[B]\[en]scaled\-svg\f[R] automatic scalable SVG. .SS Math doc options: \f[B]\-mdoc\f[R] \f[B]\[en]mathdoc\f[R] print math documentation of the Faust program in LaTeX format in a \-mdoc folder. .PP \f[B]\-mdlang\f[R] \f[B]\[en]mathdoc\-lang\f[R] if translation file exists ( = en, fr, \&...). .PP \f[B]\-stripmdoc\f[R] \f[B]\[en]strip\-mdoc\-tags\f[R] strip mdoc tags when printing Faust \-mdoc listings. .SS Debug options: \f[B]\-d\f[R] \f[B]\[en]details\f[R] print compilation details. .PP \f[B]\-time\f[R] \f[B]\[en]compilation\-time\f[R] display compilation phases timing information. .PP \f[B]\-flist\f[R] \f[B]\[en]file\-list\f[R] print file list (including libraries) used to eval process. .PP \f[B]\-tg\f[R] \f[B]\[en]task\-graph\f[R] print the internal task graph in dot format. .PP \f[B]\-sg\f[R] \f[B]\[en]signal\-graph\f[R] print the internal signal graph in dot format. .PP \f[B]\-norm\f[R] \f[B]\[en]normalized\-form\f[R] print signals in normalized form and exit. .PP \f[B]\-me\f[R] \f[B]\[en]math\-exceptions\f[R] check / for 0 as denominator and remainder, fmod, sqrt, log10, log, acos, asin functions domain. .PP \f[B]\-sts\f[R] \f[B]\[en]strict\-select\f[R] generate strict code for `selectX' even for stateless branches (both are computed). .PP \f[B]\-wall\f[R] \f[B]\[en]warning\-all\f[R] print all warnings. .PP \f[B]\-t\f[R] \f[B]\[en]timeout\f[R] abort compilation after seconds (default 120). .SS Information options: \f[B]\-h\f[R] \f[B]\[en]help\f[R] print this help message. .PP \f[B]\-v\f[R] \f[B]\[en]version\f[R] print version information and embedded backends list. .PP \f[B]\-libdir\f[R] \f[B]\[en]libdir\f[R] print directory containing the Faust libraries. .PP \f[B]\-includedir\f[R] \f[B]\[en]includedir\f[R] print directory containing the Faust headers. .PP \f[B]\-archdir\f[R] \f[B]\[en]archdir\f[R] print directory containing the Faust architectures. .PP \f[B]\-dspdir\f[R] \f[B]\[en]dspdir\f[R] print directory containing the Faust dsp libraries. .PP \f[B]\-pathslist\f[R] \f[B]\[en]pathslist\f[R] print the architectures and dsp library paths. .SS Example: faust \f[B]\-a\f[R] jack\-gtk.cpp \-o myfx.cpp myfx.dsp .SH SEE ALSO Grame Faust site at: \f[B]\c .UR https://faust.grame.fr .UE \c \f[R] .SH BUGS Please report bugs to: \f[B]\c .UR https://github.com/grame-cncm/faust/issues .UE \c \f[R] .SH AUTHOR Copyright (C) 2002\-2024, GRAME \- Centre National de Creation Musicale. All rights reserved.