The functional principle of Faust is very well suited for programming physical models for sound synthesis, since these are usually described in block diagrams. Working with physical modeling in Faust can happen on many levels of complexity, from using ready instruments to basic operations.
For a quick start, fully functional physical modeling
instruments can be used from the
*_ui_MIDI functions just need to be called in
the process function:
The same algortithms can also be used on a slightly lower level, combining them with custom control and embedding them into larger models:
physmodels.lib library comes with many building
blocks for physical modeling, which can be used to compose
These blocks are instrument-specific, as for example:
Bidirectional Utilities & Basic Elements
The bidirectional utitlities and basic elements in Faust's physical modeling library offer a more direct way of assembling physical models. This includes waveguides, terminations, excitation and others:
Taking a look at the
even the bidirectional utilities and basic elements
are made of standard faust functions:
chain(A:As) = ((ro.crossnn(1),_',_ : _,A : ro.crossnn(1),_,_ : _,chain(As) : ro.crossnn(1),_,_)) ~ _ : !,_,_,_; chain(A) = A;
- Romain Michon, Julius Smith, Chris Chafe, Ge Wang, and Matthew Wright.
The faust physical modeling library: a modular playground for the digital luthier.
In International Faust Conference. 2018.
- Julius Smith.
Making virtual electric guitars and associated effects using faust.
REALSIMPLE Project, 2007.