logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Faust - DSP to C/C++, CMajor, Codebox, CSharp, DLang, Interpreter, Java, LLVM IR, Julia, JSFX, Rust and

Author

       Copyright (C) 2002-2024, GRAME - Centre National de Creation Musicale.  All rights reserved.

Version 2.77.3 (23-December-2024)                                                                         man(1)

Bugs

       Please report bugs to: https://github.com/grame-cncm/faust/issues

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.

Name

       Faust  -  DSP to C/C++, CMajor, Codebox, CSharp, DLang, Interpreter, Java, LLVM IR, Julia, JSFX, Rust and
       WebAssembly (wast/wasm)

Options

Inputoptions:-a <file> wrapper architecture file.

       -i--inline-architecture-files inline architecture files.

       -A <dir> --architecture-dir <dir> add the directory <dir> to the architecture search path.

       -I <dir> --import-dir <dir> add the directory <dir> to the libraries search path.

       -L <file> --library <file> link with the LLVM module <file>.

   Outputoptions:-o <file> the output file.

       -e--export-dsp export expanded DSP (with all included libraries).

       -uim--user-interface-macros add user interface macro definitions to the output code.

       -rnt--rust-no-faustdsp-trait (Rust only) Don’t generate FaustDsp trait implmentation.

       -xml generate an XML description file.

       -json generate a JSON description file.

       -O <dir> --output-dir <dir> specify the relative directory of the generated output code and of additional
       generated files (SVG, XML...).

   Codegenerationoptions:-lang  <lang>  --language  select  output  language,  `lang' should be c, cpp (default), cmajor, codebox,
       csharp, dlang, fir, interp, java, jax, jsfx, julia, llvm, ocpp, rust, sdf3, vhdl or wast/wasm.

       -single--single-precision-floats use single precision floats for internal computations (default).

       -double--double-precision-floats use double precision floats for internal computations.

       -quad--quad-precision-floats use quad precision floats for internal computations.

       -fx--fixed-point use fixed-point for internal computations.

       -fx-size --fixed-point-size fixed-point number total size in bits  (-1  is  used  to  generate  a  unique
       fixpoint_t type).

       -es  1|0  --enable-semantics  1|0  use  enable  semantics  when  1  (default),  and simple multiplication
       otherwise.

       -lcc--local-causality-check check causality also at local level.

       -light--light-mode do not generate the entire DSP API.

       -clang--clang when compiled with clang/clang++, adds specific #pragma for auto-vectorization.

       -nvi--no-virtual when compiled with the C++ backend, does not add the `virtual' keyword.

       -fp--full-parentheses always add parentheses around binops.

       -cir--check-integer-range check float to integer range conversion.

       -exp10--generate-exp10 pow(10,x) replaced by possibly faster exp10(x).

       -os--one-sample generate one sample computation.

       -ec--external-control separated `control' and `compute' functions.

       -it--inline-table inline rdtable/rwtable code in the main class.

       -cm--compute-mix mix in outputs buffers.

       -ct--check-table check rtable/rwtable index range and generate safe access code [0/1: 1 by default].

       -cn <name> --class-name <name> specify the name of the dsp class to be used instead of mydsp.

       -scn <name> --super-class-name <name> specify the name of the super class to be used instead of dsp.

       -pn <name> --process-name <name> specify the name of the dsp entry-point instead of process.

       -mcd <n> --max-copy-delay <n> use a copy delay up to max delay <n> and a dense delay above (ocpp only) or
       a ring buffer (default 16 samples).

       -mdd <n> --max-dense-delay <n> use a dense delay up to max delay <n>  (if  enough  density)  and  a  ring
       buffer delay above (ocpp only, default 1024).

       -mdy  <n>  --min-density <n> minimal density (100*number of delays/max delay) to use a dense delays (ocpp
       only, default 33).

       -dlt <n> --delay-line-threshold <n> use a mask-based ring buffer delays up to max delay <n> and a  select
       based ring buffers above (default INT_MAX samples).

       -mem--memory-manager allocations done using a custom memory manager.

       -mem1--memory-manager1  allocations done using a custom memory manager, using the iControl/fControl and
       iZone/fZone model.

       -mem2--memory-manager2 use iControl/fControl, iZone/fZone model and no explicit memory manager.

       -mem3--memory-manager3 use iControl/fControl, iZone/fZone model and  no  explicit  memory  manager  with
       access as function parameters.

       -ftz  <n> --flush-to-zero <n> code added to recursive signals [0:no (default), 1:fabs based, 2:mask based
       (fastest)].

       -rui--range-ui whether to generate code to constraint vslider/hslider/nentry values in [min..max] range.

       -fui--freeze-ui whether to freeze vslider/hslider/nentry to a given value (init value by default).

       -inj <f> --inject <f> inject source file <f> into architecture file instead of compiling a dsp file.

       -scal--scalar generate non-vectorized code (default).

       -inpl--in-place generates code working when input and output buffers are the same (scalar mode only).

       -vec--vectorize generate easier to vectorize code.

       -vs <n> --vec-size <n> size of the vector (default 32 samples).

       -lv <n> --loop-variant <n> [0:fastest, fixed vector  size  and  a  remaining  loop  (default),  1:simple,
       variable vector size, 2:fixed, fixed vector size].

       -omp--openmp generate OpenMP pragmas, activates --vectorize option.

       -pl--par-loop generate parallel loops in --openmp mode.

       -sch--scheduler generate tasks and use a Work Stealing scheduler, activates --vectorize option.

       -ocl--opencl generate tasks with OpenCL (experimental).

       -cuda--cuda generate tasks with CUDA (experimental).

       -dfs--deep-first-scheduling schedule vector loops in deep first order.

       -g--group-tasks group single-threaded sequential tasks together when -omp or -sch is used.

       -fun--fun-tasks separate tasks code as separated functions (in -vec, -sch, or -omp mode).

       -fm <file> --fast-math <file> use optimized versions of mathematical functions implemented in <file>, use
       `faust/dsp/fastmath.cpp'  when  file is `def', assume functions are defined in the architecture file when
       file is `arch'.

       -mapp--math-approximation simpler/faster versions of `floor/ceil/fmod/remainder' functions.

       -noreprc--no-reprc (Rust only) Don’t force dsp struct layout to follow C ABI.

       -ns <name> --namespace <name> generate C++ or D code in a namespace <name>.

       -vhdl-trace --vhdl-trace activate trace.

       -vhdl-float --vhdl-float uses IEEE-754 format for samples instead of fixed point.

       -vhdl-components <file> --vhdl-components <file> path to a file describing custom components for the VHDL
       backend.

       -fpga-mem <n> --fpga-mem <n> FPGA block ram max size, used in -mem1/-mem2 mode.

       -wi <n> --widening-iterations <n> number of iterations before widening in signal bounding.

       -ni <n> --narrowing-iterations <n> number of iterations before stopping narrowing in signal bounding.

   Blockdiagramoptions:-ps--postscript print block-diagram to a postscript file.

       -svg--svg print block-diagram to a svg file.

       -sd--simplify-diagrams try to further simplify diagrams before drawing.

       -drf--draw-route-frame draw route frames instead of simple cables.

       -f <n> --fold <n> threshold  to  activate  folding  mode  during  block-diagram  generation  (default  25
       elements).

       -fc <n> --fold-complexity <n> complexity threshold to fold an expression in folding mode (default 2).

       -mns <n> --max-name-size <n> threshold during block-diagram generation (default 40 char).

       -sn--simple-names use simple names (without arguments) during block-diagram generation.

       -blur--shadow-blur add a shadow blur to SVG boxes.

       -sc--scaled-svg automatic scalable SVG.

   Mathdocoptions:-mdoc--mathdoc print math documentation of the Faust program in LaTeX format in a -mdoc folder.

       -mdlang <l> --mathdoc-lang <l> if translation file exists (<l> = en, fr, ...).

       -stripmdoc--strip-mdoc-tags strip mdoc tags when printing Faust -mdoc listings.

   Debugoptions:-d--details print compilation details.

       -time--compilation-time display compilation phases timing information.

       -flist--file-list print file list (including libraries) used to eval process.

       -tg--task-graph print the internal task graph in dot format.

       -sg--signal-graph print the internal signal graph in dot format.

       -rg--retiming-graph print the internal signal graph after retiming in dot format.

       -norm--normalized-form print signals in normalized form and exit.

       -norm1--normalized-form1 print signals in normalized form with IDs for shared sub-expressions and exit.

       -me--math-exceptions  check  /  for  0 as denominator and remainder, fmod, sqrt, log10, log, acos, asin
       functions domain.

       -sts--strict-select generate strict code for `selectX' even for stateless branches (both are computed).

       -wall--warning-all print all warnings.

       -t <sec> --timeout <sec> abort compilation after <sec> seconds (default 120).

   Informationoptions:-h--help print this help message.

       -v--version print version information and embedded backends list.

       -libdir--libdir print directory containing the Faust libraries.

       -includedir--includedir print directory containing the Faust headers.

       -archdir--archdir print directory containing the Faust architectures.

       -dspdir--dspdir print directory containing the Faust dsp libraries.

       -pathslist--pathslist print the architectures and dsp library paths.

   Environmentvariables:
       FAUST_DEBUG = FAUST_LLVM1 print LLVM IR before optimisation.

       FAUST_DEBUG = FAUST_LLVM2 print LLVM IR after optimisation.

       FAUST_DEBUG = FIR_PRINTER print FIR after generation.

       FAUST_DEBUG = FAUST_LLVM_NO_FM deactivate fast-math optimisation in LLVM IR.

       FAUST_OPT = FAUST_SIG_NO_NORM deactivate signal normalisation.

   Example:
       faust -a jack-gtk.cpp -o myfx.cpp myfx.dsp

See Also

       Grame Faust site at: https://faust.grame.fr

Synopsis

faust [options] file1 [file2 ...]

See Also