SuperCollider: el lenguaje
Ejemplos en SuperCollider
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;
SuperCollider: el lenguaje
Ejemplos en SuperCollider
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