Índice:

MIDI2LED - um efeito de luz de faixa LED controlada por MIDI: 6 etapas
MIDI2LED - um efeito de luz de faixa LED controlada por MIDI: 6 etapas

Vídeo: MIDI2LED - um efeito de luz de faixa LED controlada por MIDI: 6 etapas

Vídeo: MIDI2LED - um efeito de luz de faixa LED controlada por MIDI: 6 etapas
Vídeo: alterando configurações MIDI Korg nano kontrol 2 2024, Novembro
Anonim
MIDI2LED - um efeito de luz de faixa LED controlada por MIDI
MIDI2LED - um efeito de luz de faixa LED controlada por MIDI

Este é o meu primeiro instrutível, então tenha paciência comigo.

Adoro fazer música e, em situações ao vivo, como shows na sala de estar, gosto quando há efeitos de luz em sincronia com o que toco. Então, eu construí uma caixa baseada em Arduino que faz uma faixa de LED acender em uma cor aleatória quando eu bato uma nota no meu teclado MIDI e onde eu bato a nota.

Suprimentos

  • Arduino Uno
  • Arduino protoshield
  • Conector MIDI
  • Diodo 1N4148
  • 6N138 opto-acoplador
  • resistores: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Faixa de LED WS2812B (60 LEDs)
  • alguns fios restantes
  • tubo termorretrátil
  • invólucro adequado para o Arduino (eu uso uma caixa de junção de plástico)

Você também vai precisar

  • ferro de solda e solda
  • Teclado MIDI e cabo MIDI

Etapa 1: os eletrônicos

A Eletrônica
A Eletrônica

O circuito é bastante simples. Ele consiste em uma entrada MIDI padrão (à esquerda do Arduino) e na conexão à faixa de LED (à direita do Arduino). Coloque todas as peças no protovelo, há muito espaço. Geralmente é recomendado usar uma fonte de alimentação externa para alimentar a faixa de LED, mas descobri que quando você joga, apenas alguns LEDs ficam ligados ao mesmo tempo, então havia nenhum problema em usar o Arduino + 5V / GND como saída de energia. (Tente evitar bater em todas as teclas ao mesmo tempo, e com velocidade total.;-)) Se você decidir usar uma fonte de alimentação externa, simplesmente conecte-a aos pinos do Arduino + 5V e GND. Algumas pessoas recomendam inserir um capacitor de 100uF (não mostrado no esquema) entre essas duas linhas.

Solde as peças no protovelo e conecte a faixa de LED conforme mostrado no esquema.

Etapa 2: Conectando a faixa de LED

Conectando a faixa de LED
Conectando a faixa de LED

É importante conectar a extremidade direita - a extremidade de entrada - da faixa de LED ao circuito. Minha faixa tem um conector fêmea como entrada e pequenos triângulos apontando para longe da entrada. Na saída, havia um conector macho (para poder conectá-lo a outra tira, que não precisamos), então cortei e soldei nos três cabos vindos do Arduino. Use tubulação termorretrátil para amarrar os três cabos à faixa de LED e torná-los menos visíveis.

A faixa de LED que usei vem com fita adesiva na parte de trás, para que possa ser facilmente colada na parte de trás do teclado MIDI.

Etapa 3: Adaptando o projeto ao seu teclado

Adaptando o Projeto ao Seu Teclado
Adaptando o Projeto ao Seu Teclado
Adaptando o Projeto ao Seu Teclado
Adaptando o Projeto ao Seu Teclado

