Creative Coding Workshop

Creative Coding

Taller introductivo a conceptos y herramientas de programación y programación visual, presentación y estudio de entornos de scripting y live-coding, entre los cuales Sonic PI, Mosaic, VCV Rack y Hydra. Unos primeros pasos en los territorios de los lenguajes orientados a la creación audiovisual generativa para web, instalaciones o live performance.







[La máquina analítica] podría actuar sobre otras cosas además del número ... suponiendo, por ejemplo, que las relaciones fundamentales de los sonidos en la ciencia de la armonía y de la composición musical fueran susceptibles de tal expresión y adaptaciones, el motor podría componer piezas de música elaboradas y científicas de cualquier grado de complejidad o medida.

Ada Lovelace, 1843



Sobre la programación creativa

 

Una de las perspectivas de análisis del concepto de creative coding (en castellano programación creativa) se origina en la combinación de dos matrices de pensamiento, la de la lógica y la técnica, relacionada con el universo de los lenguajes de programación en su sentido más amplio (la interpretación de un lenguaje es posible gracias a unas reglas fijadas, su “programación”, o su gramática en el caso de lenguajes hablados), y la filosófica/humanística de la imaginación y la creatividad, territorio ilimitado e indestructible.

 

Una especial combinación entre estos dos universos se puede describir como creative coding, que puede espaciar desde lo que se llama computational design (John Maeda, Design By Numbers), visual programming, live coding, physical computing, hasta el propio concepto de hacking (la palabra hacker originalmente se utilizaba para definir a una persona que creaba muebles con un hacha, lo que ya de por sí denota una habilidad e ingenio extra sobre un carpintero común. Cabe destacar el uso de esta palabra por extensión a toda persona que implementa soluciones para cualquier sistema, sea informático o no, de manera que este pueda emplearse de formas no pensadas por quienes crearon dichos sistemas).

 

Partiendo de esta base, se puede leer la programación creativa como una alteración de los flujos de datos pre-establecidos, entendiendo los flujos de datos como la misma materia que compone el resultado, el objeto, el dispositivo, el sonido, la imagen, tanto si este flujo está compuesto por ceros y unos (representación digital) como por electricidad y voltaje (el mundo analógico, circuitos electrónicos, cables de audio, cables de video). ¿Cuándo una imagen es una imagen? O mejor, ¿porqué una imagen es una imagen? Para nosotros una imagen es algo estrictamente relacionado con lo visual, quizás demasiado, y solemos asociar el concepto de “imagen” con algo filtrado e interpretado por la visión; entonces información, filtrada e interpretada, en resumen.
Mientras la información suele ser limitada (analizamos un numero máximo limitado de elementos simultaneamente), la interpretación se puede situar en el territorio de la imaginación, es decir sin limites. De la misma manera, podríamos decir que la misma información puede tener infinitas interpretaciones, diferentes puntos de vista que al mismo tiempo ocultan y revelan distintas combinaciones de características del mismo conjunto de datos. ¿Podría una imagen cambiar a otra cosa? ¿Podría una imagen ser escuchada? En la programación sin creatividad, no, no sería posible, porqué la naturaleza de los datos es fija y está predefinida, sin embargo en el universo de la creatividad podríamos tener una respuesta sencilla que a la vez es otra pregunta: ¿Sabe una imagen ser una imagen? NO

 

Entonces puede ser cualquier cosa.

 

Programar es pensar e inventar mundos, imaginar es pensar e inventar mundos, creative coding es pensar y cambiar mundos inventados que cambian el pensamiento, proceso creativo ilimitado e indestructible.

 

Fechas

Desde el 8 de julio hasta el 25 de julio 2024

Aula A.4.2 de la facultad de Bellas Artes, Universitat Politècnica de València

 

Lunes 8, martes 9, miércoles 10, jueves 11 | de 10:00h a 13:00h

Lunes 15, martes 17, miércoles 18 | de 10:00h a 13:00h

Lunes 22, martes 24, miércoles 25 | de 10:00h a 13:00h

Programa

hwp
Lunes 16
Introducción, herramientas, Hello World!
  • Teoría. Presentación del taller, panoramica general de las herramientas de programación y programación visual que se usarán en la parte práctica. 2H
  • Taller. Descarga e instalación del software ( Parte 1 ), ajustes para los distintos sistemas operativos, resolución de problemas. 1H
  • Visualización y debate. Visión del documental Hello World! Processing sobre creative coding. 1H
maxresdefault
Martes 17
VCV Rack, MIDI, Dan Sandin y audio live impro
  • Teoría. Introducción a VCV Rack, principios básicos de síntesis modular, interactividad con teclado, introducción a interfaces MIDI. 2H
  • Taller. Descarga e instalación del software ( Parte 2 ), ajustes para los distintos sistemas operativos, resolución de problemas. 1H
  • Visualización y debate. 5 Minute Romp thru the IP, the Sandin Analogue Image Processor. 30M
  • FreeJam. VCV rack live impro. 30M
transparent_machines
Miércoles 18
Mosaic y live patching
  • Teoría. Introducción a la programación visual con Mosaic, panorámicas de objetos básicos, tipologías de cableado, interactividad con teclado. 2H
  • Taller. Practicas de live patching con Mosaic, ejemplos básicos de manipulación de video con webcam. 2H
samAaron
Jueves 19
Sonic PI, Sam Aaron y live-coding
  • Teoría. Introducción al live coding con Sonic Pi, interfaz, aprender código jugando con el sonido. 2H
  • Taller. Practicas de live coding con Sonic PI, los primeros synths, secuencias y efectos. 1H
  • Visualización y debate. Sam Aaron live coding with Sonic Pi. 1H
Screen-Shot-2020-04-16-at-11.56
Lunes 23
Live-coding, Hydra y arte generativo
osc
Martes 24
Red, protocolo de comunicación OSC
  • Teoría. Protocolo de comunicación OSC, introducción a la comunicación entre herramientas y ordenadores en red. 1H
  • Visualización y debate. Cyclo, Ryoji Ikeda y Carsten Nicolai (MoMa,  NY 2013). 1H
  • Taller. Ejemplos de comunicación entre las herramientas introducidas en el taller. 2H
livecodenyc
Miércoles 25
Free Jam colaborativa
  • Taller. Preguntas y resolución de problemas. 1H
  • FreeJam. Práctica de live coding colaborativo, free jam. 2H
livecodenyc_2
Jueves 26
Free Jam colaborativa
  • Taller. Preguntas y resolución de problemas. 1H
  • FreeJam. Práctica de live coding colaborativo, free jam. 2H

Material

Hello World! Documentary
VCV Rack

VCV Rack Modules Basics

VCO ( Voltage Controlled Oscillator )

Oscilador controlado por voltaje, es una fuente de voltaje continuo, que emitirá una señal cuya frecuencia es una función de los ajustes. En su forma básica, estas pueden ser formas de onda simples (generalmente una onda cuadrada o una onda de diente de sierra, pero también incluyen ondas de pulso, triángulo y sinusoidal), sin embargo, se pueden cambiar dinámicamente a través de controles como la sincronización, la modulación de frecuencia y la auto-modulación.

Noise

La fuente de ruido: es una fuente que genera un voltaje aleatorio. Los tipos comunes de ruido que ofrecen los sintetizadores modulares incluyen el ruido blanco, rosado y de baja frecuencia.

VCA ( Voltage Controlled Amplifier )

Amplificador controlado por voltaje, generalmente es un amplificador de ganancia unitaria que varía la amplitud de una señal en respuesta a un voltaje de control aplicado. La curva de respuesta puede ser lineal o exponencial. También se llama un multiplicador de dos cuadrantes.

VCF ( VOltage Controoled Filter )

Es un filtro controlado por voltaje, que atenúa las frecuencias por debajo de una determinada frecuencia (paso alto), por encima (paso bajo) o por debajo y por encima (paso de banda). Los VCF también pueden configurarse para proporcionar rechazo de banda (notch), por lo que las frecuencias altas y bajas permanecen mientras que las frecuencias medias se atenúan. La mayoría de los VCF tienen resonancia variable, a veces controlada por voltaje.

LFO ( Low-Frequency Oscillator )

Es un oscilador de baja frecuencia puede estar o no controlado por voltaje. Puede operarse con un período de tiempo desde un cuadragésimo de segundo hasta varios minutos. Generalmente se usa como voltaje de control para otro módulo. Por ejemplo, la modulación de un VCO producirá una modulación de frecuencia, y puede crear vibrato, mientras que la modulación de un VCA(ver abajo) producirá modulación de amplitud y puede crear un tremolo, dependiendo de la frecuencia de control. La onda rectangular se puede utilizar como una función lógica / temporal / disparador.

Mixer

Un módulo que combina voltajes.

Envelope Generator

El generador de envolvente es una fuente de voltaje transitorio. Un disparador ante una compuerta de un generador de envolvente, produce una transición de voltaje en relación con el tiempo. A menudo configurado como ADSR (Attack (ataque), Decay(Decaimiento), Sustain (sostenimiento), Release(liberación)) proporciona un voltaje transitorio que sube y baja. Puede ser activado por un teclado o por otro módulo en el sistema que produce un disparo de rápido aumento en presencia de una puerta. Por lo general, controla la amplitud de un VCA o la frecuencia de corte de un VCF, pero la estructura de conectores del sintetizador hace posible utilizar el generador de envolvente para modular otros parámetros, como la frecuencia o el ancho de pulso del VCO. A veces están disponibles EGs más simples (AD o AR) o más complejos (DADSR: Retardo, Ataque, Decaimiento, sostenimiento, Liberación).

Sequencer

El secuenciador, también llamado a veces secuenciador de pasos analógicos, es una familia de tipos de módulos compuestos que pueden ser una fuente o un procesador. Como fuente, dependiendo de la configuración, puede producir una secuencia de voltajes, que generalmente se establecen ajustando los valores en los mandos del panel frontal. El secuenciador también puede generar un disparador, y/o puerta, en cada paso (etapa). Los secuenciadores pasan por un disparador que se aplica a la entrada del disparador. Los distintos diseños pueden permitir avanzar o retroceder, patrones oscilantes, patrones en orden aleatorio o solo usar un número limitado de etapas.

Quantizer

En su forma más simple, un cuantificador es un módulo que toma un voltaje de control y genera el mismo voltaje redondeado a la nota más cercana.

Clock generator

Un generador de reloj produce un reloj estable que puede usarse como maestro para todos los módulos dependientes del reloj en un sistema.

MIDI ( Musical Instrument Digital Interface )

Es un estándar tecnológico que describe un protocolo, una interfaz digital y conectores que permiten que varios instrumentos musicales electrónicos, ordenadores y otros dispositivos relacionados se conecten y comuniquen entre sí.

OSC ( Open Sound Control )

Es un protocolo para conectar en red sintetizadores, ordenadores y otros dispositivos multimedia con fines como la interpretación musical o el control de espectáculos. Las ventajas de OSC son la interoperabilidad, la precisión, la flexibilidad y una mejor organización y documentación.


Links

References

Colin Benders, real life Modular Eurorack song ( Jon Hopkins re:make )

Mosaic Visual Patching
Sonic PI
Hydra Live Coding
Comunicación OSC
Taller

Referencias

The virtual modular platform based on Eurorack synthesizers
VCV Rack
VCV Rack es un sintetizador modular virtual gratuito de código abierto: se pueden conectar varios módulos para sintetizar un sonido. De forma predeterminada, el software contiene varios VCO, LFO, mezcladores y otros módulos de sintetizador estándar. Sin embargo, se pueden agregar más como complementos a través del sitio web de VCV Rack.
webpage
An openFrameworks based Visual Patching Creative-Coding Platform
Mosaic
Una cita muy utilizada de Henri Bergson dice así: «Los ojos sólo ven lo que la mente está preparada para comprender. » Siguiendo ese pensamiento, eventualmente entraremos en el reino del pensamiento visual, o mejor aún, en el reino de la imaginación, donde las ideas complejas se pueden comunicar de una manera sencilla, o todo lo contrario.
webpage
Experience the sound of code
Sonic Pi
Sonic Pi es un entorno de programación de código abierto, diseñado para explorar y enseñar conceptos de programación a través del proceso de crear sonidos nuevos. Es un sintetizador libre de programación en directo para todo el mundo, creado por Sam Aaron en el laboratorio de informática de la Universidad de Cambridge. Puedes usar Sonic Pi para programar, componer e interpretar una gama de estilos desde clásicos a contemporáneos, de Canons a Dubstep.
webpage
A java based code sketchbook
Processing
Processing es un cuaderno de bocetos de software flexible y un lenguaje para aprender a codificar. Desde 2001, Processing ha promovido el aprendizaje de la programación dentro de las artes visuales y el aprendizaje visual dentro de la tecnología. Hay decenas de miles de estudiantes, artistas, diseñadores, investigadores y aficionados que utilizan Processing para aprender y crear prototipos.
webpage
In-browser real-time video synth
Hydra
Hydra es un sintetizador de video y entorno de codificación en vivo (livecoding) que funciona sobre el navegador. Es de software libre y está pensado tanto para principiantes como expertos.
webpage
Real-time programming collective
LiveCode.NYC
LiveCode.NYC es un colectivo con sede en la ciudad de Nueva York que se reúne para discutir, promover y explorar programación en tiempo real.
webpage
Transdimensional Organisation for the Proliferation of Live Artistic Programming
TOPLAP
TOPLAP es una organización fundada en 2004 para explorar y promover el live-coding.
El live-coding es una nueva dirección en la música y el vídeo electrónicos, y está llegando a un lugar interesante. Los codificadores en vivo exponen y reconfiguran las entrañas del software mientras este genera música y/o imágenes improvisadas.
webpage
Generative Design
Generative Gestaltung
Repositorio de ejemplos de Processing desde libros relacionados con diseño generativo.
webpage