Inhaltsverzeichnis:

Arduino Uno Midi Fighter - Gunook
Arduino Uno Midi Fighter - Gunook

Video: Arduino Uno Midi Fighter - Gunook

Video: Arduino Uno Midi Fighter - Gunook
Video: Arduino MIDI Fighter Build, Part 2 2024, November
Anonim
Arduino Uno Midi-Kämpfer
Arduino Uno Midi-Kämpfer

Dieses instructable wurde in Erfüllung der Projektanforderung des Makecourse an der University of South Florida (www.makecourse.com) erstellt.

Basierend auf dem beliebten MidiFighter von DJ Techtools kann dieser selbstgebaute Arduino-betriebene Musical Instrument Digital Interface (MIDI)-Controller als MIDI-Gerät für jede Digital Audio Workstation (DAW)-Software verwendet werden. Ein MIDI-Controller kann MIDI-Meldungen von einem Computer senden und empfangen und kann verwendet werden, um die verwendete Software direkt zu steuern. Darüber hinaus sind die Bedienelemente eines MIDI-Controllers vollständig anpassbar – was bedeutet, dass jeder einzelne Taster, Schieberegler und Regler jeder Funktion in einer DAW zugewiesen werden kann. Zum Beispiel kann das Drücken einer Taste eine bestimmte Note spielen oder so programmiert werden, dass das Tempo Ihres Audioprojekts umgeschaltet wird.

github.com/jdtar/Arduino-Midi-Controller

Schritt 1: Materialien

Nachfolgend finden Sie eine Liste der Materialien und Werkzeuge, die in diesem Projekt verwendet wurden.

Arduino Uno

Steckbrett

4051/4067 Multiplexer

Überbrückungsdrähte

Zusätzliches Kabel

2x 10k Ohm lineare Schiebepotentiometer

16x Sanwa 24mm Knöpfe

Schrumpfen durch Hitze

Lötkolben

Rasierklinge

4,7 kΩ Widerstand

Acrylfolie (für Deckel)

Gehäuse für Tasten und Arduino

3D Drucker

Laserschneider

Schritt 2: Design

Entwurf
Entwurf
Entwurf
Entwurf

Das Gehäuse für meinen MIDI-Controller wurde mir bereits vor Projektbeginn zur Verfügung gestellt, also habe ich eine Skizze für den Deckel angefertigt, um zu visualisieren, wo alles platziert werden sollte. Ich wusste, dass ich mindestens 16 Tasten und ein paar Potentiometer als Funktion haben wollte, also versuchte ich, die Komponenten so gleichmäßig wie möglich zu verteilen.

Nachdem ich das Layout für den Deckel erstellt hatte, exportierte ich die Datei als 1:1 PDF und schickte sie an einen Laserschneider, um eine Acrylplatte zu schneiden. Für Schraubenlöcher habe ich mit Marker markiert, wo ich die Löcher haben wollte, und das Acryl mit einem heißen Filament geschmolzen.

Anbei das 1:1 PDF, das 1:1 ausgedruckt und mit Elektrowerkzeugen geschnitten werden kann, falls kein Laserschneider zur Verfügung steht.

Schritt 3: Aufbau und Verkabelung

Aufbau und Verkabelung
Aufbau und Verkabelung
Aufbau und Verkabelung
Aufbau und Verkabelung
Aufbau und Verkabelung
Aufbau und Verkabelung

Nach dem Schneiden des Acryls stellte ich fest, dass das Acryl zu dünn war, um alle Komponenten ausreichend zu tragen. Ich habe dann ein weiteres Blatt ausgeschnitten und zusammengeklebt, was zufällig perfekt funktioniert hat.

Die Verdrahtung der Komponenten erforderte einige Versuche, führte jedoch zu der beigefügten Fritzing-Skizze. Ich habe zuerst die Massedrähte und den 4,7kΩ Widerstand verdrahtet, gelötet und die Anschlüsse an den Knöpfen geschrumpft. Die Montage der beiden Schiebepotentiometer erforderte Schmelzlöcher für die Schrauben im Acryl. Nachdem die beiden Potentiometer eingeschraubt waren, wurden sie mit den analogen Pins A0 und A1 verdrahtet. Nachdem die Verkabelung abgeschlossen war, erinnerte ich mich, dass es keine Knopfkappen für meine Fader gab. Anstatt sie zu kaufen, druckte ich einige Knopfkappen mit einem 3D-Drucker, indem ich sie in Autodesk Fusion 360 skizzierte und in eine STL-Datei exportierte. De

Der Arduino Uno hat nur 12 verfügbare digitale Eingangspins, aber 16 Tasten sollten verdrahtet werden. Um dies zu kompensieren, habe ich einen 74HC4051 Multiplexer auf einem Steckbrett verdrahtet, der 4 digitale Eingangspins verwendet und es mehreren Signalen ermöglicht, eine gemeinsame Leitung zu verwenden, was zu 8 verfügbaren digitalen Eingangspins für insgesamt 16 digitale Pins führt, die verwendet werden können.

Beim Verdrahten der Tasten mit den richtigen Pins musste einfach eine 4x4-Matrix erstellt und im Code verwendet werden. Der knifflige Teil war jedoch, dass der gekaufte Multiplexer ein bestimmtes Pin-Layout hatte, bei dem das Datenblatt half, und ich hatte auch ein bestimmtes Noten-Layout im Sinn, als ich die Tasten verdrahtete, die am Ende ein bisschen so aussahen:

HINWEIS MATRIX

[C2] [C#2] [D2] [D#2]

[G#2] [A1] [A#2] [B1]

[E1] [F1] [F#1] [G1]

[C2] [C#2] [D2] [D#2]

PIN-MATRIX (M = MUX-EINGANG)

[6] [7] [8] [9]

[10] [11] [12] [13]

[M0] [M1] [M2] [M3]

[M4] [M5] [M6] [M7]

Schritt 4: Programmierung

Programmierung
Programmierung

Sobald die Montage abgeschlossen ist, ist nur noch die Programmierung des Arduino übrig. Das angehängte Skript ist so geschrieben, dass es leicht anpassbar ist.

Der Anfang des Skripts enthält die MIDI.h-Bibliothek und eine Controller-Bibliothek aus dem Notes- und Volts-Blog, die beide in der ZIP-Datei für den Code enthalten sind. Mit der Controller-Bibliothek können Objekte für Schaltflächen, Potentiometer und Multiplex-Schaltflächen erstellt werden, die Datenwerte enthalten, die Notennummer, Steuerwerte, Noten-Velocity, MIDI-Kanalnummer usw. enthalten. Die MIDI.h-Bibliothek ermöglicht die MIDI-I/O-Kommunikation auf dem Serielle Arduino-Ports, die wiederum die Daten von den Controller-Objekten entgegennehmen, in MIDI-Nachrichten umwandeln und die Nachrichten an das angeschlossene Midi-Interface senden.

Der Void-Setup-Teil des Skripts initialisiert alle Kanäle als ausgeschaltet und initiiert auch eine serielle Verbindung mit 115200 Baud, einer Geschwindigkeit, die schneller ist als die MIDI-Signale ausgetauscht werden.

Die Hauptschleife nimmt im Wesentlichen die Arrays von Schaltflächen und gemultiplexten Schaltflächen und führt eine for-Schleife aus, die überprüft, ob die Schaltfläche gedrückt oder losgelassen wurde, und die entsprechenden Datenbytes an die Midi-Schnittstelle sendet. Die Potentiometerschleife prüft die Position des Potentiometers und sendet die entsprechenden Spannungsänderungen an das Midi-Interface zurück.

Schritt 5: Einrichtung

Image
Image
Aufstellen
Aufstellen
Aufstellen
Aufstellen
Aufstellen
Aufstellen

Sobald das Skript auf den Arduino geladen wurde, besteht der nächste Schritt darin, Plug-and-Play zu betreiben. Es sind jedoch ein paar Schritte erforderlich, bevor es verwendet werden kann.

Unter OSX hat Apple eine Funktion zum Erstellen virtueller Midi-Geräte integriert, auf die über die Audio-Midi-Setup-Anwendung auf Macs zugegriffen werden kann. Sobald das neue Gerät erstellt wurde, kann Hairless MIDI verwendet werden, um eine serielle Verbindung zwischen dem Arduino und dem neuen virtuellen Midi-Gerät herzustellen. Die serielle Verbindung vom Arduino über Hairless MIDI arbeitet mit der Baudrate, die im Void-Setup-Teil des Skripts definiert ist und muss in den Hairless MIDI-Voreinstellungen entsprechend eingestellt werden.

Zu Testzwecken habe ich Midi Monitor verwendet, um zu überprüfen, ob die richtigen Daten über die serielle MIDI-Verbindung gesendet wurden. Nachdem ich festgestellt hatte, dass alle Tasten die richtigen Daten über die richtigen Kanäle gesendet haben, habe ich das MIDI-Signal so eingerichtet, dass es als MIDI-Eingang an Ableton Live 9 geleitet wird. In Ableton war ich in der Lage, jedem Button geschnittene Audio-Samples zuzuordnen und jedes Sample abzuspielen.

Empfohlen: