Você está na página 1de 4

SuperCollider é uma linguagem e ambiente de programação, lançado

originalmente em 1996 por James McCartney para síntese de


áudio e composição algorítmica em tempo real.[2][3] É um software livre,
lançado sob os termos da GNU.[4]
Desde então, evoluiu para um sistema usado e futuramente
desenvolvido tanto por cientistas quanto por artistas que trabalham com
som. Sua linguagem de programação dinâmica expressiva e eficiente
fez com que ele se tornasse um ponto importante para a pesquisa
acústica e a programação interativa.
A partir da versão três. o Supercollider apresenta dois componentes
disssociados, o servidor, e o scsynth como cliente, o primeiro
responsável por comunicações de rede, interpretação de código etc. o
segundo responsável por gerar sinal de áudio através de um complexo
e sofisticado motor de síntese. Estes componentes comunicam usando
OSC (Open Sound Control).[5]

O SuperCollider, na realidade, é composto de dois aplicativos distintos: o


servidor e a lingua- gem. O servidor é responsável por fazer sons. A
linguagem (também chamada cliente ou inter- pretador) é usada para
controlar o servidor. O primeiro é chamado scsynth ("SC-synthesizer") e o
segundo, sclang ("SC-language"). A Barra de Status diz o status (ligado/
desligado) de cada um destes dois componentes.

Não se preocupe se esta distinção não faz muito sentido para você agora. As
duas coisas principais que você precisa saber por enquanto são:

1. Tudo o que você digita no SuperCollider está na linguagem do


SuperCollider (o cliente): é onde você escreve e executa comandos, vendo
os resultados na Post window.

2. Todo som que o SuperCollider faz está vindo do servidor—o "motor


sonoro", por assim dizer—, controlado por você através da linguagem do
SuperCollider.

11 Como gravar os sons do SuperCollider


Logo você vai querer começar a gravar a saída de som dos seus patches de
SuperCollider. Eis um jeito rápido:
// GRAVAÇÃO RÁPIDA
// Começar a gravar:
s.record;
// Faça algum som bacana:
{Saw.ar(LFNoise0.kr([2, 3]).range(100, 2000), LFPulse.kr([4, 5]) * 0.1)}.play;
// Pare de gravar:
s.stopRecording;
// Opcional: GUI com botão de gravação, controle de volume, botão de mudo.
s.makeWindow;

12 Variáveis
Você pode guardar números, palavras, unidades geradoras, funções ou
blocos inteiros de código em variáveis. Variáveis podem ser letras
minúsculas simples ou palavras escolhidas por você. Usamos o sinal de
igual (=) para "atribuir"variáveis. Rode estas linhas uma de cada vez e
observe a Post window:
123456

x = 10;
y = 660;
y; // confira o que está aqui dentro x;
x + y;
y − x;

SuperCollider lançado por James McCartney


O SuperCollider é uma linguagem de programação musical em tempo real para
Macintosh PowerPC criada por James MacCartney em 1996. Com influências da
linguagem Smaltalk e C++, contém mais de 600 funções incluindo osciladores,
filtros, geradores de números randômicos, MIDI, rotinas de I/O e envelope
followers. A característica de processamento em tempo real permite sua utilização
em performances de música eletrônica. As rotinas de entrada e saída são usadas
para ler uma partitura em arquivo de texto, permitindo o uso do SuperCollider
para síntese e processamento através de partituras ao estilo Music-V. Diferente do
CSound, um único programa em SuperCollider pode conter rotinas de síntese e
algoritmos de composição. A linguagem possibilita acesso ao áudio em qualquer
nível, incluindo amostras individuais. A versão 2.0 de 1998 é totalmente orientada
a objetos com uma vasta biblioteca de classes. Exemplo do código de programação
do SuperCollider que produz um som resultante da mistura do ruído rosa com uma
onda senoidal de 800 Hz:

{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;

Atualmente, esta linguagem de programação possui o código aberto (GPL) e o


projeto é mantido e desenvolvido por várias pessoas.

Fontes (texto e imagens):

http://supercollider.sourceforge.net/

Exemplos de código
// imprime "Hello world!" na consola
"Hello world!".postln;

// toca sons sinosoidais a cerca de 800hz, com um


somatório de ruído rosa
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;

// modula uma onda sinosoidal e ruído branco, por


// uma onda sinosoidal cuja frequência é modulada
pelo eixo horizontal do rato
{
var x = SinOsc.ar(MouseX.kr(1, 100));
SinOsc.ar(300 * x + 800, 0, 0.1)
+ PinkNoise.ar(0.1 * x + 0.1)
}.play;

// Iteração de listas: multiplica elementos da


colecção pelos respectivos índices
[1, 2, 5, 10, -3].collect { |elem, idx| elem * idx };

// função factorial
f = { |x| if(x == 0) { 1 } { f.(x-1) * x } };

Você também pode gostar