Top Banner
131

What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Sep 16, 2018

Download

Documents

dokhanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

What's new in Faust

Y. Orlarey, K. Barkati, D. Fober, S. Letz

GRAME

Centre National de Création Musicale

LAC, May 6, 2011

ASTREE, ANR-08-CORD-003 02

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 1 / 42

Page 2: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 3: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 4: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 5: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 6: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 7: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 8: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 9: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 10: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Main caracteristics

Faust Stands for Functional AUdio STream

It's a Synchronous, Functional, Domain Specif Language for signalprocessing

A Faust program describes a signal processor

It's a compiled language (to C++)

Various code back-ends (including parallelization)

It works at sample level

Constant memory and CPU footprint

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 2 / 42

Page 11: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 12: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 13: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 14: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 15: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 16: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 17: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 18: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Brief introduction to FAUST

Design Principles

Speci�cation Language : The user gives the DSP speci�cation, thecompiler generate the most appropriate implementation

Block-Diagram syntax : A textual block-diagram language based onfunction composition

Strong formal basis : A language with a simple and well de�ned formalsemantic

Functional approach : A purely functional programming language forreal-time signal processing

E�cient compiled code : It should be an alternative to C. Thegenerated C++ code should compete with hand-written code

Easy deployment : Multiple native implementations from a single Faustprogram

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 3 / 42

Page 19: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Demo 1 : Simple Sound Generator

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 4 / 42

Page 20: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraFaust syntax is based on a block diagram algebra

5 Composition Operators

(A,B) parallel composition

(A:B) sequential composition

(A<:B) split composition

(A:>B) merge composition

(A~B) recursive composition

2 Constants

! cut

_ wire

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 5 / 42

Page 21: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraParallel Composition

The parallel composition (A,B) is probably the simplest one. It places thetwo block-diagrams one on top of the other, without connections.

Figure: Example of parallel composition (10,*)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 6 / 42

Page 22: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSequential Composition

The sequential composition (A : B) connects the outputs of A to the inputsof B. A[0] is connected to [0]B, A[1] is connected to [1]B, and so on.

Figure: Example of sequential composition ((*,/):+)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 7 / 42

Page 23: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSplit Composition

The split composition (A<: B) operator is used to distribute the outputs ofA to the inputs of B

Figure: example of split composition ((10,20) <: (+,*,/))

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 8 / 42

Page 24: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraMerge Composition

The merge composition (A :> B) is used to connect several outputs of A tothe same inputs of B.

Figure: example of merge composition ((10,20,30,40) :> *)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 9 / 42

Page 25: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraRecursive Composition

The recursive composition (A~B) is used to create cycles in theblock-diagram in order to express recursive computations.

Figure: example of recursive composition +(12345) ~ *(1103515245)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 10 / 42

Page 26: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSame expression in Lambda-Calculus, FP and Faust

Lambda-Calculus

\x.\y.(x+y,x*y) 2 3

FP/FL (John Backus)

[+,*]:<2,3>

Faust

2,3 <: +,*

Figure: block-diagram of 2,3 <: +,*

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 11 / 42

Page 27: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSame expression in Lambda-Calculus, FP and Faust

Lambda-Calculus

\x.\y.(x+y,x*y) 2 3

FP/FL (John Backus)

[+,*]:<2,3>

Faust

2,3 <: +,*

Figure: block-diagram of 2,3 <: +,*

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 11 / 42

Page 28: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSame expression in Lambda-Calculus, FP and Faust

Lambda-Calculus

\x.\y.(x+y,x*y) 2 3

FP/FL (John Backus)

[+,*]:<2,3>

Faust

2,3 <: +,*

Figure: block-diagram of 2,3 <: +,*

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 11 / 42

Page 29: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Block-Diagram AlgebraSame expression in Lambda-Calculus, FP and Faust

Lambda-Calculus

\x.\y.(x+y,x*y) 2 3

FP/FL (John Backus)

[+,*]:<2,3>

Faust

2,3 <: +,*

2

3

+

*

process

Figure: block-diagram of 2,3 <: +,*

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 11 / 42

Page 30: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Demo 2 : Parallelization

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 12 / 42

Page 31: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

So, What's new ?

Modular architecture �lesAutomatic Documentation

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 13 / 42

Page 32: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

So, What's new ?

Modular architecture �lesAutomatic Documentation

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 13 / 42

Page 33: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

So, What's new ?

Modular architecture �lesAutomatic Documentation

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 13 / 42

Page 34: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 35: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 36: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 37: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 38: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 39: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 40: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesMotivations

Easy deployment (one Faust code, multiple audio targets) is anessential feature of the Faust project

This is why Faust programs say nothing about audio drivers or GUItoolkits to be used.

There is a separation of concerns between the audio computation itself,and its usage.

It is the role of the architecture �le to describe how to connect theaudio computation to the external world.

Monolithic architectures, as used so far, works very well but havereached their limits in terms of �exibility and maintainability

A new approach was needed : modular architecture �les easier todevelop, to combine and to maintain

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 14 / 42

Page 41: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 42: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 43: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 44: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 45: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 46: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 47: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 48: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 49: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 50: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 51: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 52: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 53: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 54: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 55: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 56: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 57: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 58: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 59: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 60: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 61: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 62: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 63: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 64: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 65: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesEasy Deployement

Faust can be used to write:

Audio plugins :É LADSPAÉ DSSIÉ Max/MSPÉ VSTÉ PDÉ CSoundÉ SupercolliderÉ PureÉ ChuckÉ OctaveÉ Flash

As well as:

Standalone audioapplications :É JackÉ AlsaÉ CoreAudioÉ iPhone

Mathematicaldocumentation

Graphic block-diagram

Internal tasks DAG

XML User Interfacedescription

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 15 / 42

Page 66: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Demo 3 : Easy Deployment

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 16 / 42

Page 67: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesDSP code

DSP code

To provide easy deployement, the DSP code generated by compiling aFaust program should be pure audio computation, abstracted from anyaudio drivers or GUI toolkit.

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 17 / 42

Page 68: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesDSP class

DSP code

class dsp {

protected:

int fSamplingFreq;

public:

dsp() {}

virtual ~dsp() {}

virtual int getNumInputs () = 0;

virtual int getNumOutputs () = 0;

virtual void buildUserInterface(UI* interface) = 0;

virtual void init(int samplingRate) = 0;

virtual void compute(int len , float ** inputs , float** outputs) = 0;

};

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 18 / 42

Page 69: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesAudio driver and User Interface modules

User Interface Module

Audio Driver Module

The role of the architecture �le is to provide the missing information: theaudio drivers and the user interface. The new modular architecture �lecombines an Audio driver module and one or more User Interface modules.

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 19 / 42

Page 70: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture Files

User Interface Module

Audio Driver Module

DSP code

The Faust compiler wraps the DSP code into the selected architecture �le.For examples faust -a jack-gtk.cpp noise.dsp will wrap the dsp codeof a noise generator into the architecture of jack-gtk standalone application.

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 20 / 42

Page 71: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesThe Audio Class

audio

class audio {

public:

audio() {}

virtual ~audio() {}

virtual bool init(const char*, dsp*) = 0;

virtual bool start () = 0;

virtual void stop() = 0;

};

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 21 / 42

Page 72: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesThe User Interface Class

class UI

{

public:

UI() { }

virtual ~UI() { }

virtual void openFrameBox(const char* label) = 0;

virtual void openTabBox(const char* label) = 0;

virtual void openHorizontalBox(const char* label) = 0;

virtual void openVerticalBox(const char* label) = 0;

virtual void closeBox () = 0;

virtual void addButton(const char* label , float* zone) = 0;

virtual void addToggleButton(const char* label , float* zone) = 0;

virtual void addCheckButton(const char* label , float* zone) = 0;

virtual void addVerticalSlider(const char* label , float* zone , ...) = 0;

virtual void addHorizontalSlider(const char* label , float* zone , ...) = 0;

virtual void addNumEntry(const char* label , float* zone , ...) = 0;

virtual void addNumDisplay(const char* label , float* zone , int precision) = 0;

virtual void addTextDisplay(const char* label , float* zone , const char* names[], ...) = 0;

virtual void addHorizontalBargraph(const char* label , float* zone , ...) = 0;

virtual void addVerticalBargraph(const char* label , float* zone , ...) = 0;

virtual void declare(float* , const char* , const char* ) {}

};

UI

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 22 / 42

Page 73: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesAudio modules Hierarchy

alsaaudio coreaudio

netjackaudio

portaudiooscdsp

audio

Samples via osc mesages

jackaudio

Access netjack2 as a "master" or a "slave"

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 23 / 42

Page 74: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture Files

UI

FUI GUI

Console GTKUI QTGUI OSCUI

Recall & Save state

on file

Command line user interface

GTK+2 Graphic User

InterfaceQT4 Graphic

User Interface

Open Sound Control support

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 24 / 42

Page 75: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Faust Modular Architecture FilesThe jack-gtk architecture

int main(int argc , char *argv [])

{

char appname [256];

char rcfilename [256];

char* home = getenv("HOME");

snprintf(appname , 255, "%s", basename(argv [0]));

snprintf(rcfilename , 255, "%s/.% src", home , appname );

DSP = new mydsp ();

if (DSP ==0) {

cerr << "Unable to allocate Faust DSP object" << endl; exit (1);

}

GUI* interface = new GTKUI (appname , &argc , &argv);

FUI* finterface = new FUI();

GUI* oscinterface = new OSCUI(appname , argc , argv);

DSP ->buildUserInterface(interface );

DSP ->buildUserInterface(finterface );

DSP ->buildUserInterface(oscinterface );

jackaudio audio;

audio.init(appname , DSP);

finterface ->recallState(rcfilename );

audio.start ();

oscinterface ->run();

interface ->run();

audio.stop ();

finterface ->saveState(rcfilename );

delete DSP;

return 0;

}Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 25 / 42

Page 76: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Demo 4 : OSC support

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 26 / 42

Page 77: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMotivations et Principles

Binary and source code preservation of programs is not enough : quickobsolescence of languages, systems and hardware.

We need to preserve the mathematical meaning of these programsindependetly of any programming language.

The solution is to generate automatically the mathematical descriptionof any Faust program

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 27 / 42

Page 78: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMotivations et Principles

Binary and source code preservation of programs is not enough : quickobsolescence of languages, systems and hardware.

We need to preserve the mathematical meaning of these programsindependetly of any programming language.

The solution is to generate automatically the mathematical descriptionof any Faust program

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 27 / 42

Page 79: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMotivations et Principles

Binary and source code preservation of programs is not enough : quickobsolescence of languages, systems and hardware.

We need to preserve the mathematical meaning of these programsindependetly of any programming language.

The solution is to generate automatically the mathematical descriptionof any Faust program

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 27 / 42

Page 80: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMotivations et Principles

Binary and source code preservation of programs is not enough : quickobsolescence of languages, systems and hardware.

We need to preserve the mathematical meaning of these programsindependetly of any programming language.

The solution is to generate automatically the mathematical descriptionof any Faust program

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 27 / 42

Page 81: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTools provided

The easiest way to generate the complete mathematicaldocumentation is to call the faust2mathdoc script on a Faust �le.

This script relies on a new option of the Faust compile : -mdoc

faust2mathdoc noise.dsp

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 28 / 42

Page 82: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTools provided

The easiest way to generate the complete mathematicaldocumentation is to call the faust2mathdoc script on a Faust �le.

This script relies on a new option of the Faust compile : -mdoc

faust2mathdoc noise.dsp

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 28 / 42

Page 83: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTools provided

The easiest way to generate the complete mathematicaldocumentation is to call the faust2mathdoc script on a Faust �le.

This script relies on a new option of the Faust compile : -mdoc

faust2mathdoc noise.dsp

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 28 / 42

Page 84: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTools provided

The easiest way to generate the complete mathematicaldocumentation is to call the faust2mathdoc script on a Faust �le.

This script relies on a new option of the Faust compile : -mdoc

faust2mathdoc noise.dsp

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 28 / 42

Page 85: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationFiles generated by Faust2mathdoc noise.dsp

È noise-mdoc/

È cpp/

� noise.cpp

È pdf/

� noise.pdf

È src/

� math.lib

� music.lib

� noise.dsp

È svg/

� process.pdf

� process.svg

È tex/

� noise.pdf

� noise.tex

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 29 / 42

Page 86: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 87: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 88: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 89: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 90: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 91: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 92: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 93: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 94: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 95: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationTags

The documentation can be generated fully automatically from aregular Faust program.

It can also be controled by embedding documentation statements inFaust programs.

A documentation statements starts with an opening <mdoc> tag andends with a closing </mdoc> tag.

It contains arbitraty text, typically in LATEX format, as well as �vesub-tags :É <diagram>É <equation>É <metadata>É <notice/>É <listing/>

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 30 / 42

Page 96: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationDiagram tags

The generation of the graphical block-diagram of a Faust expressioncan be requested using <diagram>...</diagram> tags.

For example: <diagram> +~_ </diagram> will produce the embeddeddiagram:

Expression diagram

+

process

diagram_0

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 31 / 42

Page 97: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationDiagram tags

The generation of the graphical block-diagram of a Faust expressioncan be requested using <diagram>...</diagram> tags.

For example: <diagram> +~_ </diagram> will produce the embeddeddiagram:

Expression diagram

+

process

diagram_0

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 31 / 42

Page 98: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationDiagram tags

The generation of the graphical block-diagram of a Faust expressioncan be requested using <diagram>...</diagram> tags.

For example: <diagram> +~_ </diagram> will produce the embeddeddiagram:

Expression diagram

+

process

diagram_0

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 31 / 42

Page 99: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationDiagram tags

The generation of the graphical block-diagram of a Faust expressioncan be requested using <diagram>...</diagram> tags.

For example: <diagram> +~_ </diagram> will produce the embeddeddiagram:

Expression diagram

+

process

diagram_0

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 31 / 42

Page 100: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationEquation tag

The generation of the mathematical equations of a Faust expressioncan be requested using <equation>...</equation> tags.

For example: <equation> +~_ </equation> will produce thefollowing description:

Expression equations

Output signal y such that

y(t) = r1(t)

Input signal x

Intermediate signal r1 such that

r1(t) = x(t)+ r1(t−1)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 32 / 42

Page 101: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationEquation tag

The generation of the mathematical equations of a Faust expressioncan be requested using <equation>...</equation> tags.

For example: <equation> +~_ </equation> will produce thefollowing description:

Expression equations

Output signal y such that

y(t) = r1(t)

Input signal x

Intermediate signal r1 such that

r1(t) = x(t)+ r1(t−1)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 32 / 42

Page 102: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationEquation tag

The generation of the mathematical equations of a Faust expressioncan be requested using <equation>...</equation> tags.

For example: <equation> +~_ </equation> will produce thefollowing description:

Expression equations

Output signal y such that

y(t) = r1(t)

Input signal x

Intermediate signal r1 such that

r1(t) = x(t)+ r1(t−1)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 32 / 42

Page 103: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationEquation tag

The generation of the mathematical equations of a Faust expressioncan be requested using <equation>...</equation> tags.

For example: <equation> +~_ </equation> will produce thefollowing description:

Expression equations

Output signal y such that

y(t) = r1(t)

Input signal x

Intermediate signal r1 such that

r1(t) = x(t)+ r1(t−1)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 32 / 42

Page 104: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMetadata tags

The <metadata>...</metadata> tags allow to refer Faust metadatasdeclarations

For example if the Faust code declares:

declare author "Albert";

then occurences in the documentation of:

<metadata >author </metadata >

will be replaced by: "Albert".

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 33 / 42

Page 105: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMetadata tags

The <metadata>...</metadata> tags allow to refer Faust metadatasdeclarations

For example if the Faust code declares:

declare author "Albert";

then occurences in the documentation of:

<metadata >author </metadata >

will be replaced by: "Albert".

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 33 / 42

Page 106: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMetadata tags

The <metadata>...</metadata> tags allow to refer Faust metadatasdeclarations

For example if the Faust code declares:

declare author "Albert";

then occurences in the documentation of:

<metadata >author </metadata >

will be replaced by: "Albert".

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 33 / 42

Page 107: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMetadata tags

The <metadata>...</metadata> tags allow to refer Faust metadatasdeclarations

For example if the Faust code declares:

declare author "Albert";

then occurences in the documentation of:

<metadata >author </metadata >

will be replaced by: "Albert".

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 33 / 42

Page 108: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationMetadata tags

The <metadata>...</metadata> tags allow to refer Faust metadatasdeclarations

For example if the Faust code declares:

declare author "Albert";

then occurences in the documentation of:

<metadata >author </metadata >

will be replaced by: "Albert".

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 33 / 42

Page 109: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationNotice tag

The <notice/> empty-element tag is used to generate theconventions used in the mathematical equations.

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 34 / 42

Page 110: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationNotice tag

The <notice/> empty-element tag is used to generate theconventions used in the mathematical equations.

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 34 / 42

Page 111: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 112: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 113: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 114: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 115: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 116: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 117: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Automatic Mathematical DocumentationListing tag

The <listing/> tag is used to generate the listing of the Faust

program.

It can be customized with three boolean attributes that can take thevalue true or false:É mdoctags when true (the default) indicates to include the mdoc comments

into the listing.É dependencies when true (the default) indicates to include the code of the

imported libraries into the listing.É distributed when true (the default) indicates to respect the distribution

of faust code and mdoc tags.

Example

<listing mdoctags="true"

dependencies="false"

distributed="false" />

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 35 / 42

Page 118: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

Demo 5 : Documentation

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 36 / 42

Page 119: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Online Compiler

http://faust.grame.fr

No installation required

Compile to C++ as well as binary (for Linux and Windows)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 37 / 42

Page 120: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Online Compiler

http://faust.grame.fr

No installation required

Compile to C++ as well as binary (for Linux and Windows)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 37 / 42

Page 121: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Online Compiler

http://faust.grame.fr

No installation required

Compile to C++ as well as binary (for Linux and Windows)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 37 / 42

Page 122: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Online Compiler

http://faust.grame.fr

No installation required

Compile to C++ as well as binary (for Linux and Windows)

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 37 / 42

Page 123: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Distribution on Source Forge

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/faudiostreamfaust

cd faust; make; sudo make install

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 38 / 42

Page 124: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Distribution on Source Forge

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/faudiostreamfaust

cd faust; make; sudo make install

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 38 / 42

Page 125: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FAUST Distribution on Source Forge

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/faudiostreamfaust

cd faust; make; sudo make install

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 38 / 42

Page 126: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FaustWorks IDE

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/FaustWorks

cd FaustWorks; qmake; make

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 39 / 42

Page 127: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FaustWorks IDE

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/FaustWorks

cd FaustWorks; qmake; make

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 39 / 42

Page 128: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesUsing FaustWorks IDE

git clonegit://faudiostream.git.sourceforge.net/gitroot/faudiostream/FaustWorks

cd FaustWorks; qmake; make

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 39 / 42

Page 129: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesBooks with a FAUST related content

Figure: �Introduction To Digital Filters with Audio Applications�, prof. Julius O.

Smith III, W3K publishing

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 40 / 42

Page 130: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesFAUST Introduction

Audio Signal Processing in Faust∗

Julius O. Smith III

Center for Computer Research in Music and Acoustics (CCRMA)

Department of Music, Stanford University, Stanford, California 94305 USA

Abstract

Faust is a high-level programming language for digital signal processing, with special sup-port for real-time audio applications and plugins on various software platforms including Linux,Mac-OS-X, iOS, Windows, and embedded computing environments. Audio plugin formats sup-ported include VST, LADSPA, Pd, Max/MSP, SuperCollider, and more. This tutorial providesan introduction focusing on a simple example of white noise filtered by a variable resonator.

Contents

1 Introduction 31.1 Installing Faust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 A Note About Using Faust on CCRMA Machines . . . . . . . . . . . . . . . 41.2 Installing FaustWorks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Faust Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Primer on the Faust Language 52.1 Basic Signal Processing Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Block Diagram Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Infix Notation Rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.6 Function Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.7 Term Rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.8 Fixing the Number of Input and Output Signals . . . . . . . . . . . . . . . . . . . . 92.9 Naming Input Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.10 Naming Output Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

∗This document is an extended subset of http://ccrma.stanford.edu/realsimple/faust/.

1

Figure: �Audio Signal Processing in Faust�, Julius O. Smith III, CCRMA, Stanford

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 41 / 42

Page 131: What's new in Faust - Linuxaudio.orglac.linuxaudio.org/2011/download/20110506-Faust-LAC11.pdf · What's new in Faust Y. Orlare,y K. Barkati, D. Fober, S. Letz GRAME Centre National

ResourcesFAUST Quick Reference

Figure: �Faust Quick Reference�, Grame

Y. Orlarey, K. Barkati, D. Fober, S. Letz (GRAME Centre National de Création Musicale)What's new in Faust May 2011 42 / 42