Skip to content

Releases: grame-cncm/faust

Faust version 2.50.6

03 Oct 07:37
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.50.6.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • In C++ backend and -nvi mode, use 'static constexpr' in separated methods getStaticNumInputs/getStaticNumOutputs
  • Add relative standard deviation computation in benchmark tools
  • Add POD support in faust2daisy
  • Rust: Use wrapping add, sub and mul operations
  • Allow indentifiers starting with multiple '_'
  • Faust identifiers extended to accept c++ namespaces
  • Rework createSourceFromBoxes/createSourceFromSignals API suggested by David Braun
  • Add a -dyn option (create libfaust + LLVM backend dynamic version) in faust2jack, faust2cagtk, faust2plot and faust2csvplot
  • Latency metadata added in faust2juce
  • Add support for Trill Craft sensors in faust2bela
  • Allows 0 iterations for par, seq, sum and prod
  • New ...%{ijk}... extended syntax for label variables
  • Add template-llvm.cpp architecture to allow any faust2xx to become 'dynamic'.
  • Add registerForeignFunction for LLVM backend
  • Support for soundfile in Interp backend
  • Extension of letrec with an optional 'where' clause followed by common definitions
  • Completed Box/Signal API

Deprecated

Fixed bugs

  • Argument evaluation order sensibility and warnings when compiling with GCC 12.
  • Ladspa architecture file to set descriptor info from metadata
  • Fixing a couple of inconsistencies in the Teensy architectures
  • Incorrect use of ScopedNoDenormals
  • Correct operator priority and parenthesis generation in textual backends. Add -fp option
  • Correct generation of float/double textual representation
  • Rework -e option to print ordered ID
  • Correct -ub/-universal option mixup in faust2max6

Libraries change log

  • Add the "Standardized Filters" section and the ITU-R BS.1770-4 K-filter
  • compressors: leave the GR signal in the dB scale
  • lag_ud renamed in onePoleSwitching and improved

Faust version 2.41.1

29 Jun 14:54
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.41.1.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • Make faustgen~ compile on Apple M1.
  • Add interpreter-dsp C API.
  • Optimize 'powprim' when arg is or represents an integer.
  • Add -osc additional parameters handling in dynamic-jack-gtk and poly-dynamic-jack-gtk tools.
  • Improve documentation coherency in faust2xx tools.
  • New faust2bench tool.
  • Rework public export.
  • Update faust2max6 to produce uiversal arm64/x86_64 code signed binaries.
  • 'librarypath' with an empty path now clear the librarypath list in faustgen~.
  • Add an nc parameter in faustgen~ 'compileoptions' message.
  • Compute and add 'shortname' in JSON generation.
  • Add faust2tidalcycles tool.
  • Update faust2puredata for Apple M1.
  • Rework 'read' method in faustgen~.

Deprecated

Fixed bugs

  • Relax same path rule causing errors for bargraph.
  • replaceCharList now creates a copy of the 'str' parameter. Correct buildPath.
  • JUCE architecture float/double and prepareToPlay handling.
  • Make broken -ocpp mode work again.
  • Some variables were not correctly moved from compute to computeThread in -sch mode.

Libraries change log

  • New time-domain pitch-tracking and spectral centroid functions.
  • Noise Generator: add colored_noise.
  • Rewrite slidingReduce.
  • Update hoa.lib.
  • Add cent2ratio/ratio2cent functions.
  • Add ahdsre (ADSRe with hold time).
  • Change use of obsolete ma.INFINITY in ma.MAX.
  • Faster ba.peakholder version.

Faust version 2.40.0

27 Mar 08:29
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.40.0.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • Add -nvi option to be used with the C++ backend
  • Rework memory-manager (-mem) option
  • Add -single option handling in faustgen~
  • New setReleaseLength API for polyphonic DSPs contributed by David Braun
  • Add an access ratio in DSP struct field R/W access statistic
  • Add 'fParts' field in Soundfile to keep the total number of loaded parts
  • Add -os3 option in C and C++ backends
  • Avoid systematic parenthesis in generateBinOp
  • Restart oboe when audio stream is disconnected
  • Add faust2sc.py to replace faust2supercollider in the future
  • Rework DSP expansion by creating a map of <ID, expression> and sharing the IDs
  • Sublime Text 4 completions and snippets initial commit with new export script
  • Add Apple M1 support for -soundfile option in faust2max6
  • Add 'RESTRICT' in C/C++ backends and 'noalias' in LLVM backend in -fun mode
  • Add -os2 mode in C and C++ backends
  • Add -double support with 'soundfile' in faust2api
  • Make 'standard' foreign linked functions usable in LLVM

Deprecated

Fixed bugs

  • Correct dsp_optimizer_real::findOptimizedParameters
  • Reworked integer parsing to correctly work on Windows with MSVC compiler
  • Fix codeTableType (bug rwtable type inference)
  • Correct several faust2xx tools to compile on Apple M1
  • DspFaust::deleteVoice now reset the voice
  • Binop Priorities changed to reflect C order
  • Correct JuceGUI to display the current state of all controllers
  • Controls state was not properly managed in faust2ios -osc mode
  • Soundfile support in faust2max6 and faust2msp
  • Correct faust2faustvst 'nvoices' metadata parsing
  • Unity monophonic and polyphonic C# architectures

Libraries change log

  • Add 2-way, 3-way, 4-way 8-way Linkwitz-Riley fourth-order crossovers
  • Add ba.counter
  • Added Bubble Sort implementation for on-the-fly automatic sorting of parallel signals
  • Fix phasor in oscillators.lib to correctly reset and phase, based on a generic phasor_imp function
  • Extend Lagrange interpolation algorithms to support arbitrary spacing of the interpolation points
  • Add Drum Synthesis ported from Nick Thompson Elementary version

Faust version 2.37.3

30 Oct 12:14
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.37.3.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • Improve compilation of 'select2' to be really strict.
  • Add Box API
  • Add Signal API
  • Add experimental assertbounds, lowest and highest primitives. Add -wi and -ni options
  • Add experimental VHDL generation
  • Add ESP32 support in faust2api
  • Improve interp-tracer
  • In faust2object, '-A path' also added as '-I path' in the C++ command
  • Add 'copysign' math function
  • In faust2max6, '-A path' also added as '-I path' in the C++ command
  • Add -os1 option in C++ backend
  • Add Julia backend and architectures

Deprecated

Fixed bugs

  • getLibraryList working with expanded files
  • CoreAudio: skip an input device's output channels
  • Correct implementation of isnan/isinf/copysign in Interp backend
  • Add missing isnan/isinf/copysign primitives in WASM architectures
  • JUCE plugin architecture in -double mode, single call to prepareToPlay enforced

Libraries change log

  • Fixed moogLadder by Dario Sanfilippo.
  • Fixed compressors in compressors.lib
  • Rename ma.INFINITY in ma.MAX
  • Correct dm.exciter against division by zero
  • Add interval protection in linear2db and pole2tau
  • Add ma.copysig function
  • Fix pulse(p) when p is modulated (bug reported by DS)

Faust version 2.33.1

20 Jul 12:22
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.33.1.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • Tools dynamic-faust, faustbench, faustbench-llvm and faust2object are now part of the macOS binary distribution.
  • New -os0 and -os1 options (variants of -os) in C backend.
  • Add dynamic-coreaudio-gtk tool.
  • New faustremote [<servurl>] <platform> <arch> <srcfile> ==> <binary.zip> script.
  • Add faust2w64puredata script.
  • Add -bs option to faust2sndfile.
  • Add -edit option in dynamic-jack-gtk.
  • Add -ct option in faust2sndfile.
  • Add -double support with soundfile.
  • Make -inj foo.cpp option correctly work in faust2object tool.
  • Add switch/case based Interpreter loop for Windows32 compilation in Interp backend.
  • Update faust2juce to Projucer 6.0.8 (build date 22 Mar 2021). Add Visual Studio 2019 builds to the plugin and standalone Jucer files. Add new arg to faust2juce for VST 2 SDK folder. Add new arg for disabling juce splash screen.
  • Add -a arch_file in compile options generation.
  • Add dsp_crossfader class.
  • New experimental faust2audiokit tool.
  • Csharp backend contributed by Mike Oliphant.
  • Add -fx (fixed-point) option.
  • Add -soundfile option to faust2object.
  • Add faust2cagtk tool.
  • New soul-faust-editor tool.
  • Add architecture files for Daisy and faust2daisy.
  • Add -rc option to possibly use the foo.rc file in faust2sndfile.
  • Complete createSRAdapter.
  • Add -us/-ds/-filter options to faust2object, faustbench, faustbench-llvm.
  • Add support for 'logical right-shift' and correct support for int64 in most backends. Correct -ftz 2 and -double support in wast/wasm backends.

