Werbung
Als Musiker, der eine Sammlung von Musikinstrumenten und Noise-Boxen zusammengetragen hat, ist der bescheidene Arduino das perfekte Werkzeug, um einen benutzerdefinierten MIDI-Controller zu erstellen. Während der Raspberry Pi vielleicht die Krone dafür genommen hat Internet der Dinge (IoT) Das Internet der Dinge: 10 nützliche Produkte, die Sie 2016 ausprobieren müssenDas Internet der Dinge nimmt 2016 Fahrt auf, aber was bedeutet das genau? Wie profitieren Sie persönlich vom Internet der Dinge? Hier sind einige nützliche Produkte zur Veranschaulichung. Weiterlesen Projekte, ein einfaches Arduino Uno (Was sind die verschiedenen Arten von Arduino? Arduino Buying Guide: Welches Board solltest du bekommen?Es gibt so viele verschiedene Arten von Arduino-Boards, dass man sich verzeihen kann, verwirrt zu sein. Was solltest du für dein Projekt kaufen? Lassen Sie uns mit diesem Arduino-Einkaufsführer helfen! Weiterlesen ) hat mehr als genug Power für dieses Projekt.
Zum ersten Mal mit einem Arduino? Keine Sorge, wir haben eine vollständige Arduino Anfängerleitfaden Erste Schritte mit Arduino: Ein Leitfaden für AnfängerArduino ist eine Open-Source-Plattform für das Prototyping von Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen zu lesen, bevor Sie dieses Projekt angehen.
Was ist MIDI?
MIDI steht für Musical Instrument Digital Interface. Es beschreibt eine Standardmethode für die Kommunikation von Musikgeräten untereinander. Wenn Sie ein elektronisches Keyboard besitzen, haben Sie wahrscheinlich ein MIDI-Interface. Obwohl die Implementierung von MIDI einige technische Details enthält, ist es wichtig zu bedenken, dass MIDI kein Audio ist! MIDI-Daten sind einfache Befehle (ein Befehl wird als „Nachricht“ bezeichnet), 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 über ein 5-poliges DIN-Kabel angeschlossen. DIN steht für „Deutsches Institut für Normung“ und ist einfach ein Kabel mit fünf Stiften im Stecker. USB wird häufig anstelle von 5-poligem DIN verwendet, oder es kann ein USB-MIDI-Interface verwendet werden.
Kontrollwechsel und Programmwechsel
Es gibt zwei Haupttypen von MIDI-Nachrichten: Control Change und Program Change.
CC-Meldungen (Control Change) enthalten eine Controller-Nummer und einen Wert zwischen 0 und 127. CC-Meldungen 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 erläutert wird, welche Kanäle und Meldungen standardmäßig eingerichtet sind und wie sie geändert werden können (sogenannte MIDI-Zuordnung).
PC-Nachrichten (Program Change) sind einfacher als CC-Nachrichten. PC-Nachrichten bestehen aus einer einzelnen Nummer und werden zum Ändern der Voreinstellung oder des Patches auf einem Gerät verwendet. PC-Nachrichten werden manchmal als "Patch Change" bezeichnet. Ähnlich wie bei CC-Nachrichten sollten Hersteller ein Dokument bereitstellen, in dem dargelegt wird, welche Voreinstellungen durch eine bestimmte Nachricht 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 Momentschalter
- Anschlussdrähte
- Steckbrett
- MIDI-Kabel
- MIDI-Gerät oder USB-Schnittstelle
Bauplan
Dieses Projekt wird ganz einfach sein. Sie können natürlich weitere Schaltflächen oder Hardware hinzufügen, um Ihren Anforderungen zu entsprechen. Fast jedes Arduino ist geeignet - für dieses Beispiel werden nur drei Stifte 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 Nachrichten. Diese Schaltung wurde auf einem gebaut Steckbrett Anfängerelektronik: 10 Fähigkeiten, die Sie kennen müssenViele von uns haben noch nie einen Lötkolben berührt - aber Dinge herzustellen kann unglaublich lohnend sein. Hier sind zehn der grundlegendsten Fertigkeiten der DIY-Elektronik, die Ihnen den Einstieg erleichtern. Weiterlesen Hier ist es jedoch möglich, es für eine robuste Lösung auf eine Projektbox und gelötete Steckverbinder zu übertragen.
Schaltungsbaugruppe
MIDI-Verbindung
Verdrahten Sie Ihren MIDI-Sockel wie folgt:
- MIDI-Pin 5 über einen 220-Ohm-Widerstand an Arduino Transmit (TX) 1
- MIDI Pin 4 an Arduino + 5V über einen 220 Ohm Widerstand
- MIDI Pin 2 auf Arduino Masse
Tastenverbindung
Die Tasten ändern den Widerstand, den der Arduino „sieht“. Der Arduino-Pin geht durch den Schalter direkt auf Masse (NIEDRIG) über einen 10k Ohm Widerstand (ein Pulldown-Widerstand, der sicherstellt, dass der Wert niedrig bleibt). Wenn die Taste gedrückt wird, ändert sich der von der Schaltung gesehene Wert ohne Widerstand auf +5 V (HOCH). Der Arduino kann diese Änderung mit dem erkennen digitalRead (Pin) Befehl. Verbinden Sie die Tasten mit den Pins 6 und 7 des digitalen Arduino-Ein- / Ausgangs (E / A). Verbinden Sie beide Tasten:
- Linke Seite der Taste auf + 5V
- Rechte Seite der Taste zur Arduino-Erdung über einen 10-kOhm-Widerstand
- Rechte Seite des Knopfes zum Arduino-Pin (6 oder 7)
MIDI-Test
Nachdem die gesamte Hardware fertig ist, ist es Zeit, sie zu testen. Sie benötigen ein USB-MIDI-Interface (viele Audio-Interfaces können dies) und ein MIDI-Kabel. Der am Breadboard verkabelte MIDI-Port sendet Daten, also den Ausgang. Ihr Computer empfängt die Daten, daher ist dies die Eingabe. Dieses Projekt verwendet das ausgezeichnete Arduino MIDI Library v4.2 durch siebenundvierzig Effekte. Sobald Sie die Bibliothek installiert haben, können Sie sie in Ihren Code aufnehmen, indem Sie auf gehen Skizze> Bibliothek einschließen> MIDI.
Sie benötigen außerdem ein Programm zur Überwachung der eingehenden MIDI-Daten:
- MIDI-Monitor für OS X.
- MIDI-OX für Windows
- KMidimon für Linux
Verbinden Sie das Arduino Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern und Einrichten von Board und PortSie haben sich also ein Arduino-Starter-Kit und möglicherweise einige andere zufällige coole Komponenten gekauft - was nun? Wie fangen Sie eigentlich mit der Programmierung dieser Arduino-Sache an? Wie stellst du es ein ... Weiterlesen auf Ihren Computer und laden Sie den folgenden Testcode hoch (vergessen Sie nicht, die richtige Karte und den richtigen Port aus dem auszuwählen Werkzeuge> Platine und Extras> Port Menüs).
#umfassen
#umfassen
#umfassen
#umfassen
#umfassen MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // ein MIDI-Objekt namens midiOut erstellen void setup () {Serial.begin (31250); // Seriell für MIDI einrichten. } void loop () {midiOut.sendControlChange (56,127,1); // MIDI senden CC - 56 = Note, 127 = Velocity, 1 = Channel Delay (1000); // 1 Sekunde warten midiOut.sendProgramChange (12,1); // MIDI PC senden - 12 = Wert, 1 = Kanalverzögerung (1000); // 1 Sekunde warten. }
Dieser Code sendet eine CC-Nachricht, wartet 1 Sekunde, sendet eine PC-Nachricht und wartet dann 1 Sekunde auf unbestimmte Zeit. Wenn alles richtig funktioniert, sollte auf Ihrem MIDI-Monitor eine Meldung angezeigt werden.
Wenn nichts passiert, keine Panik! Versuchen Sie die Fehlerbehebung:
- Stellen Sie sicher, dass alle Verbindungen korrekt sind
- Überprüfen Sie, ob der MIDI-Port richtig verdrahtet ist. An den Außenkanten sollten 2 Ersatzstifte vorhanden sein
- Überprüfen Sie, ob die Schaltung korrekt ist
- Stellen Sie sicher, dass die Schaltung mit einem MIDI-Kabel an eine USB-MIDI-Schnittstelle angeschlossen ist
- Überprüfen Sie, ob Ihr MIDI-Kabel an das angeschlossen ist Eingang auf Ihrem USB-MIDI-Interface
- Stellen Sie sicher, dass der Arduino mit Strom versorgt wird
- Installieren Sie den richtigen Treiber für Ihr USB-MIDI-Interface
Wenn du bist immer noch Bei Problemen kann es sich lohnen, Ihr Steckbrett zu überprüfen. Billige Boards können manchmal sehr inkonsistent und von geringer Qualität sein - das ist mir bei der Arbeit an diesem Projekt passiert.
Tastentest
Jetzt ist es Zeit zu testen, ob die Tasten ordnungsgemäß funktionieren. Laden Sie den folgenden Testcode hoch. MIDI muss nicht angeschlossen sein, um diesen Part zu testen.
const int buttonOne = 6; // Tastenstift der Variablen zuweisen. const int buttonTwo = 7; // Button Pin der Variablen void setup () zuweisen {Serial.begin (9600); // Seriennummer für Text einrichten pinMode (buttonOne, INPUT); // Setup-Taste als EingangspinMode (buttonTwo, INPUT); // Setup-Taste als Eingabe. } void loop () {if (digitalRead (buttonOne) == HIGH) {// Schaltflächenstatusverzögerung prüfen (10); // Software-De-Bounce if (digitalRead (buttonOne) == HIGH) {// Schaltflächenstatus erneut prüfen Serial.println ("Button One Works!"); // Ergebnisverzögerung protokollieren (250); }} if (digitalRead (buttonTwo) == HIGH) {// Schaltflächenstatusverzögerung prüfen (10); // Software-De-Bounce if (digitalRead (buttonTwo) == HIGH) {// Schaltflächenstatus erneut prüfen Serial.println ("Button Two Works!"); // Ergebnisverzögerung protokollieren (250); } } }
Führen Sie diesen Code aus (aber lassen Sie das USB-Kabel angeschlossen) und öffnen Sie den seriellen Monitor (Oben rechts> Serieller Monitor). Wenn Sie eine Taste drücken, sollte "Button One Works!" oder "Button Two Works!" abhängig von der Taste, die Sie gedrückt haben.
In diesem Beispiel ist ein wichtiger Hinweis zu beachten: das Software-De-Bounce. Dies ist eine einfache Verzögerung von 10 Millisekunden (ms) zwischen dem Überprüfen der Taste und dem erneuten Überprüfen der Taste. Dies erhöht die Genauigkeit des Tastendrucks und verhindert, dass Geräusche den Arduino auslösen. Sie müssen dies nicht tun, obwohl es empfohlen wird.
Controller erstellen
Jetzt, da alles verkabelt 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 obigen Testbeispielen.
#umfassen
#umfassen
#umfassen
#umfassen
#umfassen const int buttonOne = 6; // Tastenstift der Variablen zuweisen. const int buttonTwo = 7; // Button Pin der Variablen MIDI_CREATE_INSTANCE zuweisen (HardwareSerial, Serial, midiOut); // ein MIDI-Objekt namens midiOut erstellen void setup () {pinMode (buttonOne, INPUT); // Setup-Taste als EingangspinMode (buttonTwo, INPUT); // Setup-Schaltfläche als Eingabe Serial.begin (31250); // MIDI-Ausgang einrichten. } void loop () {if (digitalRead (buttonOne) == HIGH) {// Schaltflächenstatusverzögerung prüfen (10); // Software-De-Bounce if (digitalRead (buttonOne) == HIGH) {// Schaltflächenstatus erneut prüfen midiOut.sendControlChange (56,127,1); // MIDI senden CC - 56 = Note, 127 = Velocity, 1 = Channel Delay (250); }} if (digitalRead (buttonTwo) == HIGH) {// Schaltflächenstatusverzögerung prüfen (10); // Software-De-Bounce if (digitalRead (buttonTwo) == HIGH) {// Schaltflächenstatus erneut prüfen midiOut.sendControlChange (42,127,1); // MIDI senden CC - 42 = Note, 127 = Velocity, 1 = Channel Delay (250); } } }
Hinweis - Sie können nicht verwenden Serial.println () mit MIDI-Ausgang.
Wenn Sie eine PC-Nachricht anstelle eines CC senden möchten, ersetzen Sie einfach:
midiOut.sendControlChange (42,127,1);
Mit:
midiOut.sendProgramChange (Wert, Kanal);
In Aktion
Unten finden Sie eine Demonstration als Controller für Ableton Live (Beste DJ-Software für jedes Budget Die beste DJ-Software für jedes BudgetGute Mischsoftware kann den Unterschied in Ihrer Leistung ausmachen. Egal, ob Sie einen Mac, Windows oder Linux verwenden, für jedes Können und Budget ist gesorgt, wenn Sie mit dem DJing beginnen möchten. Weiterlesen ). Oben rechts werden die Audio-Anzeigen angezeigt, und in der oberen Mitte werden die eingehenden MIDI-Nachrichten angezeigt (via MIDI-Monitor unter OS X).
Haben Sie einen MIDI-Controller hergestellt?
Es gibt viele praktische Anwendungen für einen benutzerdefinierten MIDI-Controller. Sie könnten eine riesige fußgesteuerte Einheit oder einen schlanken Studio-Controller bauen. Und wenn Sie daran interessiert sind, eine zu kaufen, finden Sie hier die besten USB MIDI Controller Die 9 besten USB-MIDI-Controller für MusikerAuf der Suche nach einem USB-MIDI-Controller? Hier sind die besten MIDI-Controller, die Sie derzeit kaufen können, unabhängig vom Budget. Weiterlesen Sie können kaufen.
Bildnachweis: Keith Gentry über Shutterstock.com
Joe hat einen Abschluss in Informatik von der University of Lincoln, UK. Er ist ein professioneller Softwareentwickler, und wenn er keine Drohnen fliegt oder Musik schreibt, macht er oft Fotos oder produziert Videos.