MIDI2LED - une bande lumineuse à LED contrôlée par MIDI : 6 étapes
MIDI2LED - une bande lumineuse à LED contrôlée par MIDI : 6 étapes
Anonim
MIDI2LED - un effet lumineux de bande LED contrôlé par MIDI
MIDI2LED - un effet lumineux de bande LED contrôlé par MIDI

Il s'agit de mon premier instructable, alors soyez indulgent avec moi.

J'adore faire de la musique, et dans des situations live comme des concerts de salon, j'aime quand il y a des effets de lumière en phase avec ce que je joue. J'ai donc construit une boîte basée sur Arduino qui fait s'allumer une bande LED dans une couleur aléatoire lorsque je frappe une note sur mon clavier MIDI, et où je frappe la note.

Fournitures

  • Arduino Uno
  • Protoshield Arduino
  • prise MIDI
  • 1N4148 diode
  • Optocoupleur 6N138
  • résistances: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Bande LED WS2812B (60 LED)
  • quelques restes de fils
  • Gaine thermorétractable
  • boîtier adapté pour l'Arduino (j'utilise une boîte de jonction en plastique)

Vous aurez également besoin

  • fer à souder et soudure
  • Clavier MIDI et câble MIDI

Étape 1: L'électronique

L'électronique
L'électronique

Le circuit est assez simple. Il se compose d'une entrée MIDI standard (à gauche de l'Arduino) et de la connexion à la bande LED (à droite de l'Arduino). Placez toutes les pièces sur le protoshield, il y a beaucoup d'espace. Il est généralement recommandé d'utiliser une alimentation externe pour alimenter la bande LED, mais j'ai trouvé que lorsque vous jouez, seules quelques LED sont allumées en même temps, donc il y avait aucun problème pour utiliser l'Arduino +5V / GND comme sortie d'alimentation. (Essayez d'éviter d'appuyer sur toutes les touches en même temps et à pleine vitesse.;-)) Si vous décidez d'utiliser une alimentation externe, connectez-la simplement aux broches Arduino +5V et GND. Certaines personnes recommandent d'insérer un condensateur de 100 uF (non représenté sur le schéma) entre ces deux lignes.

Soudez les pièces au protoshield et connectez la bande LED comme indiqué sur le schéma.

Étape 2: connexion de la bande LED

Connexion de la bande LED
Connexion de la bande LED

Il est important de connecter l'extrémité droite - l'extrémité d'entrée - de la bande LED au circuit. Ma bande a un connecteur femelle comme entrée, et a de petits triangles tout le long pointant loin de l'entrée. En sortie, il y avait un connecteur mâle (pour pouvoir le brancher sur une autre réglette, dont on n'a pas besoin), donc je l'ai coupé et soudé aux trois câbles venant de l'Arduino. Utilisez un tube thermorétractable pour attacher les trois câbles à la bande LED ensemble et pour les rendre moins visibles.

La bande LED que j'ai utilisée est livrée avec du ruban adhésif à l'arrière, elle peut donc facilement être collée à l'arrière du clavier MIDI.

Étape 3: Adapter le projet à votre clavier

Adapter le projet à votre clavier
Adapter le projet à votre clavier
Adapter le projet à votre clavier
Adapter le projet à votre clavier

Vous devrez peut-être adapter la bande LED et le code Arduino à votre clavier. Le mien a 76 touches et la longueur de la bande correspond presque exactement à la largeur du clavier. Si vous avez par ex. 61 touches, vous aurez peut-être besoin d'une bande plus courte. La bande LED peut être coupée entre deux LED. Assurez-vous simplement que vous coupez la bonne partie, elle a une extrémité d'entrée (avec un connecteur femelle) et une extrémité de sortie (avec un connecteur mâle), vous devez garder l'extrémité d'entrée. Dans le code, modifiez le #defines pour

  • NUMBER_OF_LEDS au nombre de LED restantes dans votre bande après avoir coupé l'extrémité,
  • NUMBER_OF_KEYS au nombre de touches de votre clavier, et
  • MIN_KEY au numéro de pitch MIDI de votre touche la plus basse. Vous pouvez le trouver dans le manuel d'utilisation du clavier; ou utilisez un outil qui affiche le numéro de note MIDI, comme KMidiMon pour Linux, ou Pocket MIDI pour Windows ou Mac; ou essayez différentes valeurs jusqu'à ce que l'appareil réponde à toutes les touches de votre clavier

Étape 4: Le code Arduino

Le code Arduino utilise la bibliothèque MIDI (v4.3.1) de Forty Seven Effects et la bibliothèque Adafruit NeoPixel (v1.3.4) d'Adafruit. Installez ces bibliothèques à l'aide de l'IDE Arduino. Compilez ensuite le code et téléchargez-le sur l'Arduino sans le blindage connecté (l'optocoupleur est connecté à la broche RX, ce qui empêche le téléchargement). Alimentez l'Arduino via un câble USB (j'utilise une verrue murale USB).

Si vous souhaitez modifier le code à votre guise, voici un bref aperçu de son fonctionnement: Dans chaque boucle, l'entrée MIDI est lue. Si un événement Note On ou Note Off a été reçu, les fonctions MyHandleNoteOn ou MyHandleNoteOff sont appelées. Ils appellent tous les deux la fonction updateVelocityArray, qui stocke la vélocité (c'est-à-dire la force avec laquelle vous avez appuyé sur la touche) du numéro de la touche. Si la vélocité est supérieure à ce qui était stocké auparavant, la couleur de la LED correspondante est réglée sur la "couleur actuelle". Une fois les événements MIDI traités, la fonction updateLedArray est appelée. Cela met à jour la "couleur actuelle" (dont les valeurs rouge, verte et bleue changent indépendamment de manière linéaire, jusqu'à ce que l'extrémité inférieure ou supérieure soit atteinte, auquel point la vitesse du changement linéaire est définie sur un nombre aléatoire), réduit lentement la vélocité des notes enfoncées et met à jour les valeurs de couleur de chaque LED qui doit changer de couleur (en raison d'une nouvelle frappe de note ou d'une réduction de la vélocité). La fonction showLedArray transfère les couleurs à la structure Adafruit_NeoPixel appelée "pixels" et fait que les LED réelles affichent les couleurs dans la structure des pixels.

Étape 5: Améliorations possibles…

Un projet n'est jamais terminé. Il y a toujours quelque chose à faire pour l'améliorer:

  • Le protoshield contient si peu de pièces que c'est vraiment du gâchis; on pourrait facilement obtenir le même effet avec un Arduino Nano et un PCB 15x7 trous plus quelques en-têtes de broches femelles.
  • Certains signaux MIDI sont perdus. S'il s'agit d'un NoteOn, la LED correspondante ne s'allumera pas; si c'est un NoteOff, il ne s'éteindra pas (c'est pourquoi j'ai introduit la réduction de vélocité, qui garantit que les LED ne resteront pas allumées indéfiniment). J'essaye toujours de comprendre la raison. C'est peut-être un problème de synchronisation, et MIDI.read() devrait être appelé plus souvent.
  • Certains signaux MIDI sont mal lus, c'est-à-dire que les mauvaises LED s'allument. Peut être lié au point ci-dessus. A besoin d'une enquête.
  • Le circuit est conçu pour donner un effet visuel agréable sans trop d'interaction avec l'utilisateur (à part jouer au clavier). Cependant, je pourrais imaginer ajouter un potentiomètre lu (à l'aide de l'une des entrées analogiques de l'Arduino) avec lequel vous pouvez modifier la vitesse maximale à laquelle les couleurs changent (actuellement #define'd as MAX_COLOR_CHANGE_SPEED = 20). Ou mesurez le temps moyen entre deux événements NoteOn et modifiez MAX_COLOR_CHANGE_SPEED en conséquence - dans les chansons lentes, la couleur devrait changer plus lentement.

Étape 6: terminé

Alimentez l'Arduino via un câble USB (j'utilise une verrue murale USB). Connectez votre clavier MIDI à la prise MIDI et commencez à jouer. Regardez-moi jouer un peu de musique légère (jeu de mots, aussi mauvais soit-il, voulu).

Conseillé: