Glitchy square

A partir do circuito básico que tinha usado para o K-synth, fiz um circuit bending acrescentando alguns componentes e testando vários tipos de ligação entre eles. O resultado foi um instrumento audiovisual onde áudio e imagem se retroalimentam, gerando animações e sons inusitados, sem muito controle do resultado. Ligando o instrumento a uma TV, as imagens geram ruídos de acordo com a animação e o tamanho das formas. O som interfere na imagem na medida em que cada pulso de áudio vai também para a saída de vídeo, alterando o que é exibido na tela.

Coloquei o circuito em uma caixa e dei o nome de Glitchy Square, um objeto autônomo que gera sons e imagens sem a necessidade de um computador. Ele pode conectado diretamente a uma TV ou projetor. O interessante é que para cada TV o resultado é completamente diferente, devido (imagino) ao modo como cada TV recebe o sinal em sua entrada.

O nome Glitchy Square é uma homenagem ao famoso quadro ‘Black Square’, do pintor russo Malevich. Ele tentava chegar aos limites da (não)representação e este quadro seria, segundo ele, o máximo da não objetividade.

O objeto acrescenta movimento e som a esta ideia e busca as sensações da não objetividade. As imagens recebem interferência dos sons e vice-versa, e os elementos fundamentais do circuito (corrente, tensão, etc) geram o conteúdo. Em breve vou fazer uma composição com conteúdo gerado exclusivamente por ele.

Segue abaixo o circuito. Os componentes usados foram R1=1k Ohm / C1=15microF

Ponto, um videogame sem vencedor

Este será o tema da performance que vou desenvolver dentro da minha residência aqui no marginalia lab. Será uma performance audiovisual com sons e imagens sincronizados, tocados em um “console” construído por mim a partir da placa uzebox, e controlado por interfaces como joystick SNES.
A ideia é subverter a lógica dos games antigos, mas usando sua estética, sons e elementos gráficos característicos. A performance tratará de alguns temas ligados aos videogames, alguns de forma mais crítica, outros mais abstratos. Todas as imagens e sons serão criados por mim e tocados em tempo real, em uma performance de aproximadamente 30 minutos.
O instrumento será completamente autônomo, e funcionará sem a necessidade de um computador. Só preciso ligar as saídas no projetor e sistema de som.

Primeiros video games

Os primeiros video games foram programados para computadores mainframe, no início da década de 1950.
Historicamente o Cathode Ray Tube Amusement Device, de 1947 é considerado o primeiro video game. Usava um circuito analógico e era visualizado em um tubo de imagens de TV personalizado.
No início da década de 1950, surgiram alguns games que foram produzidos para rodar em computadores mainframe, como o “Chess” (1950) que usava o Computador Ferranti; o NIMROD (1951), primeiro computador criado especificamente para rodar um jogo; “OXO” (1952), um jogo da velha que usava o computador EDSAC, que já tinha uma interface gráfica; e “Tennis for two” (1958) que usava um osciloscópio para visualização das imagens e tinha controles rudimentares.
Na virada da década de 1960, usando computadores menores e mais potentes, foram criados jogos como “Mouse in the maze” e “jogo da velha” para o computador TX-0 (1959); “Spacewar!”, para o DEC PDP-1; e “Galaxy game”, para o DEC PDP-11/20.
Em 1966 foi criado por Ralph Baer o protótipo “Brown box”, que se transformaria no primeiro console para games, o Magnavox Odyssey, lançado em 1972.
Em 1971, foi construído o primeiro “arcade game”, que funcionava à base de moedas. Ele se chamava “Computer Space” e se baseava no “Spacewar!”
Durante a década de 1970 surgiram os principais clássicos dos games da primeira geração: “Pong” (1982); “Space Invaders” (1978); “Asteroids” (1979); e “Pac Man” (1980).
Nas décadas seguintes surgiram novos tipos de console, games para computador, portáteis, etc. Pra saber mais, tem este link bem completo no wikipedia.

Pesquisa retro video games

Depois de escolhida a placa, agora estou fazendo uma pesquisa de referências de video games antigos.
Neste site tem vários games, alguns com vídeos mostrando seu funcionamento e também disponíveis pra download.

Resultado da pesquisa de placas

Analisando todas as placas que encontrei, estou agora entre 2 para construir o projeto, a gameduino e a uzebox.

Já consegui uma uzebox e o interessante dela é que dá pra usar o joytick do SNES pra controlar a performance. Pra programar é preciso uma interface ISP e um programa que envia os dados pro chip, como o AVR Studio. Infelizmente, ela não tem midi in como pensei, então pra tocar sons em tempo real vindo de outro lugar (p.ex. do arduino) é necessário criar uma forma de comunicação entre os pinos de saída do arduino e a entrada ISP da uzebox.

A programação das animações e sons da placa é feita pelo AVR Studio (ou similar) e ela tem vários exemplos que podem ser modificados pra chegar no resultado esperado.

A gameduino, por ser uma placa acoplada ao arduino, é programada direto pelo software do próprio arduino, tornando bem mais fácil a construção das animações. Ela tem sons mais sofisticados também. Acabei de saber que ela pode chegar pra gente em 20 dias. É uma boa opção…

As melhores (pra este projeto)

Neste post coloco as 3 soluções mais interessantes para o meu projeto de construir um instrumento que gere sons e imagens dentro da estética dos games antigos.

- UZEBOX

Esta placa permite a geração de fundos (+deslocamentos e subdivisões) e sprites sobrepostos a ele, 256 cores, resolução de até 360×224, midi in, saída composta ou s-video, 4 canais de áudio que podem ser tocados em tempo real via midi, entrada para controles do SNES, vídeo playback, tudo com uma velocidade e qualidade muito boas.

Neste vídeo são apresentados vários jogos feitos usando a placa. Sua programação é feita a partir de um emulador disponível no site.

- GAMEDUINO

Shield para o arduino, que permite ótima qualidade de som e imagem, resolução de 400×300, saída VGA, programação via arduino com vários exemplos, 64 vozes independentes, animações complexas, 3d, vídeo playback, 512 cores, fundos e sprites animados. Neste vídeo são mostradas algumas de suas funcionalidades. O único problema é que estará disponível somente no final de Maio de 2011.

- PICASO MICRO VGA – II

A nova versão da placa da 4D System apresenta muitas melhorias em relação à primeira versão, permitindo agora resolução de até 800×600, gráficos mais rápidos e mais possibilidades de animações. Com esta placa dá pra fazer animações mais complexas sem a necessidade de divisão entre fundo e sprite, que acontece nas duas acima. Pode ser programada usando a própria linguagem ou pelo arduino.

Vídeo analógico

Antes de começar minha pesquisa, minhas referências estavam mais ligadas aos sintetizadores de vídeo analógicos feitos a partir dos anos 60. Depois comecei a focar mais na estética dos games dos anos 70/80. Seguem alguns exemplos de synths analógicos feitos hoje. A imagem é bem fluida, mas as animações são bem básicas ou usam como fonte um sinal de vídeo capturado.

- VGA expropriator

- LZX Industries

- Rutt Etra

- Audiovisualizers

Nesta página tem a história dos sintetizadores analógicos.

Imagem + cor

Um estágio acima das placas que geram imagens apenas em P&B, existem outras que possibilitam o uso da cor.

- Phasor

Usando o microprocessador ATmega88, o programador Linus Akesson conseguiu imagens bem interessantes e também sons. O circuito gera uma saída composta (RCA) e uma de áudio (mono). No site ele disponibiliza os códigos e bastante informação sobre o processo. Ele criou também um outro circuito chamado Craft que consegue resultados semelhantes, mas usando como saída o sistema VGA.

- µVGA-PICASO-MD1


Faz imagens e animações coloridas de formas geométricas e bitmaps. É um pouco lenta ao gerar imagens grandes e ao limpar a tela. Fiz algumas experiências com ela e pelo que tenho em mãos ainda é a melhor opção. Consegue uma resolução de até 640×480, com 256 cores.

No forum da empresa que faz a placa tem um post de uma pessoa que conseguiu fazer animações mais complexas usando ela, mas tem um circuito com outros componentes acoplado. Ele disponibiliza o código das programações que fez. A programação é feita direto no processador no formato .hex.

- Propellurino

Uma shield para arduino muito interessante, que gera imagens e sons complexos, tem entrada midi em tempo real e saída VGA. Infelizmente, há algum tempo, o site da placa está fora do ar.

- Shield micro VGA

Bem parecida com a Picaso, mas na demonstração não aparecem animações. Possui uma library para arduino e tem saída VGA a 800×600.

- Game Station

Programada em um circuito baseado no chip ATMEGA64, esta placa permite uma simulação muito boa do ambiente dos games antigos. Tem uma boa resolução e velocidade nas animações. O circuito, entretanto não tem muita documentação nem especifica se pode ser baixado ou comprado.

- NTSC signal with arduino

Aqui as imagens são coloridas e o exemplo mostra uma animação simples, usando somente o arduino. A documentação parece ser toda em Japonês, então fica bem difícil seguir.

- Beagleboard

Praticamente um computador em uma placa um pouco maior que o arduino. Consegue rodar todo um sistema operacional e tem saída em alta resolução. Para este projeto, entretanto, que busca imagens e sons em baixa resolução pelo conceito da proposta, não faz tanto sentido.

Outras formas de gerar imagens

Neste projeto, meu objetivo é gerar animações generativas em tempo real, ou seja, preciso controlar parâmetros dos elementos através de joysticks ou outras interfaces. Mas existem outras formas de gerar imagens que não têm este controle amplo sobre os elementos.

Para gerar ruídos, pode ser feito um circuito como este, que manda imagens deformadas pela saída composta (RCA). Outra forma, demostrada no mesmo site, mostra o hackeamento do sinal VGA, gerando linhas coloridas.

Pesquisa placas que geram de imagens

Para a construção do instrumento audiovisual, pesquisei sobre as placas que geram imagens e estão disponíveis atualmente. Algumas são mais simples e geram imagens limitadas, outras mais sofisticadas, com cor, imagens complexas e até suporte a vídeo. Tentei encontrar de preferência shields para o arduino ou que tivessem programações que pudessem ser feitas neste ambiente.

Vou dividir em alguns posts os resultados que encontrei, de acordo com as possibilidades de cada uma.

Primeiro, as que geram imagens em preto e branco. No primeiro protótipo que construí, usei a library TVOut, que gera imagens neste formato. Ela pode ser programada direto pelo arduino e só são necessárias algumas ligações usando resistências entre o arduino e o sinal de saída (RCA). Ela permite também a geração de sons básicos.

Os diagramas de ligação, exemplos e a library estão disponíveis aqui.

Algumas outras placas fazem a mesma função, gerando imagens em P&B, mas com apeifeiçoamentos em relação à TVOut.

- Video Experimenter Shield



Tem uma library aperfeiçoada a partir da TVOut, que permite uma entrada e vídeo e a sobreposição de duas camadas de imagem (a da entrada mais a gerada por programação). Permite também a captura de imagens em baixa resolução da sua entrada, o trackeamento de objetos para possíveis usos em computer vision, entre outras funcionalidades. Porém, não tem saída de áudio.

- Video game shield (Wayne and Layne)

Também similar à TVOut, com uma vantagem de ser uma placa acoplada ao arduino, o que provavelmente dá mais velocidade. Tem ligações para joysticks de jogos como Wii. Tem saída de som stereo.

- TellyMate shield

Parecida com as anteriores, mas aparentemente sem saída de áudio e com pouca documentação.