So erstellen Sie einen MIDI-Controller mit einem Arduino

So erstellen Sie einen MIDI-Controller mit einem Arduino / DIY

Als Musiker, der eine Sammlung von Musikinstrumenten und Noise-Boxen gesammelt hat, ist das bescheidene Arduino das perfekte Werkzeug, um einen benutzerdefinierten MIDI-Controller zu erstellen. Während das Raspberry Pi möglicherweise die Krone für das Internet der Dinge (IoT) erobert hat Das Internet der Dinge: 10 nützliche Produkte, die Sie 2016 ausprobieren müssen Das Internet der Dinge: 10 nützliche Produkte, die Sie im Jahr 2016 probieren müssen Das Internet der Dinge ist im Rampenlicht 2016, aber was heißt das genau? Wie profitieren Sie persönlich vom Internet der Dinge? Hier sind einige nützliche Produkte zur Veranschaulichung. Lesen Sie mehr Projekte, ein einfaches Arduino Uno (Welche Arten von Arduino gibt es? Arduino Einkaufsführer: Welches Board sollten Sie bekommen? Arduino Einkaufsführer: Welches Board sollten Sie bekommen?) Es gibt so viele verschiedene Arten von Arduino Boards Ich würde es verzeihen, wenn Sie verwirrt werden. Was sollten Sie für Ihr Projekt kaufen? Lassen Sie uns helfen, mit diesem Arduino Einkaufsführer! Lesen Sie mehr) hat mehr als genug Leistung für dieses Projekt.

Zum ersten Mal mit einem Arduino? Keine Sorge, wir haben einen kompletten Arduino-Einsteigerleitfaden Erste Schritte mit Arduino: Ein Anfängerhandbuch Erste Schritte mit Arduino: Ein Anfängerhandbuch Arduino ist eine Open-Source-Prototyping-Plattform für Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es ist für Künstler, Designer, Hobbyisten und alle gedacht, die interaktive Objekte oder Umgebungen erstellen möchten. Lesen Sie weiter, um es durchzulesen, bevor Sie dieses Projekt in Angriff nehmen.

Was ist MIDI??

MIDI steht für Musical Instrument Digital Interface. Es beschreibt eine Standardmethode, mit der Musikgeräte miteinander kommunizieren können. Wenn Sie eine elektronische Tastatur besitzen, verfügen Sie wahrscheinlich über eine MIDI-Schnittstelle. Während bei der Implementierung von MIDI einige technische Details enthalten sind, ist zu beachten, dass MIDI kein Audio ist! MIDI-Daten sind einfache Anweisungen (eine Anweisung heißt a “Botschaft”), die ein anderes Gerät implementieren kann, um unterschiedliche Sounds oder Steuerparameter zu erzeugen.

MIDI unterstützt 16 Kanäle. Dies bedeutet, dass jedes Kabel 16 verschiedene Geräte unterstützen kann, die unabhängig voneinander kommunizieren. Die Geräte werden mit einem 5-poligen DIN-Kabel verbunden. DIN steht für “Deutsches Institut für Normung”, und ist einfach ein Kabel mit fünf Pins im Stecker. USB wird häufig anstelle von 5-Pin-DIN verwendet, oder es kann eine USB-MIDI-Schnittstelle verwendet werden.

Kontrollwechsel und Programmwechsel

Es gibt zwei Haupttypen von MIDI-Nachrichten: Control Change und Program Change.

Control Change (CC) -Nachrichten enthalten eine Controller-Nummer und einen Wert zwischen 0 und 127. CC-Nachrichten werden häufig verwendet, um Einstellungen wie Lautstärke oder Tonhöhe zu ändern. Geräte, die MIDI akzeptieren, sollten mit einem Handbuch geliefert werden, in dem erklärt wird, welche Kanäle und Meldungen standardmäßig eingerichtet sind und wie sie geändert werden können (bekannt als MIDI-Mapping)..

