Atom For Hydra / Manual de Funciones

Page 1

HYDRA 4 ATO M Olivia Jack

MANUAL DE FUNCIONES Ariel H. Contini


hQEMA/Sulmpb889uAQf/WUnOBx5WAqShx/VrTb6B820CPXWUk3XiiGD8oWyTw3en x9D8lAYElwTWEp5NfmpQvl+k/uhgwA+9aqBpxM9ZKu4Y1chzc6jRMOpHaN4nO0hc LbDa1KGau8W1kFIRhJBu6osJszodsN1kE0MRW9H3UcMVnaJNcaubHLfORWtIXvWS TJZYmjI90zOQvVvp6P5F0FueXiKUpygRGe/9inI0OJlIPgkpIGnpqIRvnaexD22D Ogv4Nxnh4bYgxQr9ZbnF6q8NHILMixu2xcGZa+8qyTc5R14tlO/afsaBD+WGYq77 UPuJPsNFv8wup38G8t5BjLzXAG4RIY5IjsKLxhqohdJ9AeYLMXRs2W2y/9TogBvj T6hCmF38DfgB0l0wCMyoodJBQ2QXTrVOTt5hjmV3lGBtaIVL3rXhybm1OpxezbLD qO8LLh8M7xB5e27h27wQd3PBT4AtZreEl9V7RP3xVJBl2zt3pE6VHa1lQLGeoSPx keu63OnZeDJDP1I4lPI= =A9d1 Version: GnuPG v1

Para toda persona que este interesada en usar HYDRA 4 ATOM de Olivia Jack.

key mQENBFvbvaABCACiW4cLreTwvIy5d6EMMe7b8AX+lj5PYs2+ZDyIoY90YYBZcvyK ByNq0G9VG05NHucHlvSAreIxPatf8ddrO6nOxQ2D+ceNbJZ+2kwAfOP4hq5qrjDq wpow5QenbtF5WHyLFBGzHR06FTlCM1oYIBit6UiNK8OpVAUxs9tsve8MNb+MSHgH e7KzCX5PQEKxtDfn2zg0w3N+ypjhnfdzEHZPpY9+c4/s7KP8/Ofc51tyVjaSAta0 x6IKUQgvo2OZyJ0OHd3AA9TZ6GNoYCq5S7k4POj9sN9JoEGCHa2eIYp42SoF97S0 EMelihu02eNXPs22cuPoT4oWfgOsheDXfVGHABEBAAG0BUFyaWVsiQE8BBMBCgAm BQJb272gAhsDBQkJZgGQBQsJCAcDBRUKCQgLBBYCAQACHgECF4AACgkQBKX+lAGI GeVSrAf/RHhYvyHcDJhK4nrn1EQbjBqVV6/mVLS3sPLK/Dbzcl1Ju48irDs7s6Tb zEcUt4UKgF6ELqU2R7Hy9G5TcD5++tUAaxZRjW4z+GIfcI7hJ5TYtdgRRhbxwmHV DXjq16Em5IMtS2BbgsZUZhcbMR0QF7oek3BbPwC67PsLTlrpQAsSqFzODXi01A6l 2xscsyDIyfCmzCyR4tCTSE3UkFJZxxlgixaaMxLQpiNly70PaydjqWjXVMoWUa0J yPJbm+T+ngs24WX/oCz2ECainy5a4pWKyacQ3ZQlpBiR0dfRoi1ePc6V4JqIBT2N pkzVAKrmzVXexspxwQ/rM7WswFUKFLkBDQRb272gAQgAwHq34SDzmjxkvvxG8ZRF /uEbwWTV157R+7uiXExFOCbofeonLOtQB3xD1FSFtx26Og4gqzKyTklspG/C34xR NVZ26Z2zpTL4XuoE5C8J8IDVbzTBmsd6rERaxbzLwco2YPwL7L+hhp4TNVrIzj0a AeKdltKWYNNVSaXOPMfgY/76hTrYXP1Dn8AiwpVkNtVmIZ5OMgS1z2WSaHDbljnW DnfOVNsieTkGe0nFkkrqFSTfxTkHA2w3Nb3ju8QLVJ8casg7v6i0zyf+YgeXg2c/ dB6CNvbgyWQBG4f9zu7ejzEVjoBVQ2YmhbjWM0Q8Gohq7gOq3S04r/FygSCZn5I2 awARAQABiQElBBgBCgAPBQJb272gAhsMBQkJZgGQAAoJEASl/pQBiBnl6HkH/3IO AUB7+3muvFMNCxMM3IbZshXeoANzFWeYJJvYwJL47BcS/p8GivwiztBYBMomvFXb 72mR6e4pJhJ/FnsKggipzbTrhQ1Fnw6eKxfdR0R64MirUgvH0SX72de6tjkAaQFo VT/QvroD+OqtlyCV7jaSvRJW0VzFEcKUW/DcCwk+W4NOQY1toMWd1U/bqBpVzd3G Yib+8FVb+2FimAxTLhPwjj1pbbWFFLYjK/XpsHsOFXeW8/0Tj5jNydduywe6l0pS oAN6NOG4KNrQUE+dDdFb1rXo0QdDuh+uumPigaaddsQpVm2hw7av4VygkT4P3ezH jp7emy7lBaV/IEIekhk= =kK1e-

ยกDedicado a vos que lees!

/Sigamos colaborando/

ARIEL CONTINI / 2018 oivi.org


HYDRA VISUALES CON CODIGO EN VIVO Creado por Olivia Jack

Conjunto de herramientas para la visualización en vivo de imágenes en red. Inspiradas en sintetizadores modulares analógicos, estas herramientas son una exploración sobre el uso de la transmisión a través de la web para enrutar fuentes y salidas de video en tiempo real. Hydra utiliza múltiples framebuffers para permitir la mezcla dinámica, la composición y la colaboración entre corrientes visuales conectadas del navegador. Las transformadas de coordenadas y colores se pueden aplicar a cada salida a través de funciones encadenadas (consulte “Funciones básicas” y “Funciones de transformación de edición” a continuación). NOTA:

Experimental / en desarrollo. En este momento solo funciona en Chrome o Chromium, en máquinas con WebGL. Doy la bienvenida a las solicitudes de extracción, así como a los comentarios, ideas y errores en la sección de problemas.

FUNCIONES BASICAS Renderiza un oscilador con parámetros de frecuencia, sincronización y rgb offset: osc(20, 0.1, 0.8).out() Gire el oscilador 1.5 radianes: osc(20, 0.1, 0.8).rotate(0.8).out() Pixelar la salida de la función anterior: osc(20, 0.1, 0.8).rotate(0.8).pixelate(20, 30).out() Muestra la salida de la cámara web: s0.initCam() / Inicializa una webcam en el búfer de origen src(s0).out() / Render fuente de búfer Si tiene más de una cámara conectada, puede seleccionar la cámara usando un índice: s0.initCam(1) / Inicializa una webcam en el búfer de origen


WEBCAM KALEIDOSCOPIO:

// inicializa una webcam en el búfer de origen s0 s0.initCam() src(s0).kaleid(4).out() // renderizar la webcam a un caleidoscopio También puedes componer múltiples fuentes juntas: osc(10) .rotate(0.5) .diff(osc(200)) .out() De forma predeterminada, el entorno contiene cuatro búferes de salida independientes que pueden mostrar gráficos diferentes. Se accede a las salidas mediante las variables o0, o1, o2 y o3.para procesarlas en el búfer de salida o1: osc().out(o1) render(o1) // renderiza el contenido de o1

Si no se especifica ninguna salida en out (), los gráficos se representan en el búfer o0. para mostrar todos los buffers de render a la vez: render() Los buffers de salida se pueden mezclar y componer para producir lo que se muestra en la pantalla. s0.initCam () // inicializa una cámara web en el búfer de origen s0. src (s0) .out (o0)

// configura la fuente de o0 para representar el búfer que contiene la cámara web.

osc (10, 0.2, 0.8) .diff (o0) .out (o1)

// inicializa un gradiente en el búfer de salida o1, compuesto con el contenido de o0.

render (o1)

// render o1 a la pantalla.


Las funciones compuestas blend(), diff(), mult() y add() realizan operaciones aritméticas para combinar el color de textura de entrada con el color de textura base, similar a los modos de mezcla de photoshop. modular (textura, cantidad) utiliza los canales rojo y verde de la textura de entrada para modificar las coordenadas x e y de la textura base. Más sobre modulación en: https://lumen-app.com/guide/modulation/ osc (21, 0) .modulate (o1) .out (o0) osc (40) .rotate (1.57) .out (o1) Pasando funciones como variables

Cada parámetro se puede definir como una función en lugar de una variable estática. Por ejemplo: osc (function () {return 100 * Math.sin (time * 0.1)}). out () modifica la frecuencia del oscilador en función del tiempo. (El tiempo es una variable global que representa los milisegundos que han pasado desde que se cargó la página). Esto se puede escribir de manera más concisa usando la sintaxis de es6: osc (() => (100 * Math.sin (time * 0.1))) out ()


CONEXION A FLUJOS REMOTOS

Cualquier instancia de Hydra puede usar otras instancias / ventanas que contengan hydra como fuentes de entrada, siempre que estén conectadas a Internet y no estén bloqueadas por un firewall. Hydra usa webrtc (webstreaming en tiempo real) bajo el capó para compartir transmisiones de video entre ventanas abiertas. El módulo incluido rtc-patch-bay administra las conexiones entre las ventanas conectadas, y también se puede usar como un módulo independiente para convertir cualquier sitio web en una fuente dentro de la hidra. (Consulte la fuente de la cámara independiente a continuación, por ejemplo). Para comenzar, abra HYDRA simultáneamente en dos ventanas separadas. En una de las ventanas, establezca un nombre para el origen del compartimiento de parches dado: pb.setName (“myGraphics”) El título de la ventana debe cambiar al nombre ingresado en setName ().

Desde la otra ventana, inicie “myGraphics” como una secuencia de origen. s0.initStream (“myGraphics”) renderizar a pantalla: s0.initStream (“myGraphics”) src (s0) .out () Las conexiones a veces tardan unos segundos en establecerse; Abre la consola del navegador para ver el progreso. Para listar las fuentes disponibles, escriba lo siguiente en la consola: pb.list ()


Respuesta de audio (experimental)

La funcionalidad FFT está disponible a través de un objeto de audio al que se accede mediante “a”. El editor utiliza https://github.com/meyda/meyda para el análisis de audio. Para mostrar las bandejas FFT, a.show() Establecer el número de fft bins: a.setBins (6) Acceda al valor del contenedor de la izquierda (frecuencia más baja): a.fft [0] Usa el valor para controlar una variable: osc (10, 0, () => (a.fft [0] * 4)).out() Es posible calibrar la capacidad de respuesta cambiando el valor mínimo y máximo detectado. (Representado por líneas borrosas sobre el pie). Para establecer el valor mínimo detectado: a.setCutoff (4) La configuración de la escala cambia el rango que se detecta. a.setScale (2) El fft [] devolverá un valor entre 0 y 1, donde 0 representa el límite y 1 corresponde al máximo. Puede establecer el suavizado entre las lecturas de nivel de audio (valores entre 0 y 1). 0 corresponde a ningún suavizado (más rápido, tiempo de reacción más rápido), mientras que 1 significa que el valor nunca cambiará. a.setSmooth (0.8) Para ocultar la forma de onda de audio: a.hide ()


COLOR .contrast(amount)

amount :: float (default 1.6)

Mayor valor de cantidad hace mayor contraste

.color( r, g, b ) r :: float g :: float b :: float

Colorear la textura

.colorama(amount)

amount :: float (default 0.005) Desplazar los valores de HSV

.invert(amount) amount :: float (default 1.0) Invierte colores

.luma( threshold, tolerance ) threshold :: float (default 0.5) tolerance :: float (default 0.1)

.thresh( threshold, tolerance ) threshold :: float (default 0.5) tolerance :: float (default 0.04 )


COMBINE .add( texture, amount ) texture color :: vec4 src shape amount :: float (default 0.5) Añadir texturas.

.blend(textura, cantidad ) texture color :: vec4 src shape amount :: float (default 0.5) Mezcla las texturas

.diff(textura) texture color :: vec4 src shape

Diferencia de texturas

.layer()

Superposición de textura basada en el valor alfa.

.mult( texture, amount ) texture color :: vec4 src shape amount :: float (default 1.0)

Multiplica imágenes y mezcla con la textura por cantidad.


COORD .kaleid( nSides) nSides :: float (default 4.0) Efecto caleidoscopio con repeticiรณn nSides.

.rotate( angle, speed ) angle :: float (default 10.0) speed :: float (default 0.0) .scale( size, xMult, yMult ) size :: float xMult :: float (default 1.0) yMult :: float (default 1.0) .pixelate( x, y ) pixelX :: float (default 20.0) pixelY :: float (default 20. Pixela la textura con segmentos pixelX y segmentos pixelY.

.scrollX( scrollX, speed ) scrollX :: float (default 0.5) speed :: float (default 0.0) .scrollY( scrollY, speed ) scrollY :: float (default 0.5) speed :: float (default 0.0) https://github.com/ojack/hydra/blob/master/docs/funcs.md


COMBINECOORD .modulate(texture, amount) Modular la textura.

Acerca de los moduladores: https://lumen-app.com/guide/modulation/ .modulateHue (color, amount) .modulateKaleid (nSides) .modulatePixelate(multiple, offset) .modulateRotate (multiple, offset) .modulateScale (multiple, offset) .modulateScrollX (multiple, scrollX, speed) .modulateScrollY (multiple, scrollY, speed)


SRC osc( frequency, sync, offset ) Frecuencia :: float (default 60.0) sincro :: float (default 0.1) compensaciรณn :: float (default 0.0) render(output buffer) default: o0 shape(sides, radius, smoothing) Lados :: int (default 3.0) Radio :: float (default 60.0) Sutileza :: float (default 0.01) Genera una forma geometrica

solid(r, g, b, a) r :: float (default 0.0) g :: float (default 0.0) b :: float (default 0.0) a :: float (default 1.0) Genera un solido (RGBA)

gradient(velocidad) speed :: float Genera un gradiente. noise( scale, offset ) scale :: int (default 10.0) offset :: float (default 0.1) Genera Ruido Perlin

voronoi( scale, speed, blending ) scale :: float (default 5) speed :: float (default 0.3) blending :: float (default 0.3) Genera formas voronoi.


.out(output buffer) output buffer osc: o0,o1,o2,o3 src: s0,s1,s2,s3 SECUENCIAS DE PARÁMETROS osc( osc(

[80, 100, 200, 50], 1 ) ) .out(o0) [80, 100, 200, 50].fast(0.2), 1 ) ) .out(o0)

VARIABLES GLOBALES Algunas variables útiles que se definen globalmente, y puede ser utilizado dentro de funciones como un parámetro. TIME Ejemplo: osc( ({time}) => Math.sin(time) ) .out(o0) MOUSE .x :: Posición X del mouse // .y :: Posición Y del mouse Controla la frecuencia del oscilador con la posición del Mouse:

osc(() => mouse.x).out(o0)


GRACIAS POR VER xxyyxxzzxxyyyyy ariel.contini.dm

ariel.contini


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.