Mudanças entre as edições de "Biônicos (Alberto Salgado Harres e Igor Abreu)"
(→Composição de imagens com elementos captados no ambiente) |
(→Oficina de Glitch Arte) |
||
| (16 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 4: | Linha 4: | ||
'''Biônicos''' é um grupo de desenvolvimento em arte, programação e eletrônica iniciado no Núcleo de Novos Organismos (NANO/UFRJ) em março de 2013. É formado por integrantes de meios interdisciplinares como estudantes de design, artes visuais e educação artística. | '''Biônicos''' é um grupo de desenvolvimento em arte, programação e eletrônica iniciado no Núcleo de Novos Organismos (NANO/UFRJ) em março de 2013. É formado por integrantes de meios interdisciplinares como estudantes de design, artes visuais e educação artística. | ||
| − | Ao longo dos meses de trabalho em conjunto têm sido desenvolvidas pesquisas em áreas como estética ''glitch'' com ''databendings'', programação criativa, eletrônica básica, arte sonora e composição de | + | Ao longo dos meses de trabalho em conjunto têm sido desenvolvidas pesquisas em áreas como estética ''glitch'' com ''databendings'', programação criativa, eletrônica básica, arte sonora e composição de imagens digitais. |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| Linha 35: | Linha 29: | ||
| − | + | Código em Processing para os gráficos acima | |
| − | + | <pre> | |
| + | import ddf.minim.*; | ||
Minim minim; | Minim minim; | ||
| Linha 44: | Linha 39: | ||
void setup() | void setup() | ||
| + | |||
{ | { | ||
size(1000, 600, P3D); | size(1000, 600, P3D); | ||
| Linha 63: | Linha 59: | ||
// draw the waveforms so we can see what we are monitoring | // draw the waveforms so we can see what we are monitoring | ||
for(int i = 0; i < in.bufferSize() - 1; i++) | for(int i = 0; i < in.bufferSize() - 1; i++) | ||
| − | + | { | |
| − | + | line( i, 100 + in.left.get(i)*4000, 200+i*2, 100 + in.left.get(i)*100 ); | |
| − | line( i | ||
line( i++, 300 + in.left.get(i)*6000, 500, 300 + in.left.get(i)*400 ); | line( i++, 300 + in.left.get(i)*6000, 500, 300 + in.left.get(i)*400 ); | ||
| − | line( i | + | line( i, 500 + in.left.get(i)*4000, 200+i*2, 500 + in.left.get(i)*100 ); |
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | '''Representação abstrata da luz e calor''' | ||
| + | |||
| + | |||
| + | 1 | ||
| + | [[File:1.jpg|400px]] | ||
| + | |||
| + | |||
| + | 2 | ||
| + | [[File:2a.jpg|400px]] | ||
| + | |||
| + | |||
| + | 3 | ||
| + | [[File:3.jpg|400px]] | ||
| + | |||
| + | |||
| + | |||
| + | Código em Processing e Arduíno para as imagens acima | ||
| + | |||
| + | (esse código foi conjugado com 1 sensor ldr e 1 sensor de temperatura) | ||
| + | |||
| + | |||
| + | ''Processing'' | ||
| + | |||
| + | <pre>/ Desenho | ||
| + | |||
| + | float r; // Altura do raio | ||
| + | float circ; | ||
| + | float x, y; // variáveis para definição do movimento espiral. | ||
| + | float theta; // Movimento circular | ||
| + | float corTemp, corLdr; | ||
| + | float accr; // Aceleração do crescimento do raio | ||
| + | |||
| + | void setup() { | ||
| + | size(1024, 800); // Stage size | ||
| + | // Print a list of the serial ports, for debugging purposes: | ||
| + | println(Serial.list()); | ||
| + | |||
| + | // Open whatever port is the one you're using. | ||
| + | String portName = Serial.list()[0]; | ||
| + | myPort = new Serial(this, portName, 9600); | ||
| + | |||
| + | // Valores iniciais | ||
| + | background(0); | ||
| + | r = 0; | ||
| + | theta = 0; | ||
| + | accr = 1; | ||
| + | |||
| + | noStroke(); | ||
| + | |||
| + | } | ||
| + | void draw() { | ||
| + | translate(width/2, height/2); | ||
| + | } | ||
| + | |||
| + | void serialEvent(Serial myPort) { | ||
| + | // read a byte from the serial port: | ||
| + | int inByte = myPort.read(); | ||
| + | |||
| + | // Add the latest byte from the serial port to array: | ||
| + | serialInArray[serialCount] = inByte; | ||
| + | serialCount++; | ||
| + | // If we have 2 bytes: | ||
| + | if (serialCount > 1 ) { | ||
| + | valueLdr = serialInArray[1]; | ||
| + | valueTemp = serialInArray[0]; | ||
| + | // print the values (for debugging purposes only): | ||
| + | println(valueTemp + "\t" + valueLdr + "\t" ); | ||
| + | serialCount = 0; | ||
| + | } | ||
| + | |||
| + | |||
| + | // DESENHO | ||
| + | |||
| + | |||
| + | theta+=0.025; // Progressão do ângulo. | ||
| − | + | x++; // coordenada x do movimento circular | |
| + | y++; // coordenada y do movimento circular | ||
| + | |||
| + | accr += 0.025; | ||
| + | r += 0.0005 * accr; // Aumento do raio | ||
| + | |||
| + | // Movimento circular | ||
| + | float x = r * cos(theta); | ||
| + | float y = r * sin(theta); | ||
| + | |||
| + | // Cor | ||
| + | noFill(); | ||
| + | corTemp = map(valueTemp, 100, 0, 255, 0); | ||
| + | stroke(corTemp, 0, 255-corTemp, valueLdr); | ||
| + | |||
| + | // Círculos | ||
| + | ellipseMode(CENTER); | ||
| + | ellipse(x, y, r/15*valueLdr/100, r/15*valueLdr/100); | ||
| + | if (r>width) { | ||
| + | r=0; | ||
} | } | ||
| + | |||
| + | }</pre> | ||
| + | |||
| + | |||
| + | ''Arduino'' | ||
| + | |||
| + | <pre> | ||
| + | /* Sensor test sketch | ||
| + | for more information see http://www.ladyada.net/make/logshield/lighttemp.html | ||
| + | */ | ||
| + | |||
| + | #define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter! | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | //TMP36 Pin Variables | ||
| + | int tempPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to | ||
| + | //the resolution is 10 mV / degree centigrade with a | ||
| + | //500 mV offset to allow for negative temperatures | ||
| + | int tempReading; // the analog reading from the sensor | ||
| + | |||
| + | int ldrPin = 1; | ||
| + | |||
| + | int ldrRead; | ||
| + | |||
| + | int inByte = 0; // incoming serial byte | ||
| + | |||
| + | |||
| + | |||
| + | void setup(void) { | ||
| + | // We'll send debugging information via the Serial monitor | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // If you want to set the aref to something other than 5v | ||
| + | |||
| + | |||
} | } | ||
| − | + | ||
| + | |||
| + | void loop() { | ||
| + | |||
| + | inByte = Serial.read(); | ||
| + | |||
| + | tempReading = analogRead(tempPin); | ||
| + | |||
| + | ldrRead = analogRead(ldrPin); | ||
| + | |||
| + | int tempOut = map(tempReading, 15, 125, 0, 100); | ||
| + | |||
| + | Serial.write(ldrRead); | ||
| + | Serial.write(tempOut); | ||
| + | |||
| + | |||
| + | delay(50); | ||
| + | }</pre> | ||
| + | |||
| + | |||
| + | |||
| + | == Oficina de Glitch Arte == | ||
| + | |||
| + | |||
| + | Compartilhamos com outros residêntes uma oficina de introdução a estética Glitch e alguns diferentes métodos para a criação de imagens Glitch. | ||
| + | |||
| + | |||
| + | [[File:ofic1.jpg|400px]] | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ǒ̷͔̼̪͈̮͍̘̙͍̘̇͊ͦ́̌̾́̂́̂̏͊͝f̵̖̻̗̗̥͍̰͙̘͉̟̱͚ͣ̋͛̐̊ͣ͛ͦ̃͗͗̀͘͢͞iͭͦ̈̑̎̐ͪ̌ͫ̇͜͝͏̜̻̱̻͓͓̖̥̪̠͓͇̞̭̼̬̭ͅͅc̷͐͒̍̀̆̈́ͣ͆҉̖̗̮̮̝̙̞i̡̛͈̯͍͔͈͙̺̰̜̎̏͊̿ͧ͗ͨ̄̌̾̌́̔ͯ́̋͛̀͊̕͟n̷̴̨͚̲͔̭̄̍͆̇̑̈ͪ̀̓͒ͬ̏́́ͦ̽͛͆͢a̪̳̤̳̣̙̥͙̥̥̝͖͙͍̩̱͉ͫ͐͗͊̃̽̑̒̅͂ͪ͆͛̊͜͠ ̨̝͎̝͔͑́̊̍̎͊̋ͥ̅͊̎͜c̡͎̫͇̠̥̭̮͕̪̃̓͆̿͌́͢͡ŗ̛̝͖͚̟̜͖̰̭͈̲͕̤͇͎̻̻̦̲̠͋͊̔̔͆͊͒̄͌̋̂̓͒͜͞i͌̒̑̂̃ͬͪͨͣ̇ͨ͏̢̮̺̗̠͉̝̟̫͈̲̥͡à̧͕̙͈̭̌̂ͪ̈́͆ͥͩͭͤ̈́͑͌̎ͦ̀́͘͟ç̶̵̛̻͚̣͎̪͔̳̣͉̝̦̙̤͋ͧ̾̇̈́͝ãͩ̿ͥͧ̐͋̚͏̡͚͈̬̤̟͇̞͈͉̹͍͖͚͈̲̠̯̬͝ͅǫ̵̷̡̟̱͙͚̭̲̭̻̗̹̳ͩͫ̆̃͆͝ͅ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | [[File:oficina2.jpg|400px]] | ||
Edição atual tal como às 22h48min de 7 de março de 2014
A virtualidade como prática antropofágica
Biônicos é um grupo de desenvolvimento em arte, programação e eletrônica iniciado no Núcleo de Novos Organismos (NANO/UFRJ) em março de 2013. É formado por integrantes de meios interdisciplinares como estudantes de design, artes visuais e educação artística. Ao longo dos meses de trabalho em conjunto têm sido desenvolvidas pesquisas em áreas como estética glitch com databendings, programação criativa, eletrônica básica, arte sonora e composição de imagens digitais.
A̮̜͗̄̄͂̎̊̅ ͖̘̰̣̆ͬc̱̘̙̪̾ͭ̈̅ͯ́́͡o͈̤̜͉̖̻̲̔̓͐̒̆͜ͅn͍̥̬͍̟͔͔ͥͮ͗͒͟t̟̪̼̹͗̇̿̏͡͡r̩͇͗ͩ͒ͪ͆ͤ͋̾͘͝ị͕̬̬͕̠͓͈͂ͧ͂́ͩͅb̷̤̪̱̜̠̏ͫͫǘ͚̜͇̔̋̋̀͛ͦ̏ͨͅî̜̩̀͟ç̢̀ͣͮ͏̫͞ḁ̴̱̃̉͑͆ͦ͐o̩͉̜ͬ͜ ̷̦͈͇̼̣̘̪͆͌̿̐̔͒̕m̜͍̞̯̩̺̓̈́̐͊i̴̛̭ͣl̨͕̭̩͕̣̓̇ͫ͒̒̐̀ͅi̴͉̹̦͇̜̠̤̍o͎͈̭̟̹̼̍ͩͣͭ̚͘͝ņ͍̜̱͖ͨͯ̈́ͬͧͧͪ̾͝á̠̯̠ͪͥ͒̌͐̊ͤ̇͘͝r̷̹̙̖͈̅ͫ̍̊ͭͮ͌ͫ̕͠į̠̯̮͖̑̐̓̄ͣ͌͘a̟̹̱̝̔́͘͡ ̜̪͚͉̰̭͚̾͑d̳̓̎͜͡ȩ̫͎̭ͫͥ́͑ͯͦ̓̀͘ ̵̻͖ͥͬ̈́ṱ͓͓͋̓̑͗ͅo̶͂̄͒̓ͫͤ̓͂҉̻͉͇ḑ̝̗̭̳͈͉ͯ͛̿͂o̷̧͙̹͇̜̫͓̓̈ͨͣͩͮs̡͇̣̬͑̐̉͐̕͜ ̡̛͙̖̺͔̺̗̮͚͆͟ọ̧̩̟̟̫̪̬̐͛̓̑̀̔̋͆s͕̑ͯͦ̀̆͜͞ ̲̻͇̋́̅ͩ͘͠ȩ̤̳̮̩̝̖̗̽͂̊͛ͩ͘r̝͕̗̪͈̣͊̓̀̅͋̀r̛̮̘̞͙̼͎̰̉̏̋ͧͦoͯ̐͆̈́͂ͣͮ̂҉̤̰̤̬͉͖̼s̶̡͙͇͛ͩ͋̓̎̋̋ͦ́ͅ
Composição de imagens com elementos captados no ambiente
Desenvolvemos dois códigos que dialogavam com o espaço da casa, um baseado em captação de som e outro que conjugava a temperatura da Serra e da luminosidade ao longo do dia.
Antropofagia do som
Som ambiente
Lá menor
Código em Processing para os gráficos acima
import ddf.minim.*;
Minim minim;
AudioInput in;
void setup()
{
size(1000, 600, P3D);
minim = new Minim(this);
// use the getLineIn method of the Minim object to get an AudioInput
in = minim.getLineIn();
// uncomment this line to *hear* what is being monitored, in addition to seeing it
in.enableMonitoring();
}
void draw()
{
background(0);
stroke (255);
// draw the waveforms so we can see what we are monitoring
for(int i = 0; i < in.bufferSize() - 1; i++)
{
line( i, 100 + in.left.get(i)*4000, 200+i*2, 100 + in.left.get(i)*100 );
line( i++, 300 + in.left.get(i)*6000, 500, 300 + in.left.get(i)*400 );
line( i, 500 + in.left.get(i)*4000, 200+i*2, 500 + in.left.get(i)*100 );
}
}
Representação abstrata da luz e calor
Código em Processing e Arduíno para as imagens acima
(esse código foi conjugado com 1 sensor ldr e 1 sensor de temperatura)
Processing
/ Desenho
float r; // Altura do raio
float circ;
float x, y; // variáveis para definição do movimento espiral.
float theta; // Movimento circular
float corTemp, corLdr;
float accr; // Aceleração do crescimento do raio
void setup() {
size(1024, 800); // Stage size
// Print a list of the serial ports, for debugging purposes:
println(Serial.list());
// Open whatever port is the one you're using.
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
// Valores iniciais
background(0);
r = 0;
theta = 0;
accr = 1;
noStroke();
}
void draw() {
translate(width/2, height/2);
}
void serialEvent(Serial myPort) {
// read a byte from the serial port:
int inByte = myPort.read();
// Add the latest byte from the serial port to array:
serialInArray[serialCount] = inByte;
serialCount++;
// If we have 2 bytes:
if (serialCount > 1 ) {
valueLdr = serialInArray[1];
valueTemp = serialInArray[0];
// print the values (for debugging purposes only):
println(valueTemp + "\t" + valueLdr + "\t" );
serialCount = 0;
}
// DESENHO
theta+=0.025; // Progressão do ângulo.
x++; // coordenada x do movimento circular
y++; // coordenada y do movimento circular
accr += 0.025;
r += 0.0005 * accr; // Aumento do raio
// Movimento circular
float x = r * cos(theta);
float y = r * sin(theta);
// Cor
noFill();
corTemp = map(valueTemp, 100, 0, 255, 0);
stroke(corTemp, 0, 255-corTemp, valueLdr);
// Círculos
ellipseMode(CENTER);
ellipse(x, y, r/15*valueLdr/100, r/15*valueLdr/100);
if (r>width) {
r=0;
}
}
Arduino
/* Sensor test sketch
for more information see http://www.ladyada.net/make/logshield/lighttemp.html
*/
#define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
//TMP36 Pin Variables
int tempPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
//the resolution is 10 mV / degree centigrade with a
//500 mV offset to allow for negative temperatures
int tempReading; // the analog reading from the sensor
int ldrPin = 1;
int ldrRead;
int inByte = 0; // incoming serial byte
void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);
// If you want to set the aref to something other than 5v
}
void loop() {
inByte = Serial.read();
tempReading = analogRead(tempPin);
ldrRead = analogRead(ldrPin);
int tempOut = map(tempReading, 15, 125, 0, 100);
Serial.write(ldrRead);
Serial.write(tempOut);
delay(50);
}
Oficina de Glitch Arte
Compartilhamos com outros residêntes uma oficina de introdução a estética Glitch e alguns diferentes métodos para a criação de imagens Glitch.
ǒ̷͔̼̪͈̮͍̘̙͍̘̇͊ͦ́̌̾́̂́̂̏͊͝f̵̖̻̗̗̥͍̰͙̘͉̟̱͚ͣ̋͛̐̊ͣ͛ͦ̃͗͗̀͘͢͞iͭͦ̈̑̎̐ͪ̌ͫ̇͜͝͏̜̻̱̻͓͓̖̥̪̠͓͇̞̭̼̬̭ͅͅc̷͐͒̍̀̆̈́ͣ͆҉̖̗̮̮̝̙̞i̡̛͈̯͍͔͈͙̺̰̜̎̏͊̿ͧ͗ͨ̄̌̾̌́̔ͯ́̋͛̀͊̕͟n̷̴̨͚̲͔̭̄̍͆̇̑̈ͪ̀̓͒ͬ̏́́ͦ̽͛͆͢a̪̳̤̳̣̙̥͙̥̥̝͖͙͍̩̱͉ͫ͐͗͊̃̽̑̒̅͂ͪ͆͛̊͜͠ ̨̝͎̝͔͑́̊̍̎͊̋ͥ̅͊̎͜c̡͎̫͇̠̥̭̮͕̪̃̓͆̿͌́͢͡ŗ̛̝͖͚̟̜͖̰̭͈̲͕̤͇͎̻̻̦̲̠͋͊̔̔͆͊͒̄͌̋̂̓͒͜͞i͌̒̑̂̃ͬͪͨͣ̇ͨ͏̢̮̺̗̠͉̝̟̫͈̲̥͡à̧͕̙͈̭̌̂ͪ̈́͆ͥͩͭͤ̈́͑͌̎ͦ̀́͘͟ç̶̵̛̻͚̣͎̪͔̳̣͉̝̦̙̤͋ͧ̾̇̈́͝ãͩ̿ͥͧ̐͋̚͏̡͚͈̬̤̟͇̞͈͉̹͍͖͚͈̲̠̯̬͝ͅǫ̵̷̡̟̱͙͚̭̲̭̻̗̹̳ͩͫ̆̃͆͝ͅ