Mudanças entre as edições de "Hermeto"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
(→‎Software: informações sobre código inicial)
(→‎ADK: Código inicial para ADK)
Linha 65: Linha 65:
   
 
Já upei no gitHub o [https://github.com/thiagoalz/Hermeto/tree/master/ADKCode/libraries/SimpleJoystick/ código da biblioteca que irá controlar os Joysticks]. Basta adicionar a pasta "SimpleJoystick" na pasta "libraries" do arduino e rodar o exemplo (Pelo proprio menu da IDE).
 
Já upei no gitHub o [https://github.com/thiagoalz/Hermeto/tree/master/ADKCode/libraries/SimpleJoystick/ código da biblioteca que irá controlar os Joysticks]. Basta adicionar a pasta "SimpleJoystick" na pasta "libraries" do arduino e rodar o exemplo (Pelo proprio menu da IDE).
  +
Podemos criar n objetos de joystick, cada um com 5 portas (up, down, left, right, button), e consultar sequencialmente o estado de cada um deles.
+
Também upei o inicio do código. Até agora está apenas controlando 4 objetos de joystick, cada um com 5 portas (up, down, left, right, button), consultando e imprimindo sequencialmente o estado de cada um deles.
  +
<pre style="color:red">Alerta: Os pinos 50 e 51 ficaram completamente loucos com meu código. Não sei se estão com problemas ou se comportam naturalmente de maneira distinta).</pre>
   
 
Source no gitHub: https://github.com/thiagoalz/Hermeto
 
Source no gitHub: https://github.com/thiagoalz/Hermeto

Edição das 20h33min de 14 de agosto de 2011

Arquitetura Geral

Projeto de Tenori-on multi-usuário projetado para o ADK Chalenge e será apresentado no GDD Brasil 2011.

Source no gitHub: https://github.com/thiagoalz/Hermeto

Status
  • Início: 19/07/2011
  • Status: Andamento
  • Participantes: Lechuga, GutoMaia, Klaus, Habib, Roberto.






Introdução

O que poderia ser mais divertido do que interagir com a festa? Mais legal do que influenciar, e deixar sua marca no som que está rolando? É com essa ideia em mente que surge o projeto Hermeto. Em meados de 2005, o artista japonês Toshio Iwai criou um instrumento musical eletrônico denominado Tenori-on, que prontamente foi reproduzido por outros grupos, inclusive em versões livres, como seu “primo” Monome. O instrumento consiste em uma tela com uma matriz de botões, geralmente de 16x16, de forma que cada um pode ser ativado criando inúmeros sons de forma criativa (fonte: Wikipedia). O instrumento pode ser visto em funcionamento nas referências [1] e [2]. Então, por que não criar um Tenori-on gigante e colaborativo?

Objetivo

O objetivo desse projeto, portanto, é utilizar um tablet Xoom, em conjunto com um kit ADK , para criar um Tenori-on (16x16) tamanho família, que utilizará também sons tipicamente brasileiros, para que qualquer participante possa interagir mixando-os na sonzeira rolando.

Descrição Técnica e Funcionalidades

O instrumento desenvolvido conterá, inicialmente, apenas as funcionalidades principais do original. Uma faixa vertical percorrendo e tocando a matriz de sons, de maneira similar ao exemplo de código demonstrado em [2]. Contudo, já na versão inicial o usuário também poderá variar a velocidade (BPM) da faixa e selecionar batidas padrão ou músicas como base da mixagem. Outra diferença será a utilização de sons tipicamente brasileiros, como percussão, berimbau e pandeiro, em conjunto com os sons puramente eletrônicos. O usuário poderá interagir com o instrumento diretamente através do tablet e também através de controles, que estarão ligados à placa ADK. Serão utilizados 2 tipos de controle, um de atari (Utilizando o método descrito em [3]) e um montado especialmente para o projeto, contendo 2 reguladores de volume e um botão, tudo em tamanho família. Os reguladores poderão modificar linha e coluna, e o botão irá confirmar a seleção no Tenori-on. As seguintes funcionalidades serão implementadas dependendo de disponibilidade de materiais e tempo hábil para desenvolvimento: (a) Interação com o Tenori-on através de película touchscreen ligada à placa ADK, (b) Implementação de aplicação cliente para interação com o Tenori-on através de outros aparelhos android utilizando mesma rede wi-fi.

A figura ao lado demonstra a arquitetura final da solução. Temos: (a) Xoom rodando aplicação com simulação de Tenori-on; (b) Projetor, ou TV, conectado à sadia HDMI do Xoom; (c) Controle de Atari conectado à placa ADK; (d) Controle artesanal conectado à placa ADK. (e) Placa ADK conectada ao Xoom; (f) Roteador Wi-fi; (g) Telefones Android com aplicação cliente instalada.

Andamento

Hardware

Pegando como idéia o funcionamento do controle de atari [3], atestei que é possível detectar o pressionar de um botão simplesmente o aterrando (Código de exemplo: https://gist.github.com/1144555). Assim, vamos conectar todos os controles dessa maneira. 5 "botões" (cima, baixo, direita, esquerda, botao) soltos/aterrados. Desse modo, as palancas de fliperama funcionarão de maneira EXATAMENTE igual ao controle de ATARI, e de uma maneira MUITO simples para conectar ao arduino.

Testado com a palanca e o botão que temos, em conjunto com a biblioteca SimpleJoystick (github do projeto) e funcionou perfeitamente! Utilizei um cabo de rede de 3 metros para a conexão :D

Agora só falta soldar e utilizar conectores para facilitar a conexão!

Padrão de cores utilizado no cabo de rede:

  • M=GND
  • A=Up
  • A/B=Down
  • V=Left
  • V/B=Right
  • L=Button

Software

Modelo de Tenori-on: [2]

Identificamos dois projetos para android de software livre (GPL3) que implementam funcionalidades similares e podem ser uteis:

  • Androidome: Implementa uma interface (OSC) para se comunicar com um PureData na mesma rede. É mais completo, mas necessita de um PC+PureData+Wi-fi.
  • ToneMatrix: Mais simples, mas toca os sons ele mesmo!

Provavelmente usaremos o ToneMatrix como base. Fica mais simples com tudo no celular, com menos pontos de falha e mais facil pra mixar com sons que estao no celular.

GutoMaia subiu um código inicial no gitHub. Rodar no simulador: mvn clean package. Subir para o aparelho: mvn clean package android:deploy.

Source no gitHub: https://github.com/thiagoalz/Hermeto

ADK

Documentação ADK: http://developer.android.com/guide/topics/usb/adk.html

Já upei no gitHub o código da biblioteca que irá controlar os Joysticks. Basta adicionar a pasta "SimpleJoystick" na pasta "libraries" do arduino e rodar o exemplo (Pelo proprio menu da IDE).

Também upei o inicio do código. Até agora está apenas controlando 4 objetos de joystick, cada um com 5 portas (up, down, left, right, button), consultando e imprimindo sequencialmente o estado de cada um deles.

Alerta: Os pinos 50 e 51 ficaram completamente loucos com meu código. Não sei se estão com problemas ou se comportam naturalmente de maneira distinta).

Source no gitHub: https://github.com/thiagoalz/Hermeto

Design

Sons

Usaremos sons não convencionais. Klaus está fazendo esse levantamento.

Referências

  1. Tenori-on em execução: http://www.youtube.com/watch?v=_SGwDhKTrwU
  2. Exemplo de Tenori-on em flash: http://wonderfl.net/c/qf4b
  3. Arduino com controle de Atari: https://sites.google.com/site/joetcochran/joylite-maze/how-to