Releases: grame-cncm/faust
Faust version 2.50.6
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 methodsgetStaticNumInputs/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) infaust2jack
,faust2cagtk
,faust2plot
andfaust2csvplot
- Latency metadata added in
faust2juce
- Add support for Trill Craft sensors in
faust2bela
- Allows 0 iterations for
par
,seq
,sum
andprod
- 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 infaust2max6
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 inonePoleSwitching
and improved
Faust version 2.41.1
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 indynamic-jack-gtk
andpoly-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 infaustgen~
'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. CorrectbuildPath
.- JUCE architecture float/double and
prepareToPlay
handling. - Make broken
-ocpp
mode work again. - Some variables were not correctly moved from
compute
tocomputeThread
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
inma.MAX
. - Faster
ba.peakholder
version.
Faust version 2.40.0
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 replacefaust2supercollider
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 infaust2max6
- 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' infaust2api
- 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
andfaust2msp
- 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
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
andhighest
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
inma.MAX
- Correct
dm.exciter
against division by zero - Add interval protection in
linear2db
andpole2tau
- Add
ma.copysig
function - Fix
pulse(p)
when p is modulated (bug reported by DS)
Faust version 2.33.1
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
andfaust2object
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 tofaust2sndfile
. - Add
-edit
option indynamic-jack-gtk
. - Add
-ct
option infaust2sndfile
. - Add
-double
support withsoundfile
. - Make
-inj foo.cpp
option correctly work infaust2object
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 tofaust2juce
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 tofaust2object
. - 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 infaust2sndfile.
- Complete
createSRAdapter
. - Add
-us/-ds/-filter
options tofaust2object
,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
andfaust2csvplot
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
todemos.lib
. - Add
jprev
andgreyhole
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
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~
andfaust2msp/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 infaust2jack
andfaust2jaqt
- add
-multifun
option infaust2object
- add
-bs <frames>
and-control
options infaustbench
- 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
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 infaust2juce
- 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
-jucemodulesdir
option tofaust2juce
- improve
inter-tracer
- add
-single
option infaust2max6
- add scrolling in GTKUI
- add MIR support in interp/comp mixed mode
- new
-gramophone
option infaust2esp32
- 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 infaust2jackconsole
- 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 tofaust2max6/faust2msp
- add a normalisation rule 'abs(abs(x)) = abs(x)'
- add
-control
option infaustbench-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 tofaustbench
- add
-bs
option tosoul-faust-tester
andfaustbench-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
andtablesize
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
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
andsoul-faust-player
tools
Deprecated
Fixed bugs
- improve LLVM (backend + Interp) and wasm/wasm select implementation
- correct
faust2jackrust
andfaust2portaudiorust
- 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
andfaust2csvplot
. 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
topospass
- new mi.lib library
- name change:
conj
->cconj
- add
ssbf
andhilbert
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
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
andfaust2api
- remove old iOS JACK code
Fixed bugs
- correct CoreAudio architecture and JSON generation
- correct gyroscope activation in
faust2android
, fix a bug inFaustPolyEngine::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
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 severalfaust2xx
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.