Clase 1

//Taller de SuperCollider Básico

BUAP

Sesión 1
06/13/09

•    Qué es un software Open Source?
•    Qué es un lenguaje de programación?
•    Cuál es el lenguaje de programación de SuperCollider?
•    Qué es SuperCollider y cómo son su arquitectura y su interfaz?
•    Familiarización con el entorno de SC
•    UGens y Patches
•    Formas básicas de producción de sonido con SC: osciladores
•    Ejercicios

Acá puedes bajar esta clase en los formatos PDF y docx

//Qué es un software Open Source?

El “código abiertoes el término con el que en español se conoce al Open Source, que es el software distribuído y desarrollado libremente.

El software open source, entre otras cosas: debe distribuírse libre y gratuítamente, debe dar su código fuente libremente, los trabajos derivados o las modificaciones del programa también son libres y no debe excluir a nadie.

La ética del Open Source ha traído desarrollos radicales a la tecnología y continúa siendo una gran lección para todos. La “Ética Hackerconsiste en: Pasión. Libertad. Conciencia Social. Verdad. Anti Fascismo. Anti Corrupción. Apertura. Compartir. Descentralización. Comunidad. Colaboración. Acceso libre a las computadoras. Desconfianza en la autoridad. Las personas deben ser juzgadas por su desempeño, no por su edad, raza, género, sexo , nacionalidad etc. Lucha contra la alienación del hombre. Se puede crear arte y belleza en una computadora. Las computadoras pueden mejorar la vida.

//Qué es un lenguaje de programación?

Un lenguaje de programación es un conjunto de  símbolos y reglas utilizado para controlar el comportamiento físico y lógico de una máquina. Cada lenguaje tiene sus características específicas para lograr diferentes tareas por medio de algoritmos.

Los lenguajes de programación pueden dividirse según su nivel de abstracción en: Lenguaje de máquina, Lenguaje de bajo nivel, Lenguaje de medio nivel y Lenguaje de alto nivel. SC es un lenguaje de programación de alto nivel. Es decir, que su nivel de abstracción es tan alto que tiene cosas muy similares al lenguaje hablado (en este caso el inglés) por lo cual es más fácil de aprender que uno de bajo nivel.

También pueden dividirse según su paradigma de programación, es decir su enfoque o filosofía. Dependiendo de la situación, un paradigma resulta más apropiado que otro. Así, se dividen en: Lenguajes imperativos (Como C++ o BASIC) que dan órdenes a la computadora. Lenguaje funcional (como Lisp) que se basan en funciones matemáticas. Lenguajes lógicos (como Prolog) que utilizan métodos de procesamiento basados en el razonamiento formal. Por último tenemos los Lenguajes orientados a objetos (Como Smalltalk), que usa objetos y sus interacciones.

//Cuál es el lenguaje de programación de SuperCollider?

SuperCollider está basado en Smalltalk, aunque tiene una sintaxis más flexible. Es un lenguaje de programación dinámico muy eficiente y expresivo. Es decir que tiene altas capacidades para ejecutar cambios de comportamiento casi instantáneamente, por lo que es una plataforma ideal para la investigación acústica, composición algorítmica, programación interactiva y live coding.

//Qué es SuperCollider y cómo son su arquitectura e interfaz?

SuperCollider es un ambiente y un lenguaje de programación creado en 1996 por James McCartney para hacer síntesis de audio en tiempo real y composición algorítmica. Su última versión es la 3.3, lanzada en abril de 2009.

Es un software de código abierto que es soportado por los sistemas operativos: Mac OSX, Linux, Windows y FreeBSD.

El ambiente de SuperCollider se divide en un servidor y un cliente que se comunican a través de OpenSound Control (OSC), que en pocas palabras es una versión aumentada y corregida del protocolo MIDI.

El servidor es conocido como scsynth y es lo que hace a SuperCollider un lenguaje tan poderoso. Se pueden crear varios synths en el servidor. Cada synth crea un nodo que puede ser controlado independientemente o junto a los demás. Soporta un número indefinido de canales. Permite la creación de Buffers de audio para reproducir o grabar. Puede hacer cálculos en diferentes “rates”: audio, control y demand. Ya que el servidor es controlado a través de OSC, varias aplicaciones pueden usarse para controlarlo, como Pure Data, por ejemplo.

Sclang es el cliente, que es usado para definir los synths, a través de SynthDefs, y enviarlos al servidor. Los SynthDefs contienen información sobre la relación entre variables y UGens.

Los Unit Generators o UGens, son objetos que generan o procesan señales de audio. Los objetos comienzan con mayúscula y los mensajes que son enviados a esos objetos se escriben con minúscula.

//Familiarización con el entorno SC

SuperCollider tiene un editor de texto en donde se redactan las líneas de código que contienen las instrucciones para sintetizar sonidos y manipularlos. Estos textos son guardados como archivos .rtf, que es el formato del editor de texto de Mac OSX: TextEdit.

Al iniciar el programa encontramos una ventana con información, llamada Post Window. En esta ventana podremos controlar lo que sucede, ya que es el lugar donde el SC nos informará sobre los resultados de nuestros códigos, incluídos los errores.

SuperCollider tiene dos servidores predefinidos: el interno y el local. El servidor interno corre en el mismo proceso que la aplicación, es decir que es interno al programa, esto hace que tengan una mayor comunicación. El servidor local corre en la misma máquina que la aplicación. En caso de que el servidor se caiga, la aplicación seguirá corriendo y viceversa.

Es posible crear más servidores y que estos estén en distintas computadoras conectadas vía internet o ethernet.

Para usar el programa es necesario prender el servidor. Hay dos formas de hacerlo. Una es a través de las ventanas que los representan o programáticamente.

========================

s=Server.local
s.boot
s.quit

s=Server.internal
s.boot
s.quit

========================

Después de redactar el código, debemos compilarlo para enviarlo al servidor. Para hacerlo debemos seleccionar la parte deseada y usar “enter”. NO RETURN.

Es importante acudir constantemente a la ayuda de SuperCollider. Para abrir la ayuda general usamos Cmd+d. Si queremos ayuda específica sobre algún objeto, seleccionamos el objeto y usamos de nuevo Cmd+d. En PCs hacemos lo mismo con F1

Para detener el sonido usar Cmd+. en Macs y alt+. en PCs.

======================

//evaluar las siguientes líneas:

1 + 1    2 * 8

5 / 2

4  **   2

2 ** 3

8 < 2

2 > 0.2

“probando”

======================

Los paréntesis son una parte vital de la redacción de código en SuperCollider. Se usan varios tipos de paréntesis: { agrupa funciones }, ( agrupa expresiones ), [ agrupa arrays o colecciones ].

Para seleccionar una parte de código en particular utilizaremos ( ). Por ejemplo:

(
“SC es la neta”
)

(
“oigan todos, estoy aprendiendo SC!”
)

(
“que onda?”
)

(
2+
3**4
/5+7
)

El lenguaje de SuperCollider se caracteriza también por tener expresiones anidadas, es decir, por tener instrucciones dentro de otras. Para esto, los paréntesis son fundamentales:

(
(1+5)+2*(8*3)/2
)

//Ugens y patches

Los UGens (Unit Generators) son objetos que producen algún tipo de señal (SinOsc, Pulse, Saw, LFTri). Al conectar varios de ellos creamos un patch.

Sus nombres comienzan con mayúsculas y pueden ser de dos tipos:

-Audio Rate (.ar)

Estos UGens corren a velocidad de audio: 44100 samples por segundo. Hay que mandar el mensaje .ar a los UGens que sean parte de la cadena de audio que será escuchada.

-Control Rate (.kr)

Estos UGens corren a velocidad de control. Producen un sample por cada 60 samples hechos por un UGen.ar. Es decir 44000/60=735 samples por segundo. Por esto, los UGens de control son más económicos computacionalmente hablando.

Generalmente, los UGens de control se usan como moduladores, es decir, como señales que le dan forma a la señal de audio.

//Formas básicas de producción de sonido con SC: osciladores

{   }.play es la forma más simple para generar sonido, muy útil para probar algo rápidamente pero no muy conveniente para construir piezas.

.play se usa para el servidor local y .scope para el interno.

//Osciladores básicos:

Todos los osciladores comprenden una serie de argumentos ordenados que indican su comportamiento.

Los argumentos básicos de todo oscilador son: frecuencia, fase y amplitud, aunque existen argumentos exclusivos para ciertos osciladores.

===========================

{SinOsc.ar (1200, 0, 0.1)}.play //onda senoidal

para crear un stéreo rápidamente:
{SinOsc.ar (700, 0, 0.1)!2}.play

{Pulse.ar (700, 0.2, 0.1) !2}. scope //onda cuadrada

{Saw.ar (750, 0.1)!2}.scope // onda saw tooth

{LFTri.ar (700, 0, 0.3)!2}.scope //onda triangular

==============================

SinOsc

Es un oscilador de onda senoidal. Funciona con mensajes .ar y .kr. Sus argumentos son: frecuencia, fase, mul y add. Su sintaxis es la siguiente:

SinOsc.ar(frec, fase, mul, add)

Frecuencia: Ciclos por segundo o Hertz. El rango auditivo general del ser humano es de 20Hz a 20KHz. El default en SC es de 440Hz.

Fase: Punto del ciclo en el que queremos que inicie el oscilador. Se especifica en radianes y su rango es de 0 a 2pi. El default es 0 que es el inicio del ciclo.

Mul: Número por el que multiplicamos la señal. Generalmente se identifica con el volumen o amplitud del sonido siendo 0 el mínimo y 1 el máximo recomendado. El default es 1.

add: Número que se le suma a la señal del oscilador. Notar que se pone primero el mul y luego el add. El default es 0, dejando la señal sin alterar.

Pulse

{Pulse.ar}.play  //pulse con sus argumentos en default

{Pulse.ar (100)}.play //con frecuencia más grave

{Pulse.ar (100, 0.1)}.play // la misma frecuencia pero un ancho de banda menor. Cambia el timbre pero la altura es la misma.

{Pulse.ar (100,0.9,0.1)}.play /* la misma frecuencia con mayor ancho de banda y amplitud más baja. No cambia el timpre pues el ancho de banda es simétrico con su eje de 0.5; así que 0.1=0.9, 0.2=0.8, 0.7=0.3 etc */

LFTri

{LFTri.ar}.play //onda triangular con argumentos en default

{LFtri.ar(150)}.play /*Con la frecuencia grave*/

{LFTri.ar (1000,0.1)}.play //con frecuencia aguda y poca amplitud.

Saw

{Saw.ar}.play

{Saw.ar (35) }.play

{Saw.ar (10000, 0.

.play

Creative Commons License
Taller de SuperCollider Básico by https://basicsupercollider.wordpress.com is licensed under a Creative Commons Attribution-Noncommercial 2.5 Mexico License.1)}

8 Responses to “Clase 1”

  1. […] Acá encontrarán la primera clase! Desafortunadamente no pude subirla en .rtf pero pueden bajarla en PDF o en docx. Ojalá no tengan […]

  2. Omar Alvear Says:

    hola, esta muy interesante el curso graciasss.

  3. ¡Qué bueno que te esté gustando, Omar! a practicar y nos vemos el sábado🙂

  4. Robert Says:

    Hola hasta ahora me estoy iniciando en SC, pero la vdd aun no logro obtener sonido en SC, no sé porque, le agradezco a alguine que sepa el porque aun no obtengo sonido me comente, es en PC.

    Gracias

  5. hola, me ha sido de gran ayuda el tutorial, gracias por subirlo, es muy interesante, estamos en contacto…

  6. Quisiera saber si volveran a abrir un curso de super collider

    • Hola, Carlos! estamos tratando de hacer un nuevo curso en Puebla en el 2014. En el CMMAS de Morelia hubo un curso en el 2013 impartido por Sergio Luque. Cualquier noticia, la postearé acá. Saludos!

  7. Hola! el próximo curso que daré en el DF será en noviembre. Acá está la información: https://www.facebook.com/events/425546670838474/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: