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
Linux, la ultima bahía autónoma
The blue one has been digested already.
Programa
- Teoría. Presentación del taller, panorámica general de las herramientas de programación y programación visual que se usarán en la parte práctica. ¿Que es una imagen digital? Y un sonido?
-
Taller. Introducción al mundo Linux, en concreto en la distro Ubuntu, y al principio de FLOSS software. Pequeño tutorial de instalación en dual boot ( windows + linux en el mismo ordenador ) . 2H
- Q&A. Dudas y resolución de problemas. 30MIN
-
Teoría. Introducción a VCV Rack, principios básicos de síntesis audio modular. 2H
-
Q&A. Descarga e instalación del software, ajustes para los distintos sistemas operativos, resolución de problemas. 30MIN
-
Taller. Practica de VCV rack, alteración de ejemplos, introducción a librerías de módulos externos. 2H
-
Q&A. Dudas y resolución de problemas. 30MIN
- Teoría. Introducción al live coding con Sonic Pi, interfaz, aprender código jugando con el sonido. 2H
- Q&A. Dudas y resolución de problemas. 30MIN
- Taller. Practicas de live coding con Sonic PI, los primeros synths, secuencias y efectos. 2H
- Q&A. Dudas y resolución de problemas. 30MIN
- Taller. Practicas de live coding con Sonic PI. 2H
- Q&A. Dudas y resolución de problemas. 30MIN
- Taller. Practicas de live coding con Sonic PI. 2H
- Q&A. Dudas y resolución de problemas. 30MIN
- Teoría. Introducción a la herramienta Hydra, principios de live coding visual en el browser. 1H
- Taller. Ejemplos básicos de hydra, color, movimientos y aleatoriedad. 1H
- Q&A. Dudas y resolución de problemas. 30MIN
- Taller. Práctica de live coding en browser con Hydra. 2H
- Q&A. Dudas y resolución de problemas. 30MIN
Material
Links
- Ada Lovelace
- El primer algoritmo de la história
- Ada Lovelace and the first computer programme in the world
- La máquina analitica
- La maquina Bombe de Bletchley Park
- MANIAC (Mathematical Analyzer Numerical Integrator and Automatic Computer Model)
- Facts and stories about Antique Computers
- 100 Rabbits - orca
- Esoteric programming language
A book must be the axe for the frozen sea inside us.
Franz Kafka, 1904
Links
- Ubuntu Certified Hardware
- Linux Compatible Audio Interfaces
- How to install Ubuntu alongside Windows 11 (Dual Boot)
- Meet Pop!_OS
- Beginner's Guide to Installing Pop!_OS Linux
- Learn Linux TV
- The Linux Experiment - youtube channel
- TUXEDO - Linux optimized notebooks and Desktop PCs
- Slimbook - Portatiles Linux made in Spain
Ejemplos
Links
- Inside The Coder Art At Google's Cultural Institute | Digital Trends
- Quasimondo | Mario Klingemann, Artist
- VCV Library - AS
- VCV Library - Audible Instruments
- VCV Library - Autodafe
- VCV Library - Befaco
- VCV Library - Bogaudio
- VCV Library - Count Modula
- VCV Library - Impromptu
- VCV Library - MindMeld
- VCV Library - NYSTHI
- VCV Library - Surge XT
- VCV Library - Valley
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
- VCV Rack Library
- Omri Cohen Rack video tutorials
- Studio Brootle VCV Rack Patches
- Music Theory Cheat Sheet
- MIDI <--> NOTES <--> CV conversions
References
Ejemplos
Links
- Medios Digitales e Interactivos ( Asignatura BBAA )
- Erkki Kurenniemi DIMI Ballet (Dimi O showcase & performance) 1971
- Pan Sonic plays Kurenniemi (Full Film) LIVE
- Tech Talk: Jessica Kert talks Modular Synthesizer (Electronic Beats TV)
- One To Watch: JakoJako (Electronic Beats TV)
- Claude Debussy "Clair de Lune" // a modular reflection
- Frequencies of musical notes
- Scientific Pitch Notation ( Wikipedia )
- Music Theory Cheat Sheet
- MIDI conversion Table ( note - midi note - frequency)
Ejemplos
osc().out()
osc(20).color(0,1,1).scale( 1 ).out()
shape(3).color(0.5,0,1).scale( 1 ).out()
shape(6).color(0.5,0,1).scale(1,1,()=>window.innerWidth/window.innerHeight).out()
noise(2).rotate(0.3,0.3).color(1,0,0.5).out()
voronoi(10).color(0,1,1).out()
voronoi(10).color(0,() => (Math.sin(time)+1) / 2,1).out()
var rand = function(){ return Math.random() } voronoi(10).color(rand,() => (Math.sin(time)+1) / 2,1).out()var randomRange = function(min=0,max=1){ return Math.random() * (max-min) + min } voronoi(10).color(() => randomRange(0.1,0.8),() => (Math.sin(time)+1) / 2,1).out()voronoi(10,1).colorama(10).hue(0.5).saturate([0,1,4,11]).scale(() => 0.5+(0.001*mouse.x)).out()
voronoi(10,1).colorama(10).hue(0.5).saturate([0,1,4,11]).scale(() => 0.5+0.2*a.fft[0]).out()
a.show() // a.hide() a.setBins(6) // MAX 24 voronoi(10).color(0,() => a.fft[0] *2,1).out(o0) noise(() => a.fft[1] *200).rotate(1,1).color(1,0,0.5).out(o1) osc(40).color(0,1,1).scale( () => a.fft[2] *2 ).out(o2) shape(7).color(0.5,0,1).scale( () => a.fft[3] *2 ).out(o3) render()
s0.initCam() src(s0).scale(1.5).out()
s0.initCam() src(s0).scale(1.5).pixelate(60,60).saturate(11).out()
s0.initScreen() src(s0).saturate([0,1,4,11]).scale(1.75).kaleid(16).scale(() => 0.5+0.2*a.fft[0]).out()
s0.initScreen() src(s0).scale(1.65).kaleid(8).rotate(0.1,0.1).scale(1.3,1.3,()=>window.innerWidth/window.innerHeight).invert().out(o1) src(s0).mult(o1).saturate(0.5).add(src(o1).modulate(voronoi(15,2)).saturate(0.13)).out()
var test = 0 var func = function(){if(cc[1] == 0) test += Math.PI/12;return test} osc(10).rotate(func).scale(10).out()// multiples texturas independientes ( MAX 4 ) osc().out(o0) osc(33,0.3,0.3).out(o1) src(o2).modulate(noise(3),0.005).blend(shape(4),0.01).out(o2) osc(3,0.3,33).out(o3) render()// multiples texturas combinadas ( MAX 4 ) osc().modulateRotate(o0,0.3).out(o0) src(o0).mult(o0,5).blend(o1,0.98).kaleid(3).rotate(() => time/10).out(o1) render(o1)// screen capture feedback s0.initScreen() // reset // src(s0).out(o0) // wavy src(s0).modulate(noise(3), 0.3).out(o0)// ejemplo de feedback osc(10,0.02,0.1).colorama().rotate(3.14/2) .modulate(src(o0).scrollX(0,0.03,0.06),0.09) .blend(o0,0.98) .contrast(1.01) .out(o0)
// MIDI input await loadScript("https://creativecoding.d3cod3.org/material/Hydra/midiInput.js") osc().color(() => cc[3],0,0).out()// OSC receiving example ( use it with "13_breakcore_live_midi_hydra.txt" example from the SonicPi section ) // check this: https://github.com/ojack/hydra-osc // or this: https://github.com/colinbdclark/osc.js/ await loadScript("https://cdn.jsdelivr.net/gh/ojack/hydra-osc/lib/osc.min.js") _osc = new OSC() _osc.open() _osc.on("*", (m) => { /*console.log(m.address, m.args)*/ }) freq = 0 _osc.on("/cmaster1", (m) => { //console.log(m) freq = m.args[0]/127.0 }) crush = 0 _osc.on("/crush", (m) => { //console.log(m) crush = m.args[0] }) octa = 0 _osc.on("/octa", (m) => { //console.log(m) octa = m.args[0] }) osc(8, () => -0.5*freq, 1) .color(-1.5, -1.5, -1.5) .blend(o0).rotate(-0.5, -0.5) .modulate(shape(4) .rotate(0.5, 0.5) .scale(2) .repeatX(() => (octa*2)+0.1, 2) .modulate(o0, () => crush * 0.5) .repeatY(2, 2)) .out(o0)
Links
- Olivia Jack || Live Coding Visuals with HYDRA Interview
- What is Hydra?
- Hydra Book
- Hydra Functions
- Hydra Functions List
- Hydra Video Synth | Blog and Documentation Portal
- Hydra Internet Garden | Community database of resources
- Naoto Hieda's Hydra tutorials | youtube channel
- Collaborative console for Hydra Synth
- Mastodon Hydra Wall
Ejemplos
Links
Referencias
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.