Introdução:
Esse é um projeto que me veio a mente há pouco mais de 1 ano e ficou engavetado por diversos motivos e desvios de percurso. Retomado o que eu não deveria ter parado, foram dados os passos da segunda etapa: Montar o protótipo em
protoboard (a primeira parte foi de pesquisa e elaboração de objetivos):
Eu poderia ter usado um
protoboard maior e feito tudo em um só, mas quis usar o
protoshield que eu fiz e, como não cabia tudo, usei mais dois bloquinhos de
protoboard pra colocar o amplificador de áudio e o circuito de
clock para o PSG. As fotos comentadas podem ser vistas
neste álbum.
Mas, enfim, do que se trata isso? É basicamente um
shield de Arduino para gerar áudio com o circuito integrado
PSG (Programmable Sound Generator) AY-3-8912, típico de microcomputadores das décadas de 70 e 80, como MSX, ZX-Spectrum, ZX81, Apple II etc, e que pode ser usado para
chiptune ou qualquer outra coisa que sua imaginação permitir.
Diversos projetos já foram feitos com esse intuito como o que está no
site arduino.cc ou este do
986-Studio, entre diversos outros.
O mais promissor, mas que aparentemente morreu no parto, foi o
MIDIarcAYde, que chegou a ter um
shield completo com o PSG e conexão MIDI, mas não houve divulgação do código fonte, do esquemático do projeto, nem nada. Provavelmente foi um trabalho de conclusão de curso e ficou nisso mesmo. O
vídeo linkado no
blog do projeto, com a placa em funcionamento, é interessante.
Apesar de haverem poucas diferenças entre todos os projetos, tomei como base o desenvolvimento demonstrado no
blog do DQ (partes
um,
dois,
três,
quatro e
cinco), participante ativo do
Garoa Hacker Clube (ele fez
uma página no wiki do Garoa sobre o projeto dele).
Apesar de ser muito didático, o projeto do DQ peca, IMO, no mesmo ponto que os outros: Falta uma biblioteca de
software pro acionamento do circuito /
shield, que permita um uso menos técnico e mais criativo, com mais liberdade, pra quem efetivamente quer fazer música (o tal
chiptune) com o circuito.
Software inicial:
A princípio, criar uma biblioteca (lib - de
library) para facilitar o uso do PSG de forma semelhante a linguagem BASIC dos microcomputadores MSX, com funções equivalentes aos comandos SOUND e PLAY, este último, com os macro comandos de controle de notas, duração, volume etc.
A partir desse ponto, criar biblioteca de ruídos pré definidos (tiro, motor etc), acessíveis a partir de uma função simples.
Com isso disponível, programadores menos experientes podem colocar suas músicas no Arduino com programação básica, sem precisar conhecer os meandros de funcionamento do PSG.
Expandindo a usabilidade:
E se o PSG puder tocar músicas armazenadas em um cartão SD, selecionadas num
shield com botões e LCD?
E se o PSG puder ser acessado a partir de uma conexão MIDI (como demonstrado no projeto MIDIarcAYde), pela USB (como fez o DQ), ou mesmo por TCP/IP, RS-485, I2C ou seja lá qual conexão estiver feita com o Arduino que hospeda o PSG
shield?
E se mais de um Arduino, cada um com seu PSG
shield, estiver tocando a mesma música, com mais canais de áudio e ruído, disponíveis simultaneamente?
Mas isso será assunto para as próximas publicações...