Physical Modeling in Faust
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.
Ready Instruments
For a quick start, fully functional physical modeling
instruments can be used from the physmodels.lib
library.
These *_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:
Ready Elements
The physmodels.lib
library comes with many building
blocks for physical modeling, which can be used to compose
instruments.
These blocks are instrument-specific, as for example:
(pm.)nylonString
(pm.)violinBridge
(pm.)fluteHead
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:
(pm.)chain
(pm.)waveguide
(pm.)lTermination
(pm.)rTermination
(pm.)in
From Scratch
Taking a look at the physmodels.lib
library,
even the bidirectional utilities and basic elements
are made of standard faust functions:
https://github.com/grame-cncm/faustlibraries/blob/master/physmodels.lib
chain(A:As) = ((ro.crossnn(1),_',_ : _,A : ro.crossnn(1),_,_ : _,chain(As) : ro.crossnn(1),_,_)) ~ _ : !,_,_,_; chain(A) = A;
References
2018
- 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.
[details] [BibTeX▼]
2007
- Julius Smith.
Making virtual electric guitars and associated effects using faust.
REALSIMPLE Project, 2007.
URL: https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf.
[details] [BibTeX▼]