Hackpact.Mx |

Arte Generativo

  Inicio ¿qué es?   participantes

Ligas de interés

¿cómo subir los códigos?  

  Eduardo H Obieta | 25 Processing
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
   

artegenerativo25
artegenerativo25
artegenerativo25
 
     
  Comunicación OSC

Un poco de artegenerativo en 2 plataformas:

- Processing determina la posición de cuadrados, unos a color y otros en escala de grises y a su vez envía la posición de cada uno de ellos a SuperCollider mediante OSC con la lib OscP5.

- SuperCollider reproduce el audio dependiendo de la posición de cada cuadrado, donde los de colores reflejan las tonalidades medias y altas y los que están en escala de grises las frecuencias bajas.

 
 

código:

artegenerativo25

/*por Eduardo H Obieta
hackpact de arte generativo
www.artegenerativo.laad.com.mx
*/

//código Processing

import oscP5.*;
import netP5.*;
OscP5 oscp5;
NetAddress direcSC;

int val1, val2, diam, cambio;
float px, py, px2, py2, long1, long2;

void setup() {
size(1280, 720);
background(0);

oscp5 = new OscP5(this, 4445);
direcSC = new NetAddress("127.0.0.1", 57120);
}

void draw() {
fill(0, 2);
noStroke();
rect(0, 0, width, height);

cambio=int(random(8,16));

frameRate(cambio);

val1 = int(random(1, 3));
val2 = int(random(1, 2));

strokeWeight(0.5);
noStroke();
if (val1==2) {
long1 = random(10, 50);
px = random(width-long1);
py = random(height-long1);
//dibujar
fill(random(255), 0, random(255));
stroke(255);
rect(px, py, long1, long1);
//mensaje
OscMessage mensajeSC2 = new OscMessage("/freqSC2");
mensajeSC2.add(px);
mensajeSC2.add(py);
mensajeSC2.add(long1);
mensajeSC2.add(val1);
oscp5.send(mensajeSC2, direcSC);
}
stroke(255);
if (val1==1) {
long2 = random(50, 100);
px2 = random(width-long2);
py2 = random(height-long2);
//dibujar
fill(random(255),50);
rect(px2, py2, long2, long2);
//mensaje
OscMessage mensajeSC = new OscMessage("/freqSC");
mensajeSC.add(px2);
mensajeSC.add(py2);
mensajeSC.add(long2*0.02);
mensajeSC.add(val1);
oscp5.send(mensajeSC, direcSC);
}
println(cambio);
}

//Código de SuperCollider

s.boot;
n=NetAddr("127.0.0.1", 57120);
(
(
SynthDef(\ag25, {|freq1=120, freq2=12.8 fase=0, mul=1, amp=1, gate=1, pan=0|
var env, paneo, son1, son2, onda;
son1=SinOsc.ar(freq1,0,mul*0.15);
son2=Pulse.ar(freq1/4,0.5,0.5,mul*0.1);
onda=son1+son2;
paneo=Pan2.ar(onda,pan);
env=EnvGen.kr(Env.perc(0.005, 0.05, 1, -8),doneAction:2);
Out.ar(0,paneo*env);
}).send(s)
);
(
SynthDef(\ag25b, {|freq1=120, freq2=12.8 fase=0, mul=0.1, amp=1, gate=1, pan=0|
var env, paneo, son1, son2, onda;
son1=VarSaw.ar(freq1,0.5,0.5,mul);
son2=LFPulse.ar(freq2,0.5,0.5);
onda=son1+son2;
paneo=Pan2.ar(onda,pan);
env=EnvGen.kr(Env.perc(0.005, 0.05, 1, -8),doneAction:2);
Out.ar(0,paneo*env);
}).send(s)
);
(
i=OSCresponder(nil,"/freqSC", {| ...msg|
msg[2].postln;
Synth(\ag25, [\freq1, 100+((msg[2][1])/10), \freq2,(msg[2][1]), \mul,(msg[2][3]) ]); }).add
);
(
k=OSCresponder(nil,"/freqSC2", {| ...msg|
msg[2].postln;
Synth(\ag25b, [\freq1, (msg[2][1])+(msg[2][3]), \freq2,(msg[2][2])]); }).add
)
)