Deprecated

Fixed bugs

  • Correct -double mode in Interp backend.
  • Correct polyphonic handling in -double mode.
  • Improve voice stealing in mydsp_poly.
  • Fix 'pow' function to compute with integers when both arguments are integers.
  • Correct faust2plot and faust2csvplot SR parameter handling.
  • Correct faust2max6 assist messages. Fix CPU measure display in several tools.
  • For faust2max6, correct ui.js to create appropriate 'int' or 'float' type slider depending of the step value.

Libraries change log

  • Add pink_noise_demo to demos.lib.
  • Add jprev and greyhole reverbs: developed by Julian Parker and Till Bovermann.
  • ADSR modification: favors a constant release time rather than a constant release slope for very short gates.
  • New fds.lib by Riccardo Russo.
  • New aanl.lib library for antialiased nonlinearities by Dario Sanfilippo.
  • New wdmodels.lib library by Dirk Rosenburg.
  • Making the behaviour of si.smoo SR-independent.
  • Add tabulate in basics.lib.

Faust version 2.30.5

23 Jan 14:37
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.30.5.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • add layout and label parameters in DSP algrebra API.
  • add MIDI output handling in faustgen~ and faust2msp/faust2max6
  • add new D backend and faust2dplug tool (contributed by Ethan Reker)
  • Rust backend generate more efficient code
  • add all supported CPUs in faust2object
  • add -cm (--compute-mix) option
  • new faust2vcvrack tool
  • add setParamValue/getParamValue methods using path in APIUI
  • adding bluetooth MIDI support to the Gramophone
  • improve sound2file tool to generate interleaved or non-interleaved files
  • add -preset option in faust2jack and faust2jaqt
  • add -multifun option in faust2object
  • add -bs <frames> and -control options in faustbench
  • add -rui option

Deprecated

Fixed bugs

  • rework MIDI channel handling in MidiUI: channels go from 1 to 16 and channel 0 is used for "all channels" at receive and send time
  • type2Binary and type2String in wast/wasm backends
  • mode -double in faust2juce
  • faust2android incorrect monophonic handling
  • avoid multiple registration of AudioWorkletProcessor code
  • rework MIDI chanpress implementation

Libraries change log

  • various bugs fix and documentation improvements
  • fixed encoder3D and optimMaxRe3D in hoa.lib
  • added quantizer library
  • Oleg Nesterov SVF filters

Faust version 2.27.2

04 Aug 07:57
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.27.2.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • add -ct and -cat options
  • add -llvm option in faust2juce
  • new faust2object tool to compile several CPU specific versions of the code (using C++ or LLVM backends)
  • add OBOE audio driver for Android
  • experimental up/down sampling C++ DSP wrappers
  • possibility to have specific definitions according to the floating point precision option
  • add -jucemodulesdiroption to faust2juce
  • improve inter-tracer
  • add -single option in faust2max6
  • add scrolling in GTKUI
  • add MIR support in interp/comp mixed mode
  • new -gramophone option in faust2esp32
  • new faust2w64vst tool
  • implement isnan/isinf in non C/C++ backends
  • improve SOUL backend (now passing almost all impulse-tests) and tools
  • make -uim option generate a FAUST_CLASS_NAME string
  • add attribute handling in faust2max6
  • added mi.lib examples
  • FAUST_LIST_ACTIVES/FAUST_LIST_PASSIVES macros generated in -uim mode
  • reworked Rust backend, now passing all impulse-tests
  • add buildUserInterface method in DspFaust class (faust2api)
  • add -soundfile option in faust2jackconsole
  • add log/exp scale handling in MidiUI
  • special BS variable handling in FIR
  • add -dlt size option in scalar mode, remove obsolete -lt option
  • add -us/-ds/-filter parameters to faust2max6/faust2msp
  • add a normalisation rule 'abs(abs(x)) = abs(x)'
  • add -control option in faustbench-llvm
  • primitive 'enable/control' working with -occp backend and scalar mode
  • add 'float -> int' cast out-of-range detection in Interp backend.
  • add 'enable/control' in FIR scalar mode
  • add -source option to faustbench
  • add -bs option to soul-faust-tester and faustbench-llvm
  • add MIDI architecture file for iPlug project
  • new -mapp option
  • support for LLVM 10 (with compiled version in the OSX and Windows binaries)

Deprecated

Fixed bugs

  • fixes in C libfaust API
  • fixes in faust2esp32
  • fixes in faust2webaudiowast/faust2webaudiowasm/faust2wasm scripts the compiler now refuses to compile DSP code that cause several identical UI paths (like /foo/bar/ui_item) to be produced, since identical paths cannot be distinguished when controlled with OSC for instance
  • correct MIDI synch messages handling
  • correct controllers save/restore in JUCE architecture
  • missing loop dependencies fixed in -vec mode
  • fixes in faust2unity
  • improved JuceReader class
  • correct code generation for << and >> operators
  • fixes in rdtable/rwtable code generation
  • correct Csound architecture
  • fix openFrameworks audio driver
  • fixes in faust2lv2
  • correct 'dump' behaviour in Max/MSP and faustgen~ architectures to output [path cur min max]
  • fix select/if cond generation in LLVM and wast/wasm backends
  • enable AudioUnit's input only when inputs > 0 in coreaudio-ios-dsp.h
  • fixes in faust2png

Libraries change log

  • new platform.lib that contains platform specific value of SR and tablesize values (to be possibly changed on embedded platforms)
  • runtime.lin file removed and code moved to interpolators.lib
  • new version.lib
  • correct os.lf_sawpos
  • correct ma.isnan/isinf definitions
  • rework crosses in route.lib
  • fixes in hoa.lib
  • new os.hsp_phasor
  • new ma.zc, an.abs_envelope, an.abs_envelope_rect, an.ms_envelope, an.ms_envelope_rect, an.rms_envelope, an.rms_envelope_rect
  • correct os.quadosc
  • updated mi.lib
  • added averaging functions in maths.lib
  • added amp envelope functions in analyzers.lib
  • rework lookahead limiters
  • added zero-crossing rate function
  • CZ oscillators: refactor and add phase aligned versions

Faust version 2.20.2

14 Jan 12:53
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.20.2.tar.gz file to get a complete source folder (in particular, with all the libraries)

New

  • detect slider and numentry parameters coherency ('init' must be in [min, max] range)
  • new -ct (--check-table) option
  • add MIDI channel support in MidiUI class
  • correct pitchbench handling (adding NRPN support for pitchbench range) in midi class
  • add 'rint' math primitive in wasm/wast and interp backends
  • new -os (--one-sample) experimental code generation model in C and C++ backends
  • add support for the ESP32 cards with faust2esp32 script
  • add math exception handling in impulse-tests
  • updated Rust backend
  • better messages for block-diagram composition errors
  • new --fold-complexity or -fc option
  • add resampling support when using 'soundfile' primitive in various faust2xx scripts
  • add support for 'soundfile' primitive in wasm/wast backends
  • add support for the teensy card with faust2teensy script
  • add -osc support in faust2android
  • new route primitive in the language
  • new faust-osc-controller tool (in tools/benchmark)
  • new experimental SOUL backend with faust2soul and soul-faust-player tools

Deprecated

Fixed bugs

  • improve LLVM (backend + Interp) and wasm/wasm select implementation
  • correct faust2jackrust and faust2portaudiorust
  • correct wasm/wast backends
  • correct ‘double’ type management in OSC library.
  • check slider and numentry parameters coherency at compile time
  • fix potential memory leak when creating OpenSL ES engine
  • correct messages handling in faustgen~
  • -I dir is now properly used before standard folders
  • improved WebAudio tools
  • fix for multiple registerProcessor call in webaudio-workletnode-standalone-wrapper.js wrapper
  • improved faust2sndfile tool
  • more robust interp-tracer tool
  • vector code generation bug
  • correct -double handling in faust2plot and faust2csvplot. Correct MidiUI constructor
  • evaluation bug: in some specific case we can have an unevaluated identifier inside a closure

Libraries change log

  • correct table use in tubes.lib
  • add semi2ratio/ratio2semi functions in basics.lib. Rework pitchwheel handling
  • add isinf function in maths.lib
  • add Eric Tarr's various filters in vaeffects.lib
  • new selectmulti in basics.lib
  • new interpolators.lib, float.lib, double.lib and runtime.lib
  • reworked soundfiles.lib
  • add mic input case to pospass_demo
  • revise pospass filter to have an explicit cutoff frequency argument
  • new bypass_fade function in basics.lib
  • install quadosc improvements by Oleg
  • hilbert needs explicit order argument: hilbert(N) = pospass(N)...
  • change ssbf to pospass
  • new mi.lib library
  • name change: conj -> cconj
  • add ssbf and hilbert to filters.lib
  • add ssbf demo to demos.lib
  • add cconj to signals.lib
  • new faster AR, ASR, ADSR envelop generators
  • new nextpow2 in maths.lib

