Waveguide Strings in Faust
Waveguides are physical models of one-dimensional oscillators. They can be used for emulating strings, reeds and other components. A more detailed explanation is featured in the Sound Synthesis Introduction. The following example implements a string with losses, excited with a triangular function.
Faust Code
Load this example in the Faust online IDE for a quick start.
import("all.lib"); // use '(pm.)l2s' to calculate number of samples // from length in meters: segment(maxLength,length) = waveguide(nMax,n) with{ nMax = maxLength : l2s; n = length : l2s/2; }; // one lowpass terminator fc = hslider("lowpass",1000,10,10000,1); rt = rTermination(basicBlock,*(-1) : si.smooth(1.0-2*(fc/ma.SR))); // one gain terminator with control gain = hslider("gain",0.99,0,1,0.01); lt = lTermination(*(-1)* gain,basicBlock); idString(length,pos,excite) = endChain(wg) with{ nUp = length*pos; nDown = length*(1-pos); wg = chain(lt : segment(6,nUp) : in(excite) : out : segment(6,nDown) : rt); // waveguide chain }; length = hslider("length",1,0.1,10,0.01); process = idString(length,0.15, button("pluck")) <: _,_;
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▼]