next SuperCollider: el lenguaje
up Ejemplos en SuperCollider
previous Ejemplos en SuperCollider
  Índice General   Índice de Materias


SuperCollider: introducción


TUTORIAL DE SUPERCOLLIDER 3 - PARTE 1
Rodrigo F. Cadiz, basado en apuntes de Gary S. Kendall
Northwestern University

http://www.audiosynth.com/

SuperCollider es:

- Editor de texto
- Lenguaje de programacion (interprete)
- Compilador
- Sintetizador digital

todo en uno.

SuperCollider es:
- Open Source y gratis
- Originalmente implementado en computadores Apple Macintosh
- La version 3 esta disponible fundamentalmente para plataformas POSIX (Unix,Linux,OSX). 
- Tambien existe un port actualmente en desarrollo para Windows.

Historia:
- SuperCollider versiones 2 and 3d5.1 para MacOS 8 and 9
- SC Server originalmente para MacOSX
- SuperColider3 (Open Source)

Arquitectura

SuperCollider tiene una estructura cliente/servidor.

Las operaciones en SuperCollider estan divididas en un interprete del lenguaje de programacion  de SuperCollider (sclang) y un servidor de sintesis (scserver). Estas dos aplicaciones se comunican mediante Open Sound Control a traves de UDP o TCP.

Esto significa entre otras cosas:
- El servidor puede ser controlado por otros programas aparte de sclang
- El interprete puede caerse pero el servidor sigue corriendo
- El servidor puede caerse y el interprete sigue corriendo
- El interprete y el servidor pueden correr en maquinas distintas, incluso en distintas partes del mundo, permitiendo una mejor distribucion de recursos en la red

Desventajas: esta arquitectura produce latencia. No latencia de audio, la cual es muy baja sino latencia de comunicacion. Esto se minimiza usando el servidor interno (internal).

- Cada lado cumple una funcion distinta. 
- scserver es un programa simple y eficiente dedicado a tareas de audio. 
- No tiene idea de codigo, objetos, OOP, o cualquier cosa relacionada con el interprete. 

Servidor interno y local
- Servidor local: corre un proceso aparte del interprete, sin compartir memoria
- Servidor interno: corre un proceso que comparte memoria con el interprete, y por lo tanto permite cosas como osciloscopios y ademas minimiza latencia.

Servidor por defecto.
- Siempre hay un servidor por defecto, que esta almacenado en la variable de clase default. 
- Cualquier sintetizador (Synths) o grupo (Groups) creado sin un destino son creados en el servidor por defecto. 
- Al momento de inicio, el servidor por defecto es el servidor local, pero esto puede ser cambiado.

 
Ejemplo de codigo SuperCollider

// definir el servidor por defecto como interno
Server.default = Server.internal;

// asignarlo a la variable 's'
s = Server.default;

// partir el servidor
s.boot;

// definir un sintetizador y "enviarlo" al servidor
SynthDef("sine", { Out.ar(0, SinOsc.ar(440, 0, 0.2)) }).send(s);

// correr la sintesis
s.sendMsg("s_new", "sine", n = s.nextNodeID, 0, 1);

// mostrar el osciloscopio interno (OSX)
Server.internal.scope(1);

// parar el sintetizador (delete)
s.sendMsg("/n_free", n);

// parar el servidor (opcional)
s.quit;


Ejemplos:

     (
     Server.default = Server.internal;
     s = Server.default;
     s.boot;
     )

     "Hello World".speak; 
	
	{SinOsc.ar(LFNoise0.ar([10, 15], 400, 800), 0, 0.3)}.play;
	
  	{
		RLPF.ar( 
			LFSaw.ar([8, 12], 0, 0.2),
			LFNoise1.ar([2, 3].choose, 1500, 1600),
			0.05, mul: 0.4
		)
	}.play;
	


next SuperCollider: el lenguaje
up Ejemplos en SuperCollider
previous Ejemplos en SuperCollider
  Índice General   Índice de Materias

Copyright © 2008-06-05
Rodrigo F. Cádiz   - Centro de Investigación en Tecnologías de Audio, Instituto de Música, Pontificia Universidad Católica de Chile