Faust version 2.15.11

05 Apr 08:35
Compare
Choose a tag to compare

Change log

WARNING: to get the source version

  • be sure to download the faust-2.15.11.tar.gz file to get a complete source folder (in particular, with the full libraries)

New

  • add a -soundfile-static option in faust2max6
  • add a -native option to faust2msp and faust2max6
  • adding basic Teensy support to faust2api
  • new DSP algebra API
  • add an 'auto_connect' parameter in DspFaust constructor
  • add dynamic-faust tool.
  • add writeDSPFactoryToObjectcodeFile API in libfaust.
  • faust2xx scripts can now work with a local Faust installation
  • make C++ backend work in quad mode

Deprecated

  • remove asmjs and JS backends
  • unstable OSC bundle deactivated for now in faust2ios and faust2api
  • remove old iOS JACK code

Fixed bugs

  • correct CoreAudio architecture and JSON generation
  • correct gyroscope activation in faust2android, fix a bug in FaustPolyEngine::init
  • correct readDSPFactoryFromMachine (LLVM JIT was not properly linked)
  • update with latest version of RtMidi, more robust MIDI timestamp handling
  • correct polyphonic DSP detection in FaustPolyEngine
  • faust2ios now creates a self-contained project
  • correct -omp and -sch code generation with 'soundfile' primitive
  • correct wast and Interp/LLVM backends
  • avoid caching simple delay expressions. Can potentially create use-before-being-defined bugs in vector mode (BUG reported by JS in March 2019)
  • allow some foreign math functions in the Interp backend
  • A.Graef fix for compilation problems with gcc 8.1+ and Qt 5.10+
  • CoreAudio targets working on OS X 10.14 (correct ask the user for audio input access)

Faust version 2.14.4

31 Jan 15:14
Compare
Choose a tag to compare

Change log

  • new cmake based build system.

  • new ‘soundfile’ primitive with support in several faust2xx scripts.

  • better error checking with delay parameter.

  • add -effect auto/effect.dsp parameter in several faust2xx scripts.

  • introduction of a new statement allowing to declare definition-related metadata: declare foo author "me";

  • rework libfaust API.

  • adds support for function level metadata. In order to facilitate cooperation between authors of Faust libraries, in particular the fact that multiple authors can contribute to the same library, a new declare statement is introduced: declare <function> <key> "<value>";. It allows to declare for each function of a library its own metadata, for example its author, its copyrights, its license, etc. Metadata for a function can be anywhere in the file, but we recommend placing it just before the function definition.

  • integration of SAM (SHARC Audio Module) Architecture contributed by Analog Device and Moforte.

  • adds a new option: -scn <name> or --super-class-name <name>, to change the name 'dsp' of the super class.

  • simplification of some degenerated recursive expressions. Degenerated recursions like: (!:2)~_ are simplified (in this case replace by 2).

  • simplify signals during propagations.

  • add multicast address and bundle handing in OSC architecture.

  • add AudioWorklet handling in WebAudio architectures.

  • rework Bela architecture.

  • new semantic for remainder (%) operator. The % operator is now automatically promoted to fmod when one of the two arguments is a float expression.
    TypeExtended annotation extended with a second parameter to control causality check. When this parameter is true, TypeAnnotation rejects non-causal delays. When this parameter is false, TypeAnnotation accepts non-causal delays. TypeAnnotation is called twice: before and after normalization/optimization. During the first call, the parameter is usually set to false (unless the -lcc/--local-causality-check option is passed to the compiler) in order to accept local non-causal delays that can disappear after optimization. On the second call, this parameter is always set to true in order to reject remaining non-causal delays.

  • adds new simplification rule: 0-x ==> -1*x.

  • fix concatenation of delay lines. The expressions (s@n)@m and s@(n+m) are equivalent only when n is constant.

  • add a new libfaustmachine library containing a separated interpreter.

  • new -os option (one sample code generation).

  • improvement of automatic tests (compiler and architectures).

  • numerous bug fixes in the compiler and architectures.

Known issues

We found out several issues with this release. We plan to make a new one soon.