- André Luiz Santos Messias ([email protected])
- Mateus Santos Messias ([email protected])
- Pedro Borges Gudin ([email protected])
Não é um dispositivo MIDI completo, mas utiliza conceitos semelhantes.
Nosso objetivo com o projeto foi expandir as funcionalidades do pianinho original, transformando-o em um teclado mais versátil e interativo. Para isso, implementamos diversas features que vão desde o mapeamento de frequências no formato MIDI, a adição de sustenidos, até a gravação e reprodução de sequências musicais.
- Cada nota tocada no teclado é representada por uma mensagem no estilo do protocolo MIDI:
- 4 bits para Frequência: Representa a nota específica (até 16 notas diferentes).
- Esse mapeamento permite uma representação compacta e padronizada das notas, facilitando futuras integrações com sistemas MIDI.
- O oitavo botão do teclado ativa o modo de gravação:
- Ao pressionar o botão pela primeira vez, o sistema começa a gravar as mensagens MIDI geradas pelas notas tocadas.
- Ao pressionar novamente, o sistema para a gravação e inicia a reprodução automática da sequência gravada.
- Abaixo há um diagrama ilustrando a lógica de gravação e reprodução:
- As mensagens são armazenadas em blocos registradores com uma taxa de amostragem específica. Isso significa que os eventos são registrados em intervalos regulares para garantir a precisão temporal durante a reprodução.
- As notas tocadas são identificadas e exibidas em tempo real no display de 7 segmentos.
- Isso fornece feedback visual imediato ao usuário, mostrando qual nota está sendo tocada.
- Em vez de uma porta OR, foi implementado um multiplexador que permite duas ações simultâneas:
- A reprodução das notas previamente gravadas (quando o sistema está em modo de reprodução).
- Tocar novas notas em tempo real.
- Dessa forma, é possível combinar sinais tanto do que foi gravado quanto do que o usuário está tocando no momento.
- O botão 8 funciona como um switch e a lógica está inclusa internamente ao módulo FSM_Recorder:
- Cada pressionamento alterna o estado lógico (
IDLE
↔RECORDING
↔PLAYBACK
). - Esse estado aciona o modo de gravação/reprodução e pode ser utilizado para outras funcionalidades no circuito.
- Cada pressionamento alterna o estado lógico (
- Gravação:
- Os eventos MIDI (
Note On
,Note Off
) são capturados e armazenados nos registradores. - Cada evento inclui um timestamp, a nota tocada e o status.
- Os eventos MIDI (
- Reprodução:
- Os eventos gravados são lidos sequencialmente dos registradores e reproduzidos no buzzer (ou saída de áudio).
- (Futuro) Envio via UART:
- As mensagens gravadas poderão ser transmitidas para dispositivos externos usando o protocolo UART.
- Divisor de Clock: Reduz a frequência do clock principal para uma taxa de amostragem adequada.
- Gravador de Notas: Gerencia a gravação e reprodução dos eventos MIDI.
- Display de 7 Segmentos: Exibe as notas tocadas em tempo real.
- Multiplexador: Combina sinais de áudio gravados e notas tocadas simultaneamente.
- FSM_Recorder: Lógica de estado que controla o modo de gravação/reprodução usando o botão 8 como switch.
- Conseguimos expandir as funcionalidades do projeto, tornando-o mais do que um simples teclado.
- O usuário pode:
- Gravar e reproduzir sequências musicais.
- Exibir as notas em tempo real no display de 7 segmentos.
- Combinar reprodução gravada e novas notas através do multiplexador.
- O nome “MID” refere-se não só ao protocolo MIDI, mas também ao caráter intermediário do projeto, servindo como uma introdução educativa ao mundo musical digital.
- Visualização clara das conexões: facilitou a compreensão do circuito a ser sintetizado.
- Colaboração e reutilização de blocos: acelerou o desenvolvimento e reduziu a curva de aprendizado.
- Foco no diferencial do projeto: permitiu otimizar tempo e esforços nas inovações.
- Envio de Mensagens via UART: implementar o envio das mensagens MIDI gravadas para um computador ou outro dispositivo externo, permitindo salvar as sequências criadas para uso posterior ou processamento adicional.
- Habilidade de selecionar mais de um bloco no editor do Chip Inventor (duplicar, etc.).
- Documentação mais clara sobre cada módulo implementado.
- Nomenclatura melhor padronizada nos módulos e sinais do projeto.
- Erros na simulação: investigar a causa e corrigir discrepâncias entre a simulação e o hardware real.
- Possibilidade de colaboração simultânea no Chip Inventor, não apenas visualização.