O CSound é uma ferramenta poderosíssima
para qualquer compositor ou projetista de som (sound designer) mas
é um software complicado que exige bastante
dedicação e treino.
O usuário do CSound é muitas vezes chamado de "escultor de som".
O melhor jeito de aprender é começar
por algum tutorial e experimentar na prática.
Como o CSound funciona
O CSound é um sintetizador de som que funciona em
dois passos:
Traduz informações sobre
"instrumentos" contidos num arquivo texto que define a orquestra .orc em
estruturas de dados na memória que armazenam
informações sobre o timbre desses instrumentos.
Lê um arquivo texto de partitura (score) .sco contendo
as notas, durações, intensidades e instrumentos e
gera um arquivo de áudio correspondente à
partitura tocada pelos instrumentos.
Em geral, as peças musicais, estudos e exemplos
vem em pares de arquivos .orc e .sco
No passado, a geração do arquivo era
sempre em lote; rodavasse o CSound por vários minutos para
gerar alguns segundos de som, às vezes por várias
horas para gerar alguns minutos.
Hoje em dia:
num computador mediano dá prá fazer
quase tudo em tempo real, então não
necessariamente a saída precisa ser gravada num arquivo,
pode ser jogada na placa de som diretamente.
além da arquivo de partitura .sco, a
definição das notas pode ser feita por um arquivo
MIDI, por um dispositivo MIDI (p.ex. teclado), ou por outros
dispositivos tipo teclado ou mouse.
No tutorial do Cap. 1 do CSound Book, que adotaremos, o
autor criou seis estudos etude1.sco a etude6.sco
Cada estudo possui a sua orquestra etude*.orc e cada
orquestra possui 6 instrumentos cada.
Os instrumentos estão também
repetidos em 101.orc até 143.orc
O arquivo Orquestra .orc
Possui duas seções:
cabeçalho e instrumentos.
Exemplo de header:
sr
=
44100 ;sample
rate
kr
=
4410 ;control
rate
ksmps =
10
;número de amostras num período de controle
nchnls =
1
;número de canais
Sempre ksmps
= sr / kr
nchnls
pode ser 1(mono), 2(stereo), 4(quadrifônico); na verdade,
desde o CSound 4.13 pode ter quantos canais quiser.
Seção dos instrumentos
Instrumentos são criados conectando-se
módulos (opcodes)
para gerar ou modificar sinais digitais.
sinais são representados por
variáveis, símbolos ou rótulos que
podem ser interligados (patched)
de um módulo para outro.
a palavra patch é muito usada em computação musical e deriva dos patch cords
que levavam os sinais analógicos de um lugar a outro nos
sintetizadores dos anos 50, 60 e 70; como aqueles cabos das
telefonistas do início do século XX.
instrumentos recebem um número e
são definidos entre os delimitadores instr e endin
A sintaxe de um comando genérico é
Output
Opcode
Arguments, ... ,
...
; Comments (optional)
Um dos comandos mais usados é o
oscilador baseado em consultas a tabelas, oscil,
cuja sintaxe é
instr 102 usa foscil, um sintetizador de FM com 2 osciladores
instr 103 usa buzz, uma adição de senóides harmonicamente relacionadas
instr 104 usa pluck, um sintetizador guiado por tabelas que usa o algoritmo de Karplus-Strong
instr 105 usa grain, um sintetizador granular assíncrono
instr 106 usa loscil, um sintetizador baseado em tabelas de formas de onda
Estes 6 instrumentos utilizam 6 diferentes técnicas de
síntese de som que englobam todas as técnicas utilizadas
por qualquer sintetizador comercial disponível no mercado.
O arquivo Partitura (score) .sco
Também possui duas seções: tabelas e notas
Na primeira parte, o CSound usa sub-rotinas quem desenham
funções (GEMS) para gerar tabelas de
funções (f-tables) ou preenchem estas tabelas a partir de arquivos de som lidos do disco.
Na segunda parte, o compositor define as notas e seus respectivos
parâmetros (freqüência, amplitude, taxa de vibrato,
tempo de ataque, etc.)
Rotinas GEN
CSound vem com mais de 20 subrotinas pré-definidas para a geração de tabelas com formas de onda.
Por exemplo
GEN5 e GEN7 constroem funções de segmentos de curvas exponenciais ou segmentos de reta.
GEN9 e GEN10 compõem somas ponderadas de senóides.
GEN20 compõem funções usadas para análise de espectro e envoltórias de grãos.
GEN21 computa tabelas a partir de diferentes distribuições de probabilidades: gaussiana, Poisson, Cauchy, etc.
GEN1 transfere de um arquivo de áudio no disco para uma tabela em memória.
Qual função usar em qual momento é uma escolha do escultor para criar a sua escultura sonora.
Sintaxe da primeira parte do arquivo .sco
uma cláusula de função (f-statement) usa a seguinte sintaxe:
f number
load-time table-size GEN Routine
parameter1 parameter...; comment
exemplo:
f
101
0
16
10
1
; 1 cycle of a sinewave
é uma senóide com 16 pontos
em geral as funções tem que ser potência de 2
(dependendo do uso). tipicamente elas tem comprimentos entre 512 (0,5
K) e 8192 (8K).
O etude1.sco em sua .sco usa GEN10, GEN20 e GEN1:
f 1 0 4096 10 1 ; um ciclo de senóide
f 2 0 4096 10 1 .5 .333 .25 .2 .166 .142 .125 .111 .1 .09 .083 .076 .071 .066 .062
; primeiros 16 harmônicos de uma onda dente de serra
f 3 0 4097 20 2 1 ; janela de Hanning para ser usada em síntese granular
f 4 0 0 1 "sing.aif" 0 4 0 ; arquivo no formato AIFF
No último caso, como o tamanho dado foi 0, o tamanho é dado pelo número de amostras no arquivo AIFF.
Sintaxe da segunda parte do arquivo .sco
é composta por uma seqüência de note-statements ou i-statements, um por linha.
cada i-statement instrui um instrumento a tocar uma nota.
são determinados parâmetros da nota como
início, duração e uma quantidade ilimitada de
parâmetros.
o número exato de parâmetros depende de qual instrumento se usa para tocar a nota.
CSound lê o arquivo linha por linha, nota por nota. Mas
duas notas podem se sobrepor, por exemplo, se seus inícios
são iguais.
Mas note que se duas notas se sobrepõem, suas amplitudes são somadas e a intensidade do som também.
Ao contrário do arquivo .orc que usa vírgula como
separador, o arquivo .sco usa espaços ou tabs como separadores.
Portanto, use boa identação.
Os 3 primeiros parâmetros (p-fields) tem sempre o mesmo significado:
;
p1
p2
p3
i
instrument #
start-time
duration
Normalmente, p4 é amplitude e p5 é freqüência.
Mas é o projetista do instrumento quem define.
Formas de onda características da síntese sonora artificial
senóide
quadrada (square wave)
dente de serra (sawtooth wave)
triangular (triangular wave)
não existem na natureza, mAmplituas foram muito usadas no
início da síntese tanto analógica quanto digital
por serem fáceis de se construir
pode ser decomposta, como qualquer forma de onda, em uma senóide e seus harmônicos (também senoidais).