Skip navigation

estivemos a resolver pequenos bugs, modificar algoritmos para os tornar mais eficientes, tentar criar zonas de teste dentro da sala com câmaras no tecto a reconhecer blobs e analisar essas imagens.

ultimar o código dos projectos, prestes para na próxima semana começarmos a exportar aplicações finalizadas que serão usadas na exposição sons do pensamento, na fábrica features lisboa, no 4ºandar da benetton mesmo ao lado da saída do metro baixa-chiado, no dia 1 de julho pelas 18h

testar e configurar, agora estamos a entrar na recta final do curso. algumas imagens laboratório e dos projectos a apresentar na exposição.

principalmente laboratório. resolver bugs, aceder a bytes, fazer presets, moldar algoritmos, testar configurações… aqui ficam algumas imagens de projectos em desenvolvimento, começando pelos primeiros testes para o projecto colectivo, e percorrendo alguns projectos individuais em desenvolvimento.

continuamos revisões e dúvidas durante a primeira parte da sessão. depois entramos no laboratório, onde estamos a desenvolver projectos individuais, colectivos e alguns exercícios a alojar na net.

no pure data focámos noções elementares de programação visual, o que é o som digital, como o sintetisamos e o processamos temporalmente, espacialmente ou espectralmente. ler ficheiros do disco, gerar frequências, ruídos, impulsos, granular inputs,  resintetisar frequências, filtrar microfones, analisar níveis de som, criar processos interactivos. (sessões 11, 12)

ainda analisámos comunicação via rede na própria máquina ou entre várias máquinas, entre o pure data, max e o processing, openframeworks. para tal usamos o protocolo osc através de udp para ser mais rápido, criamos objectos que escrevem e lêem para a rede nos vários ambientes de programação, e por fim criámos programas exemplo que enviam valores de uma aplicação para outra.

introduzimos depois o arduino, e criámos um digitalizador de sensores. fizemos um controlador à base de ldr’s e pot’s numa breadboard, conectamos os sensores ao arduino, e criámos programas que lêem e usam os valores recebidos, gerando sons, sintetisando imagens, controlando estados dinâmicos também com piezos. vimos como o arduino ide é tão semelhante ao processing e o código que usamos também é parecido com java/c. (sessões 13, 14)

ainda fomos usar o arduino como actuador, controlando motores 5v e ventoinhas através dos outputs analógicos conseguimos emitir voltagens variáveis até 5v que controlam directamente ou através de outros componentes motores e actuadores sobre o mundo físico, criando o esboço de uma escultura cinética com led’s, motores e ventoinhas.

por agora já temos umas luzes sobre conceber e implementar interfaces híbridos que recorrem a várias tecnologias, como interfaces à base de computação física usando sensores, arduino, actuadores, outros materiais; interfaces à base de câmara analisando e confrontando as imagens que chegam, destacando posições distintas do fundo, obtendo parâmetros de localização, fazer actuar esses parâmetros; interfaces à base de som, analisando intensidades de frequências e construir listas de valores que fazem oscilar outros algoritmos.

por fim analisamos vários projectos construídos em c++ com o ambiente de programação openframeworks. analisamos a estrutura e funcionamento do compilador, linker, geração de código executável, e expandimos alguns exemplos de processing em c++. primeiro analisamos a programação por objectos, recorrendo a classes que têm variáveis e funções membros, e construímos vários exemplos em c++ que usam partículas, reconhecimento de imagem, som, comunicação por rede, interacções com sons e rato e electrónicas. (sessões 15, 16)

o c++ é mais robusto, um degrau acima na complexidade de escrever código comparado com o processing, mas  com as bibliotecas do openframeworks, torna-se extremamente simples, tal como no processing. a grande diferença é que cada sketch de processing extende a classe base papplet, enquanto que no openframeworks cada aplicação testapp extende a aplicação ofsimpleapp, que engloba a mecânica inicial necessária de uma aplicação c++.

continuamos com a análise de projectos individuais e criação de um laboratório na sala que tenha alguns projectores e câmaras para situações video-interactivas, microfones e colunas, e mesas para construir circuitos entre arduinos e sensores. brevemente mais novidades. boa semana. vejam as plantas, sugiram alternativas,

fizemos revisões de todos os conteúdos das várias linguagens que aprendemos, frisando conceitos chave de programação como variáveis, ciclos for, testes if(){}else{}, classes e objectos, chegar as variáveis a modificar, construir algoritmos base no processing, pd, arduino, openframeworks.

primeiro as noções iniciais de programação exploradas em máquinas de desenhar, onde a posição do rato serve como foco para o lançamento de novos objectos de classes programadas por nós. o sistema de coordenadas cartesiano e o sistema de coordenadas polar. (sessão 2)

primeiras noções de interactividade usando os microfones ligados ao computador, samplando a energia rms sonora, ou um espectro fft que nos dá intensidade por banda de frequência. aplicar os parâmetros do áudio em variáveis que controlam gráficos. noções de classes mais avançadas com os exemplos dos triângulos de som. (sessão 3)

paralelamente, primeiras máquinas lógicas simples, onde a nossa interacção controla um ou mais elementos, e há outros elementos que reagem face à nossa posição, distância, status, etc. os sketches círculos_attack.

depois fomos analisar o tipo de dados pimage e a biblioteca video do processing, que é um tipo de dados que armazena imagens. começamos com os sketches que acedem à informação de cor de cada pixel — criando travelers que oscilam com base nessa cor –, depois ler e scrubbing de video, gravar video e aceder a câmaras. terminamos com acessos mais elaborados à array dos pixels de cada pimage, modificando-os ou lendo-os directamente. (sessão 4)

o próximo tópico foram as partículas e sistemas de partículas, onde elementos simples mantêm variáveis de posição, velocidade, aceleração. a aceleração será o vector que controla a magnitude da deslocação. é também o vector que define a totalidade das forças aplicadas nas partículas. os próximos passos são actualizar a velocidade com a aceleração, actualizar a posição com base na nova velocidade, desenhar o elemento na nova posição. (sessão 5)

introdução ao 3d com noções de coordenadas espaciais, onde está a câmara, onde estão os objectos no espaço, como criar algorimos que gerem formas que se movimentem em três dimensões. (sessão 6)

alguns exemplos mais elaborados de video, como slitscan, delays, texturas em 3d; início do tracking de vídeo: detecção de presença, movimento, background removal, detecção de posição de centróides de blobs, frame differencing, detecção de outras features como caras, mãos, … (sessão 7, 8)

arraylists como recipientes dinâmicos de dados, texto no processing, como ler linhas de texto, separar palavras e espalhá-las espacialmente para desenhar. o sistema esférico (semelhante ao polar, mas em 3d), como desenhar pontos no espaço em forma de esfera e modificá-los com base no som. (sessão 9)

máquinas de estado simples mais avançadas, onde criamos várias classes, obstáculos, bolas, tiros, e todos elas comunicam entre si. cada bola, mesmo as autónomas colidem com os obstáculos, a nossa bola envia tiros que colidem com bolas e obstáculos, e implementamos uma lógica simples quando as bolas em cena terminam, re-iniciamos um novo nível. (sessão 10)

depois vimos puredata, arduino, open frameworks, que ficará como resumo no próximo post.

o curso está na fase laboratorial, estamos activamente a desenvolver projectos individuais e uns projectos colectivos, tirar dúvidas mais específicas em torno de algumas coisas, estamos de antenas apontadas para uma apresentação de projectos de fim de curso que ocorrerá no início de julho.