Programmwechsel (PC) -Nachrichten sind einfacher als CC-Nachrichten. PC-Meldungen bestehen aus einer einzigen Nummer und werden zum Ändern der Voreinstellung oder des Patches auf einem Gerät verwendet. PC-Nachrichten werden manchmal als bezeichnet “Patch ändern”. Ähnlich wie bei CC-Meldungen sollten Hersteller ein Dokument vorlegen, aus dem hervorgeht, welche Voreinstellungen durch eine bestimmte Meldung geändert werden.

Was wirst du brauchen

  • Arduino
  • 5-polige DIN-Buchse
  • 2 x 220 Ohm Widerstände
  • 2 x 10k Ohm Widerstände
  • 2 x Taster
  • Drähte anschließen
  • Brotschneidebrett
  • MIDI-Kabel
  • MIDI-Gerät oder USB-Schnittstelle

Wasser & Holz 5 Stück DIN 5 Pin Leiterplattenmontagebuchsen für PC-Tastatur Wasser & Holz 5 Stück DIN 5 Pin Leiterplattenmontagebuchsen für PC-Tastatur Kaufen Sie jetzt bei Amazon $ 2.79

Plan erstellen

Dieses Projekt wird ziemlich einfach sein. Sie können natürlich weitere Tasten oder Hardware hinzufügen, um Ihre Anforderungen zu erfüllen. Fast jedes Arduino ist geeignet - für dieses Beispiel werden nur drei Pins benötigt. Dieses Projekt besteht aus zwei Tasten zur Steuerung des Programms, einem MIDI-Port zum Senden der Daten und einem Gerät zum Empfangen der Meldungen. Diese Schaltung wurde auf einem Steckbrett aufgebaut. Anfängerelektronik: 10 Fähigkeiten, die Sie kennen müssen Anfängerelektronik: 10 Fähigkeiten, die Sie kennen müssen Viele von uns haben noch nie einen Lötkolben berührt - aber das Herstellen von Dingen kann unglaublich lohnend sein. Hier sind zehn der grundlegendsten DIY-Elektronikfähigkeiten, die Ihnen den Einstieg erleichtern. Lesen Sie hier mehr, es ist jedoch möglich, es in eine Projektbox und gelötete Steckverbinder zu übertragen, um eine robuste Lösung zu erhalten.

Schaltungsbaugruppe

MIDI-Verbindung

Verdrahten Sie Ihre MIDI-Buchse wie folgt:

  • MIDI-Pin 5 an Arduino Transmit (TX) 1 über einen 220-Ohm-Widerstand
  • MIDI-Pin 4 an Arduino + 5V über einen 220-Ohm-Widerstand
  • MIDI-Pin 2 zum Arduino-Boden

Tastenverbindung

Die Tasten funktionieren, indem Sie den Widerstand des Arduino ändern “sieht”. Der Arduino-Pin geht durch den Schalter direkt auf Masse (NIEDRIG) über einen 10k Ohm Widerstand (a “runterziehen” Widerstand, um sicherzustellen, dass der Wert niedrig bleibt). Wenn die Taste gedrückt wird, ändert sich der Wert der Schaltung ohne Widerstand auf + 5 V (HOCH). Das Arduino kann diese Änderung mit Hilfe von erkennen digitalRead (Pin) Befehl. Verbinden Sie die Tasten mit den Pins 6 und 7 des Arduino-Digitalein- / ausgangs (E / A). Verbinden Sie beide Tasten:

  • Linke Seite der Taste auf + 5V
  • Rechte Seite des Tasters zu Arduino Ground über einen 10k Ohm Widerstand
  • Rechte Seite der Taste am Arduino-Pin (6 oder 7)

MIDI-Test

Nun, da die gesamte Hardware fertig ist, ist es an der Zeit, sie zu testen. Sie benötigen ein USB-MIDI-Interface (viele Audio-Interfaces können dies tun) und ein MIDI-Kabel. Der auf dem Steckbrett verdrahtete MIDI-Port sendet Daten und ist somit der Ausgang. Ihr Computer empfängt die Daten und ist daher die Eingabe. Dieses Projekt verwendet die hervorragende Arduino MIDI Library v4.2 von Forty Seven Effects. Nachdem Sie die Bibliothek installiert haben, können Sie sie in Ihren Code aufnehmen, indem Sie zu gehen Skizze> Bibliothek einschließen> MIDI.

Sie benötigen auch ein Programm zur Überwachung der eingehenden MIDI-Daten:

  • MIDI Monitor für OS X
  • MIDI-OX für Windows
  • KMidimon für Linux

Anschließen des Arduino Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern und Einrichten von Board & Port Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern & Einrichten von Board & Port So haben Sie sich ein Arduino Starter Kit gekauft möglicherweise einige andere zufällige coole Komponenten - was jetzt? Wie fangen Sie eigentlich an, dieses Arduino-Ding zu programmieren? So richten Sie es ein… Lesen Sie mehr auf Ihren Computer und laden Sie den folgenden Testcode hoch (vergessen Sie nicht, die richtige Karte und den richtigen Port aus dem zu wählen Extras> Platine und Extras> Port Menüs).

#umfassen  #umfassen  #umfassen  #umfassen  #umfassen  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, MidiOut); // Erstellen Sie ein MIDI-Objekt namens midiOut void setup () Serial.begin (31250); // Setup serial für MIDI void loop () midiOut.sendControlChange (56,127,1); // Senden Sie ein MIDI CC - 56 = Note, 127 = Velocity, 1 = Channel Delay (1000); // warte 1 Sekunde midiOut.sendProgramChange (12,1); // Senden Sie einen MIDI-PC - 12 = Wert, 1 = Kanalverzögerung (1000); // 1 Sekunde warten

Dieser Code sendet eine CC-Nachricht, wartet 1 Sekunde, sendet eine PC-Nachricht und wartet 1 Sekunde auf unbestimmte Zeit. Wenn alles korrekt funktioniert, sollte eine Meldung in Ihrem MIDI-Monitor erscheinen.

Wenn nichts passiert, gerate nicht in Panik! Versuchen Sie die Fehlerbehebung:

  • Stellen Sie sicher, dass alle Verbindungen korrekt sind
  • Vergewissern Sie sich, dass der MIDI-Port korrekt verdrahtet ist. An den Außenkanten sollten sich 2 Ersatzpins befinden
  • Prüfen Sie, ob die Schaltung korrekt ist
  • Stellen Sie sicher, dass die Schaltung über ein MIDI-Kabel an eine USB-MIDI-Schnittstelle angeschlossen ist
  • Vergewissern Sie sich, dass Ihr MIDI-Kabel an das angeschlossen ist Eingang an Ihrem USB-MIDI-Interface
  • Stellen Sie sicher, dass das Arduino Strom hat
  • Installieren Sie den richtigen Treiber für Ihre USB-MIDI-Schnittstelle

Wenn du bist immer noch Bei Problemen kann es sinnvoll sein, Ihr Steckbrett zu überprüfen. Billige Boards können manchmal sehr uneinheitlich und von schlechter Qualität sein - das ist mir bei der Arbeit an diesem Projekt passiert.

Schaltfläche testen

Jetzt ist es Zeit zu testen, ob die Tasten richtig funktionieren. Laden Sie den folgenden Testcode hoch. MIDI muss nicht angeschlossen sein, um diesen Part zu testen.

const int buttonOne = 6; // Button Pin der Variablen const zuweisen int buttonTwo = 7; // weise den Button-Pin der Variablen void setup () Serial.begin (9600); // setze seriell für text ein pinMode (buttonOne, INPUT); // Setup-Taste als Eingang pinMode (buttonTwo, INPUT); // Setup-Taste als Eingabe void loop () if (digitalRead (buttonOne) == HIGH) // Check-Button-Statusverzögerung (10); // Software-De-Bounce wenn (digitalRead (buttonOne) == HIGH) // Status der Schaltfläche erneut prüfen Serial.println ("Button One Works!"); // Log-Ergebnisverzögerung (250);  if (digitalRead (buttonTwo) == HIGH) // Statusverzögerung der Schaltflächen (10); // Software-De-Bounce-Funktion, wenn (digitalRead (buttonTwo) == HIGH) // Status der Schaltfläche erneut prüfen Serial.println ("Button Two Works!"); // Log-Ergebnisverzögerung (250);  

Führen Sie diesen Code aus (aber lassen Sie das USB-Kabel angeschlossen) und öffnen Sie den seriellen Monitor (Oben rechts> Serienmonitor). Wenn Sie eine Taste drücken, sollten Sie sehen “Knopf eins arbeitet!” oder “Button Zwei Werke!” abhängig von der Taste, die Sie gedrückt haben.

Es gibt eine wichtige Anmerkung, die Sie diesem Beispiel entnehmen sollten - die Software-Abhebung. Dies ist eine einfache Verzögerung von 10 Millisekunden (ms) zwischen dem Überprüfen der Schaltfläche und dem erneuten Überprüfen der Schaltfläche. Dies erhöht die Genauigkeit des Tastendrucks und verhindert, dass das Arduino durch Rauschen ausgelöst wird. Sie müssen dies nicht tun, obwohl dies empfohlen wird.

Controller erstellen

Nachdem nun alles verdrahtet ist und funktioniert, ist es Zeit, den vollständigen Controller zusammenzubauen.

In diesem Beispiel wird für jede gedrückte Taste eine andere CC-Nachricht gesendet. Ich verwende dies, um Ableton Live 9.6 unter OS X zu steuern. Der Code ähnelt den beiden oben genannten Testbeispielen.

#umfassen  #umfassen  #umfassen  #umfassen  #umfassen  const int buttonOne = 6; // Button Pin der Variablen const zuweisen int buttonTwo = 7; // weise den Button-Pin der Variablen MIDI_CREATE_INSTANCE zu (HardwareSerial, Serial, MidiOut); // Erzeuge ein MIDI-Objekt namens midiOut void setup () pinMode (buttonOne, INPUT); // Setup-Taste als Eingang pinMode (buttonTwo, INPUT); // Setup-Schaltfläche als Eingabe Serial.begin (31250); // Setup-MIDI-Ausgang void loop () if (digitalRead (buttonOne) == HIGH) // Check Button State Delay (10); // Software-De-Bounce-Funktion, wenn (digitalRead (buttonOne) == HIGH) // Tastenzustand erneut prüfen midiOut.sendControlChange (56,127,1); // Senden Sie ein MIDI CC - 56 = Note, 127 = Velocity, 1 = Channel Delay (250);  if (digitalRead (buttonTwo) == HIGH) // Statusverzögerung der Schaltflächen (10); // Software-De-Bounce-Funktion, wenn (digitalRead (buttonTwo) == HIGH) // Tastenzustand erneut prüfen midiOut.sendControlChange (42,127,1); // Senden Sie ein MIDI CC - 42 = Note, 127 = Velocity, 1 = Channel Delay (250);  

Hinweis - Sie können nicht verwenden Serial.println () mit MIDI-Ausgang.
Wenn Sie anstelle eines CC eine PC-Nachricht senden möchten, ersetzen Sie einfach:

midiOut.sendControlChange (42,127,1);

Mit:

midiOut.sendProgramChange (Wert, Kanal); 

In Aktion

Nachfolgend finden Sie eine Demonstration als Controller für Ableton Live (Beste DJ-Software für jedes Budget. Die beste DJ-Software für jedes Budget. Die beste DJ-Software für jedes Budget. Eine gute Mixing-Software kann den Unterschied in Ihrer Leistung ausmachen Für Windows oder Linux wird für jedes Level an Fähigkeiten und jedes Budget gesorgt, wenn Sie mit dem DJing beginnen möchten. Weitere Informationen). Oben rechts werden die Audiomessgeräte angezeigt, und oben in der Mitte werden die eingehenden Midi-Meldungen angezeigt (über MIDI Monitor unter OS X)..

Hast du einen MIDI Controller gemacht??

Es gibt viele praktische Anwendungen für einen benutzerdefinierten MIDI-Controller. Sie könnten eine große fußgesteuerte Einheit oder einen schlanken Studiocontroller bauen. Haben Sie einen benutzerdefinierten MIDI-Controller erstellt? Lass es mich in den Kommentaren wissen, ich würde sie gerne sehen!

Bildnachweis: Keith Gentry über Shutterstock.com

Erfahren Sie mehr über: Arduino, DJ-Software, Elektronik, MIDI.