Software e Hardware

Sistema Eletrônico para Detecção de Movimento com Sensores de Infravermelho – Um sistema formado por uma placa controladora e até dez sensores de infravermelho utilizado na criação de instalações interativas.

Sistema Eletrônico para Detecção de Movimento com Sensores de Ultrassom – Um sistema formado por uma placa controladora e até quatro sensores de ultrassom utilizado na criação de instalações interativas.

Red Controller – Um controlador ergonômico constituído por botões pressionáveis, acelerômetros e giroscópios que pode ser utilizado em sistemas de geração de áudio em tempo real.

Kinect Painting – Um sistema de pintura digital em tempo real com gesto livre que, além da pintura, também gera texturas sonoras de acordo com as cores e suas posições na tela.

Kinect Grains – Um ambiente virtual 3D que permite a integração da dança com a síntese de som e de imagem em tempo real.

Granular Score – Uma partitura gráfica alternativa para criação de sons e vídeos.

Granular Drawer – Um sistema para geração de imagens e vídeos em tempo real com Síntese Granular.

Granular Streamer – Um sistema para geração de áudio em tempo real com Síntese Granular.

Genetic Algorithm Mapper – Uma mapeador entre um controlador e um sistema baseado na teoria da evolução das espécies.

EVOGrain – Um sistema para Síntese Granular de som controlado por um Algoritmo Genético apresentado em uma bela interface.


Sistema Eletrônico para Detecção de Movimento com Sensores de Infravermelho

sistemainfravermelho

Este sistema é constituído por uma placa controladora e diversos sensores/emissores de infravermelho. Cada sensor emite um feixe de luz infravermelha que, em contato com uma superfície fixa ou móvel, reflete a luz de volta para o sensor. Suas aplicações são diversas, permitindo inferir a distancia de um objeto ou de uma pessoa, mas também permitindo medições na distorção de superfícies. Este sistema foi utilizado na criação de várias instalações interativas como a Estrela Sensível de Guto Requena.


Sistema Eletrônico para Detecção de Movimento com Sensores de Ultrassom

sistemaultrasom

Este sistema é constituído por uma placa controladora e diversos sensores/emissores de ultrassom. Cada sensor emite um som de frequência inaudível que se espalha em diversas direções pelo ambiente, quando em contato com uma superfície fixa ou móvel, o som é refletido de volta para o sensor. Suas aplicações são diversas, permitindo inferir a distancia de um objeto ou de uma pessoa. Este sistema foi utilizado na criação de várias instalações interativas como o Medicine Trolley de Fiona Haines.


Red Controller

redcontroller

Este dispositivo deveria ser flexível para poder ser utilizado na criação de DMIs inspirados em instrumentos acústicos, e também como um controlador alternativo. O objetivo foi adquirir os conhecimentos necessários para montar controladores com sensores capazes de reproduzir a forma de interação dos diversos experimentos mencionados anteriormente durante o estágio que realizei no Input Devices for Music Interaction Lab na McGill University em 2009/2010. Por questão de completude, e para se ter uma ideia da complexidade do instrumento, listamos abaixo o equipamento necessário para montagem de um protótipo:

-uma placa controladora Arduino Mini;
-uma porta de comunicação serial USB;
-um acelerômetro de três eixos;
-um giroscópio de dois eixos;
-três botões sensíveis a pressão com cerca de 1 cm de diâmetro;
-quatro botões convencionais;
-placa de montagem, fios e resistores;
– cola quente, fita adesiva, fita isolante, pequenos pedaços de espuma;
-recipiente de plástico transparente com extremidades de borracha vermelha;
-cabo USB.

A placa controladora Arduino implementa o conceito de hardware aberto, um microprocessador programável que disponibiliza diversos pinos de entrada ou saída onde podem ser conectados circuitos elétricos ou eletrônicos. Os botões convencionais atuam como interruptores em um circuito elétrico que pode assumir dois estados, ligado ou desligado, isto é, controlam apenas um estado binário (pressionado, não pressionado) e são conectados a um pino de entrada digital da placa Arduino. Os demais sensores são conectados a pinos analógicos (entradas ligadas a conversores analógico-digitais). Em geral os sensores são circuitos elétricos onde um dos componentes é uma resistência variável e cuja voltagem final está compreendida dentro de um intervalo previsto.

circuitoredcontroller
Os sensores de pressão, para apresentar um exemplo, são construídos basicamente por dois filmes feitos de material condutor, separados por um filme de material não condutor e de espessura reduzida. Ao pressionar o sensor, os dois filmes feitos de material condutor se aproximam causando a diminuição da resistência total do material. Já os sensores de aceleração e de velocidade angular foram adquiridos como circuitos eletrônicos em hardware aberto. Existem diversas soluções na microeletrônica para a implementação de acelerômetros e giroscópios, bem como outros sensores de mesma natureza (http://www.sensorwiki.org, último acesso em 05/07/2010). Esses circuitos eletrônicos disponibilizam pinos de saída cujo valor da voltagem oscila conforme a aceleração ou velocidade angular em torno de um eixo específico. A placa controladora é facilmente conectada à placa que contém a porta USB através de dois pinos digitais específicos chamados tx e rx.

Para ler os sensores conectados à placa controladora é necessário escrever um pequeno programa que é carregado e executado diretamente na placa controladora chamado de firmware. Neste programa são escritas instruções para a leitura de cada um dos sensores conectados aos pinos da placa controladora. Após obter os valores, os parâmetros de saída são enviados para o driver pela porta serial USB em uma seqüência de bytes. O driver é um programa executado do outro lado da conexão USB, ou seja, do lado do computador, e é responsável por solicitar e receber informações do firmware com uma taxa de amostragem em torno de 200 Hz, uma freqüência bem adequada para DMIs (WANDERLEY, 2004). O loop do firmware é executado diversas vezes para cada leitura solicitada pelo do driver com esta taxa de amostragem. O driver também decodifica os valores dos sensores e envia os resultados para um endereço de destino em mensagens OSC.


Kinect Painting

kinectpainting

Neste Instrumento Musical Digital, o Kinect é utilizado para detectar a posição das mãos do usuário para que este possa interagir com a tela do computador ou com uma área de projeção fazendo desenhos. Quando as mãos do usuário estão próximas ao seu corpo, é exibido um painel de cores por meio do qual poderá ser selecionada uma cor de tinta para a mão esquerda e outra para a direita. Quando o usuário projeta suas mãos para frente, são projetadas manchas com a cor selecionada em uma tela de cor inicialmente preta.

Além da cor, a forma das manchas também é uma escolha do usuário, feita de um modo bastante intuitivo, onde seu formato depende do formato das mãos do usuário. Por exemplo, se a mão do usuário estiver fechada a pincelada terá o formato de um pequeno círculo e, com a mão aberta, será possível visualizar os contornos dos dedos no desenho. Alternativamente, o usuário pode segurar um objeto qualquer em sua mão como, por exemplo, um livro, uns óculos, um pedaço de cartolina recortada e, ao projetá-lo para frente, o formato do objeto é capturado pelo Kinect e estampado na imagem. As manchas feitas pelo usuário são lentamente apagadas, sendo assim, o desenho leva cerca de um minuto para voltar completamente ao fundo preto. Para acelerar este processo de limpeza, o usuário deve posicionar as duas mãos para baixo e, assim, o desenho desaparece em poucos segundos.

O sistema executa uma análise visual em tempo real, mapeia as informações visuais em parâmetros sonoros. Para tanto, primeiramente selecionamos um grupo reduzido de pixels (64 pixels, em uma grade de 8 por 8, distribuídos uniformemente em uma tela de 800 por 800 pixels), para cada um destes, recuperamos a cor conforme o sistema HSB (Hue, Saturarion e Brightness). Em seguida, a tonalidade do pixel é convertida em frequência sonora, a saturação em tamanho e o brilho em amplitude. Com estas informações é montada uma mensagem OSC do tipo “Grão” e enviada para o Granular Streamer, que emite um grão sonoro.


Kinect Grains

kinectgrains

Neste sistema, criamos um espaço virtual tridimensional no qual pequenas esferas coloridas são posicionadas. Cada uma destas esferas possui propriedades individuais como cor, brilho e tamanho, e coordenadas x, y, e z. O Kinect é utilizado para realizar uma leitura de um determinado espaço físico detectando a presença de corpos ou, mais especificamente, do corpo do usuário. Quando o usuário entra em contato, virtualmente, com estas esferas, seus parâmetros cor, brilho, tamanho e coordenada x são convertidos respectivamente nos parâmetros sonoros frequência, amplitude, tamanho e pan, e uma mensagem do tipo “Grão” é enviada para o Granular Streamer, que emite um grão de som. Desta forma cria-se uma associação entre o espaço virtual e o real.

Conceitualmente podemos dizer que estamos estendendo a Síntese Granular, além dos domínios do som e da imagem, para um terceiro, o espaço físico. Neste sentido, implementamos a Síntese Granular Multimodal, na qual estamos granulando o próprio espaço, ou melhor, decompondo o espaço em unidades simples de informação que podemos chamar de grãos espaciais e, assim, cada esfera é um grão de informação espacial, sonora e visual.

A criação de uma performance com um Instrumento Musical Digital deste tipo envolve primeiramente o trabalho de agrupar os grãos espaciais em objetos específicos de forma a criar estruturas que sejam visualmente e sonoramente interessantes (Figura 27), mas também se deve considerar um padrão de interação com um ou mais usuários, seja através de gestos interativos ou até mesmo por meio da dança.


Granular Score

granularscore

Proporcionando uma forma bastante específica de controle da Síntese Granular Audiovisual, implementamos o sistema Granular Score (Figura 24), uma partitura gráfica que permite a organização e o arranjo de objetos granulares em tempo diferido com grande precisão no controle sobre grãos individuais ou sobre grupos de grãos (Souza e Maia, 2013). De modo geral, uma partitura gráfica é uma visualização de informações sonoras por um mapeamento específico que favoreça a análise, criação e edição de uma composição. Em nossa pesquisa identificamos a necessidade da criação de uma partitura gráfica para controle do Granular Streamer para que fosse possível experimentar, de uma maneira mais fácil, o material básico, formado de grãos sonoros e visuais, com um melhor detalhamento e ainda proporcionar uma visualização global da peça que está sendo composta.


Granular Drawer

primeiros_exp_fade

Para implementar a Síntese Granular Visual desenvolvemos um sistema em linguagem de programação JAVA e o nomeamos de Granular Drawer. Este sistema tem a função de desenhar imagens estáticas e vídeos a partir de grãos visuais e, por isso, o nome que, em inglês, significa “desenhista granular”. A escolha da linguagem JAVA foi feita por dois motivos. Primeiramente, assim como ocorre com o Granular Streamer, devido a sua compatibilidade com múltiplas plataformas (Windows, Mac, Linux). Segundo, pela possibilidade de integração com as bibliotecas gráficas do Processing (https://processing.org/) que são disponibilizadas em JAVA. Processing é uma linguagem de programação simplificada que provê um ambiente flexível para o aprendizado da codificação dentro do contexto das artes visuais. Desde 2001, promove a alfabetização digital dentro das artes visuais e, inversamente, a alfabetização visual dentro da tecnologia. Atualmente, dezenas de milhares de estudantes, artistas, designers e pesquisadores usam o Processing para a aprendizagem e prototipagem de sistemas digitais de arte visual. O controle do Granular Drawer em tempo real também é feito por meio de mensagens OSC (Open Sound Control) utilizando as bibliotecas desenvolvidas por Chandrasekhar Ramakrishnan e disponibilizadas em seu site no endereço http://www.illposed.com.


Granular Streamer

granularstreamer

Para implementar a Síntese Granular de som desenvolvemos um sistema em linguagem de programação JAVA e o nomeamos de Granular Streamer. Em linhas gerais, este sistema funciona como se fosse um conjunto de músicos (ensemble) prontos para executar uma composição, ou seja, o som emitido pelo sistema é sempre produzido em tempo real. Porém, cada “instrumentista” do conjunto, ao invés de oferecer a sonoridade de seu instrumento acústico, apresenta uma sonoridade granular. O sistema pode ser configurado para ter um número arbitrário de instrumentistas conforme as necessidades do compositor, cada qual executando sua própria parte de maneira independente dos demais. Neste sentido, o sistema está organizado em fluxos independentes de grãos que, em sequenciadores de áudio convencionais, equivale a organização em tracks, trilhas ou faixas. O termo fluxo vem do inglês stream, e daí o nome de nosso sistema Granular Streamer.


Genetic Algorithm Mapper

gamapper

Criamos um plug-in para aplicar algoritmos genéticos a um número arbitrário de parâmetros de entrada e de saída. Trata-se da conversão do módulo genético do sistema EVOGrain, o qual foi então chamado de Genetic Algorithm Mapper. De forma semelhante ao módulo genético do EVOGrain, o G.A.Mapper executa constantemente o processo de evolução genética e atualiza os parâmetros de saída sempre que uma nova geração é calculada. Com o uso deste plug-in é possível mapear qualquer interface ou dispositivo de entrada para um sistema de síntese sonora (seja síntese granular ou não).


EVOGrain

evograin

EVOGrain é um sistema de síntese granular em tempo real que controla simultaneamente dois fluxos de grãos através de uma interface gráfica simples e intuitiva. O controle dinâmico da síntese ocorre com a interação do usuário com uma seção da interface constituída de três janelas, cada uma delas interpretada como um espaço real bidimensional. Tudo que precisa ser feito para o sistema iniciar a síntese é clicar no botão “Play” e então usar o mouse para desenhar retângulos vermelhos e azuis nos três espaços disponíveis (vermelhos com o botão esquerdo e azuis com o botão direito). Os retângulos desenhados pelo usuário são utilizados como alvos para direcionar a evolução de uma seqüência de gerações de indivíduos através do algoritmo genético. O algoritmo genético por sua vez controla os parâmetros da síntese granular.

Anúncios