Você pode ter que adaptar a faixa de LED e o código do Arduino ao seu teclado. O meu tem 76 teclas, e o comprimento da faixa é quase exatamente a largura do teclado. Se você tiver, por exemplo 61 teclas, você pode precisar de uma faixa mais curta. A faixa de LED pode ser cortada entre quaisquer dois LEDs. Apenas certifique-se de que está cortando a parte correta, ela tem uma extremidade de entrada (com um conector fêmea) e uma extremidade de saída (com um conector macho), você precisa manter a extremidade de entrada. No código, altere o # define para

  • NUMBER_OF_LEDS ao número de LEDs restantes em sua tira após o corte final,
  • NUMBER_OF_KEYS ao número de teclas do seu teclado e
  • MIN_KEY para o número de pitch MIDI de sua nota mais baixa. Você pode encontrar isso no manual do usuário do teclado; ou use uma ferramenta que exibe o número da nota MIDI, como KMidiMon para Linux ou Pocket MIDI para Windows ou Mac; ou tente valores diferentes até que o dispositivo responda a todas as teclas do seu teclado

Etapa 4: o código do Arduino

O código do Arduino usa a biblioteca MIDI (v4.3.1) da Forty Seven Effects e a biblioteca Adafruit NeoPixel (v1.3.4) da Adafruit. Instale essas bibliotecas usando o IDE Arduino. Em seguida, compile o código e faça o upload para o Arduino sem a blindagem conectada (o optoacoplador é conectado ao pino RX, o que impede o upload). Ligue o Arduino via cabo USB (eu uso uma verruga de parede USB).

Se você gostaria de modificar o código a seu gosto, aqui está uma breve visão geral de como funciona: Em cada loop, a entrada MIDI é lida. Se um evento Note On ou Note Off tiver sido recebido, as funções MyHandleNoteOn ou MyHandleNoteOff serão chamadas. Ambos chamam a função updateVelocityArray, que armazena a velocidade (ou seja, com que força você pressionou a tecla) do número da tecla. Se a velocidade for maior do que a armazenada antes, a cor do LED correspondente é definida para a "cor atual". Depois que os eventos MIDI forem tratados, a função updateLedArray é chamada. Isso atualiza a "cor atual" (os valores de vermelho, verde e azul mudam independentemente de forma linear, até que o limite inferior ou superior seja alcançado, ponto em que a velocidade para a mudança linear é definida como um número aleatório), reduz lentamente a velocidade das notas pressionadas e atualiza os valores de cor de cada LED que tem que mudar sua cor (devido ao toque de uma nova nota ou redução da velocidade). A função showLedArray transfere as cores para a estrutura Adafruit_NeoPixel chamada "pixels" e faz com que os LEDs reais mostrem as cores na estrutura de pixels.

Etapa 5: Possíveis melhorias …

Um projeto nunca termina. Sempre há algo que pode ser feito para melhorá-lo:

  • O proto-escudo contém tão poucas peças que é realmente um desperdício; pode-se facilmente obter o mesmo efeito com um Arduino Nano e um PCB de 15x7 orifícios, além de alguns conectores de pino fêmea.
  • Alguns dos sinais MIDI são perdidos. Se for um NoteOn, o LED correspondente não acenderá; se for um NoteOff, ele não apagará (é por isso que introduzi a redução de velocidade, que garante que os LEDs não fiquem acesos indefinidamente). Ainda estou tentando descobrir o motivo. Possivelmente é um problema de tempo e MIDI.read () deve ser chamado com mais frequência.
  • Alguns dos sinais MIDI são lidos incorretamente, ou seja, os LEDs errados acendem. Pode ser conectado com o ponto acima. Precisa de alguma investigação.
  • O circuito é projetado para dar um efeito visual agradável sem muita interação do usuário (além de tocar o teclado). No entanto, eu poderia imaginar a adição de um potenciômetro que é lido (usando uma das entradas analógicas do Arduino) com o qual você pode alterar a velocidade máxima na qual as cores mudam (atualmente # definido como MAX_COLOR_CHANGE_SPEED = 20). Ou meça o tempo médio entre dois eventos NoteOn e mude MAX_COLOR_CHANGE_SPEED de acordo - em músicas lentas, a cor deve mudar mais lentamente.

Etapa 6: Pronto

Ligue o Arduino via cabo USB (eu uso uma verruga de parede USB). Conecte seu teclado MIDI ao conector MIDI e comece a agitar. Veja-me tocar um pouco de música leve (trocadilho, por pior que seja, intencional).

Recomendado: