MIDI2LED - ein MIDI-gesteuerter LED-Streifenlichteffekt - Gunook
MIDI2LED - ein MIDI-gesteuerter LED-Streifenlichteffekt - Gunook
Anonim
MIDI2LED - ein MIDI-gesteuerter LED-Streifenlichteffekt
MIDI2LED - ein MIDI-gesteuerter LED-Streifenlichteffekt

Dies ist mein erstes instructable, also tragen Sie mit mir.

Ich liebe es, Musik zu machen, und in Live-Situationen wie Wohnzimmerkonzerten mag ich es, wenn Lichteffekte synchron zu dem sind, was ich spiele. Also habe ich eine Arduino-basierte Box gebaut, die einen LED-Streifen in einer zufälligen Farbe aufleuchten lässt, wenn ich eine Note auf meinem MIDI-Keyboard schlage und wo ich die Note schlage.

Lieferungen

  • Arduino Uno
  • Arduino-Protoschild
  • MIDI-Buchse
  • 1N4148 Diode
  • 6N138 Optokoppler
  • Widerstände: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED-Streifen (60 LEDs)
  • einige übrig gebliebene Drähte
  • Schrumpfschlauch
  • passendes Gehäuse für den Arduino (ich verwende eine Kunststoff-Anschlussdose)

Du brauchst auch

  • Lötkolben und Lötzinn
  • MIDI-Keyboard und MIDI-Kabel

Schritt 1: Die Elektronik

Die Elektronik
Die Elektronik

Die Schaltung ist ziemlich einfach. Es besteht aus einem Standard-MIDI-Eingang (links vom Arduino) und der Verbindung zum LED-Streifen (rechts vom Arduino). Platzieren Sie alle Teile auf dem Protoshield, es ist viel Platz. Es wird im Allgemeinen empfohlen, ein externes Netzteil zu verwenden, um den LED-Streifen mit Strom zu versorgen, aber ich habe festgestellt, dass beim Spielen nur wenige LEDs gleichzeitig leuchten, also gab es kein Problem bei der Verwendung des Arduino +5V / GND als Stromausgang. (Vermeiden Sie, alle Tasten gleichzeitig und mit voller Geschwindigkeit zu schlagen.;-)) Wenn Sie sich für ein externes Netzteil entscheiden, schließen Sie es einfach an die Arduino +5V- und GND-Pins an. Einige Leute empfehlen, einen 100uF-Kondensator (nicht im Schaltplan gezeigt) zwischen diese beiden Leitungen einzufügen.

Löten Sie die Teile an den Protoshield und verbinden Sie den LED-Streifen wie im Schaltplan gezeigt.

Schritt 2: Anschließen des LED-Streifens

Anschließen des LED-Streifens
Anschließen des LED-Streifens

Es ist wichtig, das rechte Ende - das Eingangsende - des LED-Streifens an den Stromkreis anzuschließen. Mein Streifen hat eine Buchse als Eingang und hat die ganze Zeit kleine Dreiecke, die vom Eingang weg zeigen. Am Ausgang gab es einen Stecker (um ihn mit einem anderen Streifen verbinden zu können, den wir nicht brauchen), also habe ich diesen abgeschnitten und an die drei Kabel angelötet, die vom Arduino kommen. Verwenden Sie Schrumpfschlauch, um die drei Kabel mit dem LED-Streifen zusammenzubinden und sie weniger sichtbar zu machen.

Der von mir verwendete LED-Streifen wird mit Klebeband auf der Rückseite geliefert, sodass er leicht auf die Rückseite des MIDI-Keyboards geklebt werden kann.

Schritt 3: Anpassen des Projekts an Ihre Tastatur

Anpassen des Projekts an Ihre Tastatur
Anpassen des Projekts an Ihre Tastatur
Anpassen des Projekts an Ihre Tastatur
Anpassen des Projekts an Ihre Tastatur

Eventuell müssen Sie den LED-Streifen und den Arduino-Code an Ihre Tastatur anpassen. Meine hat 76 Tasten und die Länge des Streifens entspricht fast genau der Breite der Tastatur. Wenn Sie z. B. 61 Tasten, benötigen Sie möglicherweise einen kürzeren Streifen. Der LED-Streifen kann zwischen zwei beliebigen LEDs geschnitten werden. Stellen Sie nur sicher, dass Sie das richtige Teil abschneiden, es hat ein Eingangsende (mit einer Buchse) und ein Ausgangsende (mit einem Stecker). Sie müssen das Eingangsende behalten. Ändern Sie im Code die #defines zum

  • NUMBER_OF_LEDS auf die Anzahl der LEDs, die nach dem Abschneiden des Endes in Ihrem Streifen übrig sind,
  • NUMBER_OF_KEYS zur Anzahl der Tasten auf Ihrer Tastatur und
  • MIN_KEY auf die MIDI-Tonhöhe Ihrer tiefsten Taste. Diese finden Sie in der Bedienungsanleitung der Tastatur; oder verwenden Sie ein Tool, das die MIDI-Notennummer anzeigt, wie KMidiMon für Linux oder Pocket MIDI für Windows oder Mac; oder probieren Sie verschiedene Werte aus, bis das Gerät auf alle Tasten Ihrer Tastatur reagiert

Schritt 4: Der Arduino-Code

Der Arduino-Code verwendet die MIDI-Bibliothek (v4.3.1) von Forty Seven Effects und die Adafruit NeoPixel-Bibliothek (v1.3.4) von Adafruit. Installieren Sie diese Bibliotheken mit der Arduino IDE. Kompilieren Sie dann den Code und laden Sie ihn ohne angeschlossenen Schirm auf den Arduino hoch (der Optokoppler ist mit dem RX-Pin verbunden, was den Upload behindert). Versorgen Sie den Arduino über ein USB-Kabel (ich verwende eine USB-Wandwarze).

Wenn Sie den Code nach Ihren Wünschen modifizieren möchten, hier ein kurzer Überblick über die Funktionsweise: In jedem Loop wird der MIDI-Eingang ausgelesen. Wenn ein Note On- oder Note Off-Ereignis empfangen wurde, werden die Funktionen MyHandleNoteOn oder MyHandleNoteOff aufgerufen. Beide rufen die Funktion updateVelocityArray auf, die die Velocity (d. h. wie stark Sie die Taste gedrückt haben) der Tastennummer speichert. Ist die Geschwindigkeit höher als vorher gespeichert, wird die Farbe der entsprechenden LED auf die "aktuelle Farbe" gesetzt. Nachdem die MIDI-Events verarbeitet wurden, wird die Funktion updateLedArray aufgerufen. Dies aktualisiert die "aktuelle Farbe" (deren Rot-, Grün- und Blauwerte sich unabhängig voneinander linear ändern, bis das untere oder obere Ende erreicht ist, wobei die Geschwindigkeit für die lineare Änderung auf eine zufällige Zahl gesetzt wird), verringert langsam die Velocity der gedrückten Noten und aktualisiert die Farbwerte jeder LED, die ihre Farbe ändern muss (aufgrund eines neuen Anschlags einer Note oder einer Verringerung der Velocity). Die Funktion showLedArray überträgt die Farben in die Adafruit_NeoPixel-Struktur namens "Pixel" und lässt die eigentlichen LEDs die Farben in der Pixelstruktur anzeigen.

Schritt 5: Mögliche Erweiterungen …

Ein Projekt ist nie fertig. Es gibt immer etwas, was man tun kann, um es zu verbessern:

  • Der Protoschild enthält so wenige Teile, dass es wirklich eine Verschwendung ist; Den gleichen Effekt könnte man leicht mit einem Arduino Nano und einer 15x7-Loch-Platine plus einigen Buchsenleisten erzielen.
  • Einige der MIDI-Signale gehen verloren. Wenn es sich um ein NoteOn handelt, leuchtet die entsprechende LED nicht; wenn es ein NoteOff ist, erlischt es nicht (deshalb habe ich die Reduzierung der Velocity eingeführt, die dafür sorgt, dass LEDs nicht auf unbestimmte Zeit leuchten). Ich versuche immer noch, den Grund herauszufinden. Möglicherweise ist es ein Timing-Problem und MIDI.read() sollte häufiger aufgerufen werden.
  • Einige der MIDI-Signale werden falsch gelesen, d. h. die falschen LEDs leuchten. Könnte mit obigem Punkt zusammenhängen. Braucht eine Untersuchung.
  • Die Schaltung ist so konzipiert, dass sie ohne viel Benutzerinteraktion (außer dem Spielen auf der Tastatur) einen angenehmen visuellen Effekt erzeugt. Ich könnte mir jedoch vorstellen, ein Potentiometer hinzuzufügen, das ausgelesen wird (mit einem der analogen Eingänge des Arduino), mit dem Sie die maximale Geschwindigkeit ändern können, mit der sich die Farben ändern (derzeit #define'd as MAX_COLOR_CHANGE_SPEED = 20). Oder messen Sie die durchschnittliche Zeit zwischen zwei NoteOn-Events und ändern Sie MAX_COLOR_CHANGE_SPEED entsprechend - bei langsamen Songs sollte sich die Farbe langsamer ändern.

Schritt 6: Fertig

Versorgen Sie den Arduino über ein USB-Kabel (ich verwende eine USB-Wandwarze). Schließen Sie Ihr MIDI-Keyboard an die MIDI-Buchse an und beginnen Sie zu rocken. Schau mir zu, wie ich ein wenig leichte Musik spiele (Wortspiel, so schlimm es auch ist, beabsichtigt).

Empfohlen: