introdução a faust -...
TRANSCRIPT
![Page 1: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/1.jpg)
Introducao a Faust
Gilmar Dias Andre J. Bianchi
22/11/2012
![Page 2: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/2.jpg)
A linguagem
Exemplos
Conclusao
![Page 3: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/3.jpg)
A linguagem
![Page 4: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/4.jpg)
FAUST - Functional AUdio STream
I E uma linguagem de especificacao (de processadores desinais).
I Compilada: FAUST -> C++ -> binarios executaveis.
I Opera no nıvel amostral.
I Semantica simples e bem definida.
I Orientada a diagramas de bloco utilizando programacaofuncional.
I Pode ser utilizado em diversas “arquiteturas”.
I Descreve um processador de sinais.
![Page 5: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/5.jpg)
IDE Experimental - FaustWorks
Requisitos:
I Faust
I Qt4
Download:
I http://faust.grame.fr/
Instalacao:
$ qmake-qt4
$ make
![Page 6: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/6.jpg)
Estrutura de um programa
Expressoes:
I Bloco primitivo.
I Combinacao de expressoes via operadores de composicao.
I Representa um diagrama de blocos.
Definicoes:
I Identifiacao de expressoes:
nome_do_bloco = express~ao ;
I O nome do bloco deve comecar com letra, pode ter sımbolose ‘ ’.
![Page 7: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/7.jpg)
Estrutura de um programa
Figure: Definicoes em um diagrama de blocos
![Page 8: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/8.jpg)
Estrutura de um programa
Programa em Faust: sequencia desordenada de definicoes.
I Apenas uma definicao e obrigatoria:
process
Comentarios:
I Como em C/C++
//, /* ... */
![Page 9: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/9.jpg)
Estrutura de um programa
Exemplo:
1 declare name "noise";
2 declare copyright "(C)GRAME 2006";
3
4 import("music.lib");
5
6 // noise level controlled by a slider
7 process = noise * vslider("volume", 0, 0, 1, 0.1);
![Page 10: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/10.jpg)
A linguagem - PrimitivasBlocos de conexao (plug boxes):
I Identidade ( ).
Figure: Bloco identidade
I Corte (!).
Figure: Bloco corte
![Page 11: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/11.jpg)
A linguagem - Primitivas
Operadores matematicos:
I Aritmeticos (+, -, *, / e %).
Figure: Blocos de operadores aritimeticos
I Comparacao (<=, >=, <, >, == e !=).
![Page 12: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/12.jpg)
A linguagem - Primitivas
I Operadores bit a bit (<<, >>, &, | e ^).
I Constantes:
I Literais em C++I int: ‘#’, float: ‘#.#’
![Page 13: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/13.jpg)
A linguagem - Primitivas
I Conversoes de tipo em Faust (casting):
Figure: Conversoes de tipo em Faust
I Funcoes estrangeiras:
ffunction(prototipo, include, biblioteca)
![Page 14: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/14.jpg)
Primitivas - Memorias
Figure: Atraso simples
![Page 15: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/15.jpg)
Primitivas - Memorias
I Tabela somente de leitura
![Page 16: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/16.jpg)
Primitivas - Memorias
Figure: Tabela de leitura e escrita
![Page 17: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/17.jpg)
A linguagem - Primitivas
Figure: Chaves de selecao: select2 e select3
![Page 18: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/18.jpg)
Primitivas - Interface grafica com o usuario
Figure: Botao - button("label")
![Page 19: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/19.jpg)
Primitivas - Interface grafica com o usuario
Figure: Checkbox: checkbox("label")
![Page 20: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/20.jpg)
Primitivas - Interface grafica com o usuario
Figure: Sliders: hslider("label", inicio, fim, max, passo)
![Page 21: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/21.jpg)
Primitivas - Interface grafica com o usuario
Figure: Entrada numerica: nentry("label", inicio, fim, max,
passo)
![Page 22: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/22.jpg)
Primitivas - Interface grafica com o usuario
I Grupos hgroup, vgroup, tgroup
Figure:
tgroup("Sliders", (A,B,C))
![Page 23: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/23.jpg)
A linguagem - Operadores de composicaoI Serial (:)
Figure: Operador serial
![Page 24: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/24.jpg)
A linguagem - Operadores de composicao
I Serial (:)
Figure: Operador serial
![Page 25: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/25.jpg)
A linguagem - Operadores de composicao
I Serial (:)
Figure: Operador serial
![Page 26: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/26.jpg)
A linguagem - Operadores de composicao
I Paralelo (,)
Figure: Operador paralelo
![Page 27: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/27.jpg)
A linguagem - Operadores de composicao
I Split (<:)
Figure: Operador split
![Page 28: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/28.jpg)
A linguagem - Operadores de composicao
I Split (<:)
Figure: Operador split
![Page 29: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/29.jpg)
A linguagem - Operadores de composicao
I Split (<:)
Figure: Operador split
![Page 30: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/30.jpg)
A linguagem - Operadores de composicao
I Merge (:>)
Figure: Operador merge
![Page 31: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/31.jpg)
A linguagem - Operadores de composicao
I Recursivo (~)
Figure: Operador recursivo
![Page 32: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/32.jpg)
Operadores de composicao
I Recursivo (~)
Figure: Operador recursivo
![Page 33: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/33.jpg)
Precedencia de operadores
Figure: Precedencia
![Page 34: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/34.jpg)
Precedencia de operadores
Figure: Precedencia
![Page 35: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/35.jpg)
A linguagem - Abstracoes
Figure: Abstracoes
A(x,y) = (x,y):(y,x)
B = ...
C = ...
D = A(B,C)
![Page 36: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/36.jpg)
Acucar sintatico
Operadores matematicos podem ser usados de forma mais simples:
A/B = (A,B) : /
/(A) = (_,A) : /
![Page 37: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/37.jpg)
Exemplos
![Page 38: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/38.jpg)
Exemplo 1
Onda quadrada
![Page 39: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/39.jpg)
Onda quadrada: blocos basicos
Figure: Um contador de 0 ate N-1
![Page 40: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/40.jpg)
Onda quadrada: blocos basicos
Figure: Gerador de onda quadrada.
![Page 41: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/41.jpg)
Onda quadrada: sliders
Elementos de interface grafica:
vslider(str, cur, min, max, step)
hslider(str, cur, min, max, step)
![Page 42: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/42.jpg)
Onda quadrada: codigo
1 // A square wave oscillator
2 //---------------------------------
3 T = hslider("Period",1,0.1,100.,0.1); // Period (ms)
4 N = 44100./1000.*T:int; // The period in samples
5 a = hslider("Cyclic ratio",0.5,0,1,0.1); // Cyclic ratio
6 i = +(1)~%(N):-(1); // 0,1,2...,n
7 process = i,N*a : < : *(2) : -(1) ;
![Page 43: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/43.jpg)
Onda quadrada: demo
Demonstracao:
./square -cyclicratio 0.5 -n 44100 -period 100
![Page 44: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/44.jpg)
Exemplo 2: Onda senoidal
![Page 45: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/45.jpg)
Onda senoidal: blocos basicos
Figure: Tempo discreto: 0, 1, 2, 3, . . .
![Page 46: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/46.jpg)
Onda senoidal: blocos basicos
Figure: Forma de onda senoidal
![Page 47: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/47.jpg)
Onda senoidal: blocos basicos
Figure: Calculo da fase
![Page 48: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/48.jpg)
Onda senoidal: leitura de tabela
Figure: Forma de onda senoidal
![Page 49: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/49.jpg)
Onda senoidal: codigo
1 //-----------------------------------------------
2 // Sinusoidal Oscillator
3 //-----------------------------------------------
4 // Mathematical functions & constants
5 //------------------------------------
6 sin = ffunction(float sin (float), <math.h>, "");
7 floor = ffunction(float floor (float), <math.h>, "");
8 PI = 3.1415926535897932385;
![Page 50: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/50.jpg)
Onda senoidal: codigo
1 // Oscillator definition
2 //--------------------------
3 tablesize = 40000 ;
4 samplingfreq = 44100. ;
5 time = (+(1)~_) - 1; // O,1,2,3,...
6 sinwaveform = time*(2*PI)/tablesize : sin;
7 decimal = _ <: -(floor);
8 phase(freq) = freq/samplingfreq :
9 (+ : decimal) ~ _ : *(tablesize) : int ;
10 osc(freq) = phase(freq) : rdtable(tablesize,sinwaveform);
![Page 51: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/51.jpg)
Onda senoidal: codigo
1 // User interface
2 //----------------
3 vol = hslider("volume", 0, 0, 1, 0.001);
4 freq = hslider("freq", 400, 0, 15000, 0.1);
5 //----------------
6 process = osc(freq) * vol;
![Page 52: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/52.jpg)
Onda senoidal: demo
Demonstracao:
./sineosc -freq 440 -n 44100 -volume 1
![Page 53: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/53.jpg)
Exemplo 3: Gerador de ruıdo aleatorio
![Page 54: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/54.jpg)
Gerador de ruıdo aleatorio: codigo
1 //-----------------------------------------------
2 // Two noises compared
3 //-----------------------------------------------
4
5 RANDMAX = 2147483647;
6
7 random1 = ffunction(int random (), <stdlib.h>, "");
8 noise1 = (random1 << 1) * (1.0/RANDMAX);
9
10 random2 = (*(1103515245)+12345) ~ _ ;
11 noise2 = random2 * (1.0/RANDMAX);
12
13 compare(a,b) = (a*(1-button("Switch")) +
14 b*button("Switch"));
15
16 process = compare(noise1, noise2) *
17 hslider("volume", 0, 0, 1, 0.01) <: _,_ ;
![Page 55: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/55.jpg)
Gerador de ruıdo aleatorio: demo
Demonstracao: comparacao de graficos e som.
![Page 56: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/56.jpg)
Exemplo 4: Karplus Strong
![Page 57: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/57.jpg)
Karplus Strong: demo
Demonstracao: tosco e bem feito.
![Page 58: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/58.jpg)
Exemplo 5: Freeverb
![Page 59: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/59.jpg)
Freeverb: codigo
1 monoReverb(fb1, fb2, damp, spread)
2 = _ <: comb(combtuningL1+spread, fb1, damp),
3 comb(combtuningL2+spread, fb1, damp),
4 comb(combtuningL3+spread, fb1, damp),
5 comb(combtuningL4+spread, fb1, damp),
6 comb(combtuningL5+spread, fb1, damp),
7 comb(combtuningL6+spread, fb1, damp),
8 comb(combtuningL7+spread, fb1, damp),
9 comb(combtuningL8+spread, fb1, damp)
10 +>
11 allpass (allpasstuningL1+spread, fb2)
12 : allpass (allpasstuningL2+spread, fb2)
13 : allpass (allpasstuningL3+spread, fb2)
14 : allpass (allpasstuningL4+spread, fb2)
15 ;
![Page 60: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/60.jpg)
Freeverb: codigo
1 stereoReverb(fb1, fb2, damp, spread)
2 = + <: monoReverb(fb1, fb2, damp, 0), monoReverb(fb1, fb2, damp, spread);
![Page 61: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/61.jpg)
Freeverb: demo
Demonstracao: FaustWorks e LADSPA.
![Page 62: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/62.jpg)
Conclusao
![Page 63: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/63.jpg)
Outros exemplos
I capture.
I dbmeter.
I echo.
I noise.
I multiband-filter.
![Page 64: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/64.jpg)
Outras arquiteturas
I Alsa + {GTK,QT}I Csound
I iPhone
I jack {GTK,QT}I Ladspa
I lv2
I Max MSP
I Octave
I OSS
I Pure Data
I VST
I . . . e muitas outras.
![Page 65: Introdução a Faust - compmus.ime.usp.brcompmus.ime.usp.br/sites/ime.usp.br.compmus/files/faust-intro_0.pdf · FAUST - Functional AUdio STream I E uma linguagem de especi ca˘c~ao](https://reader033.vdocuments.net/reader033/viewer/2022041810/5e578371dbceac53c5328e50/html5/thumbnails/65.jpg)
Fim!
Obrigado pela atencao!
I Faust: http://faust.grame.fr/
I Contato: {grodias,ajb}@ime.usp.br
I Grupo de Computacao Musical do IME/USP:http://compmus.ime.usp.br/