Índice:

Piano de jogador de sinestesia: 4 etapas
Piano de jogador de sinestesia: 4 etapas
Anonim
Image
Image
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano
Synesthesia Player Piano

Este piano reprodutor toca música usando uma roda de cores e uma câmera! As imagens são capturadas pela câmera, processadas e interpretadas como notas musicais. No momento, ele está programado para tocar rimas infantis que podem ser alteradas carregando um novo esboço do Arduino que especifica quais notas devem ser tocadas (quais cores devem ser mostradas para a câmera).

O PC Linux integrado inicia um serviço na inicialização que tira uma foto com uma câmera, calcula uma função dos valores RGB na imagem e produz um som com base no valor de retorno da função. Antes de tocar o som, ele envia um sinal dizendo a um Arduino para girar um servo, apresentando a cor correspondente à próxima nota a ser tocada. Em seguida, o loop começa novamente, uma foto é tirada, a roda de cores é girada e um som é reproduzido ad infinitum.

Este projeto é uma maneira divertida de integrar música, programação de sistemas Linux modernos, programação de microcontroladores, rabiscos no Inkscape, corte a laser e reaproveitamento de algumas caixas de papelão.

Todo o código e SVGs do inkscape estão disponíveis no github em:

github.com/melvyniandrag/pyMusic

Materiais utilizados:

  1. Rótulos brancos em branco
  2. Caixa de papelão
  3. Webcam
  4. Giz de cera
  5. Arduino
  6. Beagleboard-xM
  7. Fios
  8. Cabo Serial
  9. Conhecimentos básicos de processamento de imagem e música

Etapa 1: as coisas do computador

As coisas do computador
As coisas do computador
As coisas do computador
As coisas do computador
As coisas do computador
As coisas do computador

A bordo, você precisará de um pequeno computador compatível com Linux, como um Raspberry Pi. Usei um BeagleBoard-xM antigo porque aconteceu de eu tê-lo disponível e já tinha um sistema operacional no cartão SD. Você pode usar qualquer coisa, desde que possa lidar com uma webcam, possa executar OpenCV (a biblioteca de visão computacional usada para tirar e processar imagens da roda de cores) e ter uma saída de áudio.

Eu configurei o sistema operacional para executar o código python que captura imagens na inicialização seguindo um tutorial do systemd. Para que o script execute, você precisará sudo apt-get install python-pyaudio python-opencv para obter as bibliotecas indicadas. Você também precisará instalar o numpy pyserial para obter essas bibliotecas. pyaudio é usado para reproduzir sons, opencv é usado para tirar e processar imagens, numpy também é usado para processamento de imagens e pyserial é necessário para se comunicar com o Arduino.

O Arduino é usado para girar o servo motor no qual a roda de cores está montada. Se você tivesse um Raspberry Pi, poderia usar os pinos GPIO existentes e deixar de fora o Arduino, mas seria necessário modificar o código Python.

Nas imagens você pode ver as entranhas tecnológicas da operação e alguns trechos de código.

Etapa 2: o piano

O piano
O piano
O piano
O piano
O piano
O piano

Fiz o piano de papelão com algumas caixas velhas que tinha. Tenho a sorte de morar perto de um makerpace que possui um cortador a laser. Por um ano inteiro estive me perguntando para que diabos alguém iria querer um cortador a laser, e finalmente descobri um uso para ele.

Medi o computador, o arduino e o servo para saber quanto espaço seria necessário, desenhei as partes do piano no inkscape e as recortei no cortador a laser. (Editar: eu fiquei sem papelão para fazer a caixa conter o computador e o arduino e por isso não os coloquei. Eles estão do lado de fora da caixa. Não importa, poderia ter pegado outra caixa em algum lugar, mas não não importa no final.)

As peças foram montadas com epóxi.

Etapa 3: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Aqui estão algumas imagens do piano sendo montado e colorido. A impressora estava sem tinta, então não pude imprimir as cores nas etiquetas brancas como havia planejado. Usei os lápis de cera da minha filha. E não consegui encontrar uma faca xacto para cortar o rótulo no formato do papelão, então usei uma faca e coloquei algo de proteção no balcão da cozinha. Use o que você tem!

Etapa 4: Desafios técnicos e considerações futuras

Desafios técnicos e considerações futuras
Desafios técnicos e considerações futuras
Desafios técnicos e considerações futuras
Desafios técnicos e considerações futuras

Uma parte desafiadora deste projeto foi obter os valores RGB adequados para serem lidos pela câmera. A webcam que tenho tem alguns LEDs incrivelmente brilhantes que não sei como desligar no Linux. Acho que existe um driver do Windows que permite ligá-los e desligá-los. Eu experimentei prender os LEDs com fita isolante e deixá-los ligados. Também testei a robustez do software, não só mostrando papel colorido, mas também escrevendo um pequeno site que mostra cores.

Os sons produzidos pelo computador às vezes têm estalos e estalos, e isso vem do fato de que tenho muito pouca experiência em programação de áudio em Linux. A biblioteca pyaudio cuspiu um monte de reclamações sobre o JACK não estar instalado no PC, mas por padrão o JACK não quer rodar sem interface (sem um desktop gui e um monitor). Esta é uma tarefa de programação que achei ser um refinamento, mas não era necessária para expressar a essência do piano de mesa que eu tinha em mente.

Pensei em usar uma manivela para mudar as cores, e talvez colocá-las em um rolo de massa, mas isso apresenta suas próprias complicações. O servo é um pouco barulhento, mas funciona bem por enquanto.

O piano mecânico está atualmente programado para tocar apenas 4 notas. Isso ocorre porque o servo só se move 180 graus, a maioria das canções infantis podem ser tocadas com apenas 3-4 notas e eu não queria que a roda de cores ficasse cheia de regiões de cores, possivelmente confundindo a câmera. Então, por meio de uma combinação de sorte musical e restrições técnicas, 4 notas é o suficiente.

Recomendado: