FAUST SYNTHESIS TOOLKIT: A SET OF LINEAR AND NONLINEAR PHYSICAL MODELS FOR FAUST
      			 
CIEREC, EA 3068				Center for Computer Research in Music and Acoustics
Université Jean Monnet		 and	(CCRMA) Stanford University
F-42023, Saint-Etienne, France	 	Palo Alto, CA 94305, USA
			      
			 

1/ What is it?
--------------

The FAUST Synthesis ToolKit is a set virtual musical instruments written in the FAUST 
programming language and based on waveguide algorithms and modal synthesis. Most of them
were inspired by instruments implemented in the Synthesis ToolKit and the program SynthBuilder.

The STK is developed since 1996 by P. R. Cook and G. P. Scavone. It is a set of open 
source audio signal processing and algorithmic synthesis classes written in the C++ programming
language that can be used in the development of music synthesis and audio processing
software (https://ccrma.stanford.edu/software/stk/).

On the other hand, SynthBuilder was a program used at Stanford's CCRMA (Center for Computer Research 
in Music and Acoustics) in the nineties to implement physical models of musical instruments. Most
of its algorithms use the waveguide synthesis technique but some of them are also based on modal synthesis.

Our attention has partly been focused on the pedagogical aspect of the implemented objects. Indeed, 
we tried to make the FAUST code of each objects as optimized and as expressive as possible.

Some of the instruments in the (FAUST-STK) use nonlinear allpass filters to create interesting and 
new behaviors. Also, most of them can be used with gesture following datas (see the /gesture-following folder
for some examples).

2/ Which instruments?
---------------------

WIND INSTRUMENTS

     - A simple clarinet (clarinet.dsp),
     - A clarinet with a tone hole model (blowHole.dsp),
     - A flute (flutestk.dsp),
     - A pan-flute (flute.dsp),
     - A brass instrument that can be used as a trumpet, a trombon, a french horn, etc. (brass.dsp),
     - A simple saxophone (saxophony.dsp),
     - A bottle where it is possible to blow threw the neck to make sound (blowBotle.dsp).

STRING INSTRUMENTS

     - An acoustic finger bass (bass.dsp),
     - A bowed string instrument that can be used as a cello, a violin, etc. (bowed.dsp),
     - A simple sitar (sitar.dsp),
     - A nonlinear extended Karplus-Strong (NLFeks.dsp).  

KEYBOARDS INSTRUMENTS

     - A piano that uses commuted waveguide synthesis (piano.dsp),
     - An harpsichord (harpsi.dsp).

PERCUSSION INSTRUMENTS

     - A tibetan bowl (tibetanBowl.dsp),
     - A wooden bare (uniBar.dsp),
     - An iron bare (tunedBar.dsp),
     - A glass bare (glassHarmonica.dsp),
     - A set of percussion instruments that use modal synthesis (modalBar.dsp). 

OTHER  

     - A voice synthesizer (voiceForm.dsp),
     - A FM synthesizer that uses an nonlinear allpass filter (NLFfm.dsp).

3/ Organisation of the distribution and remarks
-----------------------------------------------

Most of the instruments implemented in the FAUST-STK use functions declared in instrument.lib so
this file is required for compilation. Also, a few instruments use datas that are stored in external
C++ functions (.h).

The "pd-patches" folder contains examples of use of the FAUST-STK instruments in PureData (faust2pd
needs to be install on your computer to use these examples). 

The FAUST-STK instruments are all monophonic. If you wish to make them polyphonic, we recommend you
to compile them for PureData and to use faust2pd ("make pdpoly2" or "make pdpoly4" or "make pdpoly6" or
"make pdpoly8" where 2, 4, 6 and 8 are the number of voices). For more informations about that, 
you can look at the examples in the pd-patches/ folder. 

You can find in the gesture-following/ folder an improved version of bowed.dsp that uses gesture following
datas in PureData (first, type "make" in a terminal and then open playMe.pd). This work has been done with
the help of E. Maestre (MTG, Barcelona).

The instruments from the Faust-STK have been tested with the OSC support for FAUST implemented with some
of the architecture files (jackqt, jackgtk, etc.).

3/ How to compile?
------------------

In order to compile the instruments, the latest FAUST repository must be installed on your computer as well 
as all the required dependencies for the FAUST architecture you wish to use. 

Run any of the faust compilation script with one of the .dsp file contained in this directory. For example:

faust2caqt *

will compile all the objects as Core Audio Qt applications...

4/ Acknowledgments
------------------

This work has been carried out in the frame of the ASTREE project (Analyse et Synthèse Temps REEl), 
supported by the Agence Nationale de Recherche (ANR-08-CORD-003) at Stanford's CCRMA (Center for 
Computer Research in Music and Acoustics).

Special thanks to J.O. Smith, Y. Orlarey, E. Maestre, S. Letz and L. Pottier for their support and help.

Thanks also to my colleagues from the CCRMA team for all their suggestions and good ideas.

5/ Questions and suggestions
----------------------------

About FAUST-STK: rmichon@ccrma.stanford.edu or rmnmichon@gmail.com

About FAUST: https://lists.sourceforge.net/lists/listinfo/faudiostream-users  




Romain Michon
