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;langshould beasc,c,cpp(default),cmajor,codebox,csharp,dlang,fir,interp,java,jsfx,julia,linen,llvm,nnx,ocpp,rust,sdf3,vhdlorwast/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 (-1is used to generate a uniquefixpoint_ttype). ๐ข-es 1|0,--enable-semantics 1|0โ use enable semantics when1(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 withclang/clang++, adds specific#pragmafor auto-vectorization. ๐-nvi,--no-virtualโ when compiled with the C++ backend, does not add thevirtualkeyword. ๐-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 fasterexp10(x). โก-os,--one-sampleโ generate one sample computation. one (1) sample. ๐-ec,--external-controlโ separatedcontrolandcomputefunctions. they need space. ๐-it,--inline-tableโ inlinerdtable/rwtablecode in the main class. ๐ฆ-cm,--compute-mixโ mix in outputs buffers. ๐๏ธ-ct,--check-tableโ checkrtable/rwtableindex 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 ofmydsp. name her. ๐-scn <name>,--super-class-name <name>โ specify the name of the super class to be used instead ofdsp. ๐ฆธ-pn <name>,--process-name <name>โ specify the name of the dsp entry-point instead ofprocess. ๐ช-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, default1024). ๐-mdy <n>,--min-density <n>โ minimal density (100*number of delays/max delay) to use a dense delays (ocpp only, default33). ๐-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 (defaultINT_MAXsamples). ๐ฏ-mem,--memory-managerโ allocations done using a custom memory manager. ๐งบ-mem1,--memory-manager1โ allocations done using a custom memory manager, using theiControl/fControlandiZone/fZonemodel. ๐งบโจ-mem2,--memory-manager2โ useiControl/fControl,iZone/fZonemodel and no explicit memory manager. ๐งบ๐ซฅ-mem3,--memory-manager3โ useiControl/fControl,iZone/fZonemodel 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 (default20, implies-ls). ๐พ-ls-U <n>,--loop-split-width <n>โ superscalar width of the model scheduler (default4, 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 (default1024, compile-time guard; the cost oracle decides, implies-ls-fuse). ๐งพ-mindelay <n>,--min-delay <n>โ (ocpp, experimental) semantic floor for large variable delays: emitsmax(d, n)when certifieddmin < nanddmax >= 32*n; withn >= 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:0depth-first (default),8aligned,9bank-compositional,11/12compositional 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 ofnoperations or more as temporaries (1= SSA form,0= off). ๐ง-stage <n>,--staging-threshold <n>โ (ocpp, experimental) stage expressions nested deeper thanninto 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 theirselect2chains (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 (default20cycles, implies-ls-fuse). โฑ๏ธ-ls-spill <n>,--loop-split-spill-weight <n>โ oracle: cycles per register-cycle aboveR(default4, implies-ls-fuse). ๐ง-ls-load <n>,--loop-split-load-weight <n>โ oracle: issue slots per buffer load (0= free, default1, 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.7by default) ; internal compiler tuning knob, never changes generated code, seeTLIB.md. ๐ค-rui,--range-uiโ whether to generate code to constraintvslider/hslider/nentryvalues 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 freezevslider/hslider/nentryto 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 (default32samples). ๐-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--vectorizeoption. ๐งต-pl,--par-loopโ generate parallel loops in--openmpmode. ๐โโ๏ธ๐-sch,--schedulerโ generate tasks and use a Work Stealing scheduler, activates--vectorizeoption. ๐ฅท-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-ompor-schis used. ๐ฏ-fun,--fun-tasksโ separate tasks code as separated functions (in-vec,-sch, or-ompmode). ๐ช-fm <file>,--fast-math <file>โ use optimized versions of mathematical functions implemented in<file>, usefaust/dsp/fastmath.cppwhen file isdef, assume functions are defined in the architecture file when file isarch. ๐งฎโก-mapp,--math-approximationโ simpler/faster versions offloor/ceil/fmod/remainderfunctions. ๐ช-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/-mem2mode. ๐งฑ-fpga-mem-th <n>,--fpga-mem-th <n>โ FPGA array size threshold (in unit of the memory type), used in-mem1/-mem2mode. ๐-rnt,--rust-no-faustdsp-traitโ (Rust only) Donโt generateFaustDsptrait implementation. ๐ฆ๐ซ-rnlm,--rust-no-libmโ (Rust only) Donโt generate FFI calls tolibm. ๐ฆ๐ต
๐ผ๏ธ 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 (default25elements).-fc <n>,--fold-complexity <n>โ how complicated an expression has to be before it gets folded while folding mode is doing its thing (default2).-mns <n>,--max-name-size <n>โ the name-size threshold during block-diagram generation (default40char). 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-mdocfolder. 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-mdoclistings. 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 indotformat. graph girlies rise ๐ฆ-sg,--signal-graphโ prints the internal signal graph indotformat.-rg,--retiming-graphโ prints the internal signal graph after retiming, indotformat. 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/for0as denominator, plus the domain ofremainder,fmod,sqrt,log10,log,acos, andasin. safety check, no cap ๐จ-sts,--strict-selectโ generates strict code forselectXeven 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 (default120). 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