man(1)

๐Ÿ’… man(1) โ€” the Faust manual page ๐ŸŽ€

okay so you opened man(1) which means the manual name is literally just Faust โ€” that's the page you're on, bestie, and it's the compiler for the Faust language. it's long. we're doing it in parts. hydrate first. ๐Ÿงš


โœจ NAME โœจ

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

like, all of the targets. she contains multitudes. ๐Ÿ‘‘


๐ŸŒธ SYNOPSIS ๐ŸŒธ

faust [options] file1 [file2 ...]

that's it. options first, then one file, then more files if you're feeling extra. periodt.


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Faust (short for Functional Audio Stream, iconic name, no notes) is a functional programming language built specifically for real-time signal processing and synthesis. so like, audio, but make it functional. ๐Ÿ’…

she targets high-performance signal processing applications and audio plug-ins across a whole bunch of platforms and standards. yes, plural. yes, all of them. main character energy fr. ๐ŸŒˆ


โš™๏ธ OPTIONS โš™๏ธ

๐Ÿ“ฅ Input options

  • -a <file> โ€” wrapper architecture file. this is the little home your DSP moves into. ๐Ÿ 
  • -i, --inline-architecture-files โ€” inline those architecture files. bring them inside, no outside friends. โœจ
  • -A <dir>, --architecture-dir <dir> โ€” add the directory <dir> to the architecture search path. more places to look for architectures. ๐Ÿ”
  • -I <dir>, --import-dir <dir> โ€” add the directory <dir> to the libraries search path. same vibe, but for libraries. ๐Ÿ“š
  • -L <file>, --library <file> โ€” link with the LLVM module <file>. ๐Ÿ”—

๐Ÿ“ค Output options

  • -o <file> โ€” the output file. the whole point, honestly. ๐Ÿ’–
  • -e, --export-dsp โ€” export the expanded DSP (with all included libraries). everything, unfolded, laid out. ๐Ÿซถ
  • -uim, --user-interface-macros โ€” add user interface macro definitions to the output code. ๐ŸŽ€
  • -xml โ€” generate an XML description file. ๐Ÿ“„
  • -json โ€” generate a JSON description file. closest thing to a JSON file to exist. ๐Ÿ—‚๏ธ
  • -O <dir>, --output-dir <dir> โ€” specify the relative directory of the generated output code and of additional generated files (SVG, XML...). yes, relative. she said what she said. ๐Ÿ“

๐Ÿง  Code generation options

okay this is the big one. buckle up, bestie, we're going in order and we're not skipping a single flag. ๐Ÿ’€

  • -lang <lang>, --language โ€” select output language; lang should be asc, c, cpp (default), cmajor, codebox, csharp, dlang, fir, interp, java, jsfx, julia, linen, llvm, nnx, ocpp, rust, sdf3, vhdl or wast/wasm. pick your fighter. ๐ŸŒˆ
  • -single, --single-precision-floats โ€” use single precision floats for internal computations (default). the standard girlie. โœจ
  • -double, --double-precision-floats โ€” use double precision floats for internal computations. more bits, more problems, more accurate. ๐ŸŽ€
  • -quad, --quad-precision-floats โ€” use quad precision floats for internal computations. she went quad. ๐Ÿ˜ญ
  • -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. diet 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. she's an over-explainer. (same.) ๐Ÿซถ
  • -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. one (1) sample. ๐Ÿ’…
  • -ec, --external-control โ€” separated control and compute functions. they need space. ๐Ÿ’”
  • -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. name her. ๐Ÿ‘‘
  • -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 (defaut 16 samples). (the page literally says "defaut", we don't gatekeep typos ๐Ÿ’€)
  • -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. ๐Ÿงบ๐Ÿ”‘
  • -ls, --loop-split โ€” (ocpp, experimental) emit the materialized DAG as separate loops. โœ‚๏ธ
  • -ls-sched <s>, --loop-split-scheduling <s> โ€” intra-loop op order: df (default), bf, model, layers, cs2, cs2b (implies -ls). ๐Ÿ—“๏ธ
  • -ls-R <n>, --loop-split-registers <n> โ€” register budget of the model scheduler (default 20, implies -ls). ๐Ÿ’พ
  • -ls-U <n>, --loop-split-width <n> โ€” superscalar width of the model scheduler (default 4, implies -ls). โ†”๏ธ
  • -ls-fuse, --loop-split-fuse โ€” greedy single-consumer fusion of the super-node partition (implies -ls). ๐Ÿ”ฅ
  • -ls-fuse-ops <n>, --loop-split-fuse-ops <n> โ€” op-count budget of a fused block (default 1024, compile-time guard; the cost oracle decides, implies -ls-fuse). ๐Ÿงพ
  • -mindelay <n>, --min-delay <n> โ€” (ocpp, experimental) semantic floor for large variable delays: emits max(d, n) when certified dmin < n and dmax >= 32*n; with n >= vector size, long feedback cycles split legally. ๐Ÿงฑ
  • -rp, --ring-preload โ€” (ocpp, experimental) ring reads leave as a burst at the head of the loop body, a register move stays at the original slot. ๐Ÿƒโ€โ™€๏ธ
  • -sig, --signature โ€” (ocpp) print the programโ€™s static signature on one line (size, recurrence bound, selects, compute/memory nodes, streams, shapes) before emission -- the material of the option election. ๐Ÿ“
  • -ss <n>, --scheduling-strategy <n> โ€” (ocpp, experimental) instruction order of the loop body: 0 depth-first (default), 8 aligned, 9 bank-compositional, 11/12 compositional deep/wide spine. ๐Ÿงญ
  • -fir, --fir-iir โ€” (ocpp, experimental) recognise FIR/IIR kernels in the signal graph and emit their dedicated forms. ๐ŸŒฟ
  • -iirt, --iir-transposed โ€” (ocpp, experimental) transposed emission for the all-pole kernels recognised by -fir. ๐Ÿ”„
  • -lsum, --lower-sums โ€” (ocpp, experimental) recover the polynomial form of large sums before emission. โž—
  • -mxr, --matrix-rows โ€” (ocpp, experimental) group families of parallel rows over a shared vector into matrix-vector emission. ๐Ÿ”ฒ
  • -temp <n>, --temp-threshold <n> โ€” (ocpp, experimental) materialize single-use expressions of n operations or more as temporaries (1 = SSA form, 0 = off). ๐ŸงŠ
  • -stage <n>, --staging-threshold <n> โ€” (ocpp, experimental) stage expressions nested deeper than n into named temporaries. ๐Ÿชœ
  • -reassoc, --reassociate โ€” (ocpp, experimental) late reassociation of the sums inside single-definition recursive groups (minimal recurrence chain). ๐Ÿ”—
  • -lazyselect, --lazy-select โ€” (ocpp, experimental) compute the branches of a selection only when selected. ๐Ÿ˜ด
  • -selectn, --select-n โ€” (ocpp, experimental) rebuild N-way dispatches from their select2 chains (implies -lazyselect). ๐Ÿšฆ
  • -gatequiv, --gate-equivalence โ€” (ocpp, experimental) one canonical form for the two spellings of a gated signal, so guards reach further. ๐Ÿšง
  • -ls-cl <n>, --loop-split-cl <n> โ€” oracle: per-loop per-chunk overhead (default 20 cycles, implies -ls-fuse). โฑ๏ธ
  • -ls-spill <n>, --loop-split-spill-weight <n> โ€” oracle: cycles per register-cycle above R (default 4, implies -ls-fuse). ๐Ÿ’ง
  • -ls-load <n>, --loop-split-load-weight <n> โ€” oracle: issue slots per buffer load (0 = free, default 1, implies -ls-fuse). ๐Ÿšš
  • -ftz <n>, --flush-to-zero <n> โ€” code added to recursive signals [0:no (default), 1:fabs based, 2:mask based (fastest)]. ๐Ÿงน
  • -hlf <n>, --hash-load-factor <n> โ€” load factor that triggers tlib hash table growth (0.7 by default) ; internal compiler tuning knob, never changes generated code, see TLIB.md. ๐Ÿค“
  • -rui, --range-ui โ€” whether to generate code to constraint vslider/hslider/nentry values in [min..max] range. ๐ŸŽš๏ธ
  • -eta, --eta-normalization โ€” normalization loop with the eta harvest: definitions no longer recursive replace their projections (one pass by default). ๐ŸŒพ
  • -etai <n>, --eta-iterations <n> โ€” iteration budget of the eta normalization loop (implies -eta; the loop may stop earlier). ๐Ÿ”
  • -co, --canonical-order โ€” order the terms of normalized sums and products by value (history-independent) instead of the default serial order. ๐Ÿ”ค
  • -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). โš ๏ธ read that again: scalar mode only, bestie.
  • -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. ๐Ÿงฑ
  • -fpga-mem-th <n>, --fpga-mem-th <n> โ€” FPGA array size threshold (in unit of the memory type), used in -mem1/-mem2 mode. ๐Ÿ“
  • -rnt, --rust-no-faustdsp-trait โ€” (Rust only) Donโ€™t generate FaustDsp trait implementation. ๐Ÿฆ€๐Ÿšซ
  • -rnlm, --rust-no-libm โ€” (Rust only) Donโ€™t generate FFI calls to libm. ๐Ÿฆ€๐Ÿ“ต

๐Ÿ–ผ๏ธ Block diagram options

  • -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. ๐Ÿ›ฃ๏ธ

part 2 is loadingโ€ฆ don't move, we're literally not done ๐Ÿ’–๐Ÿซถ

๐ŸŽ€ Block-diagram vibes, continued

  • -f <n>, --fold <n> โ€” the fold threshold, bestie: once a block diagram hits this many elements, folding mode kicks in (default 25 elements).
  • -fc <n>, --fold-complexity <n> โ€” how complicated an expression has to be before it gets folded while folding mode is doing its thing (default 2).
  • -mns <n>, --max-name-size <n> โ€” the name-size threshold during block-diagram generation (default 40 char). short king energy โœจ
  • -sn, --simple-names โ€” use simple names (no arguments) when generating block diagrams. lowkey cleaner, ngl.
  • -blur, --shadow-blur โ€” adds a shadow blur to the SVG boxes. it's giving depth, it's giving lewk ๐Ÿ’…
  • -sc, --scaled-svg โ€” automatic scalable SVG. it just scales, periodt.

๐Ÿงฎ Math doc options

  • -mdoc, --mathdoc โ€” prints the math documentation of your Faust program in LaTeX format, tucked into a -mdoc folder. academic baddie behavior ๐Ÿ““
  • -mdlang <l>, --mathdoc-lang <l> โ€” picks the language for that math doc if a translation file exists for it (<l> = en, fr, ...).
  • -stripmdoc, --strip-mdoc-tags โ€” strips the mdoc tags when printing Faust -mdoc listings. no tags, just vibes.

๐Ÿ› Debug options

  • -d, --details โ€” prints compilation details. receipts, basically ๐Ÿงพ
  • -time, --compilation-time โ€” shows timing info for the compilation phases. yeah she's timing herself, and?
  • -flist, --file-list โ€” prints the file list (libraries included) used to eval the process. everyone who showed up to the function ๐Ÿ’–
  • -tg, --task-graph โ€” prints the internal task graph in dot format. graph girlies rise ๐Ÿฆ‹
  • -sg, --signal-graph โ€” prints the internal signal graph in dot format.
  • -rg, --retiming-graph โ€” prints the internal signal graph after retiming, in dot format. post-glow-up graph โœจ
  • -norm, --normalized-form โ€” prints signals in normalized form and then dips out (exits).
  • -norm1, --normalized-form1 โ€” same normalized-form situation, but with IDs for shared sub-expressions, then exit. teamwork makes the dream work ๐Ÿซถ
  • -me, --math-exceptions โ€” checks / for 0 as denominator, plus the domain of remainder, fmod, sqrt, log10, log, acos, and asin. safety check, no cap ๐Ÿšจ
  • -sts, --strict-select โ€” generates strict code for selectX even for stateless branches (both are computed). both, not one. both.
  • -wall, --warning-all โ€” prints all the warnings. all of them. brace yourself ๐Ÿ˜ญ
  • -t <sec>, --timeout <sec> โ€” aborts compilation after <sec> seconds (default 120). girl has a curfew โฐ

๐Ÿ‘‘ Information options

  • -h, --help โ€” prints this help message. hi bestie ๐Ÿ’œ
  • -v, --version โ€” prints version info and the embedded backends list.
  • -libdir, --libdir โ€” prints the directory containing the Faust libraries.
  • -includedir, --includedir โ€” prints the directory containing the Faust headers.
  • -archdir, --archdir โ€” prints the directory containing the Faust architectures.
  • -dspdir, --dspdir โ€” prints the directory containing the Faust dsp libraries.
  • -pathslist, --pathslist โ€” prints the architectures and dsp library paths together. combo deal ๐Ÿ“

๐ŸŒˆ Environment variables

These go in your env, okurrr:

  • FAUST_DEBUG = FAUST_LLVM1 โ€” prints LLVM IR before optimisation.
  • FAUST_DEBUG = FAUST_LLVM2 โ€” prints LLVM IR after optimisation.
  • FAUST_DEBUG = FIR_PRINTER โ€” prints FIR after generation.
  • FAUST_DEBUG = FAUST_LLVM_NO_FM โ€” deactivates fast-math optimisation in LLVM IR.
  • FAUST_OPT = FAUST_SIG_NO_NORM โ€” deactivates signal normalisation.

๐Ÿงš Example

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

literally that's it. go make your fx ๐Ÿ’…


๐ŸŒธ SEE ALSO

Grame Faust site at: https://faust.grame.fr โ€” the mothership, go visit โœจ


๐Ÿ’€ BUGS

Please report bugs to: https://github.com/grame-cncm/faust/issues โ€” don't suffer in silence bestie, file the issue ๐Ÿ™ˆ


๐Ÿซถ AUTHOR

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


okay that's the whole page, you're so welcome ๐Ÿ’– this was Version 2.88.0, dated 05-September-2026, and we were all reading man(1). slay, go compile something iconic ๐Ÿ‘‘๐ŸŽ€

๐Ÿ“ฆ where this page comes from
  • arch rolling: faust 2.88.0-2 ยท GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.1-or-later
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms