Inhaltsverzeichnis:

Grundlegender Arduino MIDI-Controller - Gunook
Grundlegender Arduino MIDI-Controller - Gunook

Video: Grundlegender Arduino MIDI-Controller - Gunook

Video: Grundlegender Arduino MIDI-Controller - Gunook
Video: WORLDE ORCA MINI 25 HONEST REVIEW - Is it Worth It? 2024, November
Anonim
Grundlegender Arduino-MIDI-Controller
Grundlegender Arduino-MIDI-Controller

Einführung:

Ich bin neu in der Arbeit mit Arduino, aber ich hoffe, mein Wissen zu erweitern, indem ich andere unterrichte und Feedback erhalte. Dies ist ein sehr einfacher MIDI-Controller mit 4 Tasten und einem Potentiometer. Die Gliederung für dieses Projekt sieht wie folgt aus:

1. Baue das Steckbrett aus

2. Laden Sie die Skizze zum Arduino hoch

3. Verstehen Sie Hairless MIDI und den internen MIDI-Loop (loopbe1)

4. routen Sie Ihre MIDI-Daten zu einer DAW (Ableton)

Lieferungen

1 x Arduino Mega 2560

1 x Brotbrett

1 x USB-Kabel

1 x Potentiometer

4 x Takttasten

4 x 120Ohm Widerstände

14 x Starthilfekabel für Steckbrett

Schritt 1: Aufbau des Steckbretts

Das Steckbrett bauen
Das Steckbrett bauen
Das Steckbrett bauen
Das Steckbrett bauen

Schließen Sie Ihr Steckbrett so an, dass alle Komponenten mit Bild 1 oben übereinstimmen. Jede Taste sollte wie in Bild 2 aussehen. Die Tasteneingänge sind 2, 3, 4 und 5 auf dem Arduino und der mittlere Pin des Potentiometers ist mit dem ANALOG-Eingang A0 verbunden.

Schritt 2: Hochladen der Skizze

Hochladen der Skizze
Hochladen der Skizze

Kopieren Sie den folgenden Code und fügen Sie ihn in die Arduino-IDE ein. Wählen Sie unter "Tools" das richtige Board aus und laden Sie die Skizze zum Arduino hoch.

Byte NoteON = 144; // Note on Commandbyte Note; // Speicher für die aktuell gespielte Note int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // Speicher für den aktuellen Schaltflächenzustand boolean lastState = LOW; // Speicher für den letzten Schaltflächenzustand void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // Diesmal werden wir den Pin als INPUT Serial.begin (9600) setzen; // Serielle Verbindung initialisieren aufrechtzuerhalten. Void Schleife () { Int PotVal = analogRead (potPin); Byte-Geschwindigkeit = map(PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) { MIDImessage (noteON, 60, Velocity); // Note 60 mit 127 Velocity Delay (200) einschalten; // grobe Form der Tastenentprellung } else if (currentState == LOW && lastState == HIGH) { MIDImessage (noteON, 60, 0); // Note 60 ausschalten Verzögerung (2); // grobe Form der Tastenentprellung} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {//wenn die Taste gerade gedrückt wurde MIDImessage (noteON, 61, Velocity); // Note 60 mit 127 Velocity Delay (200) einschalten; // grobe Form der Taste Entprellung} else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0); // Note 60 ausschalten Verzögerung (2); // grobe Form der Tastenentprellung} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {//wenn die Taste gerade gedrückt wurde MIDImessage (noteON, 62, Velocity); // Note 60 mit 127 Velocity Delay (200) einschalten; // grobe Form der Taste Entprellung} else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0); // Note 60 ausschalten Verzögerung (2); // grobe Form der Tastenentprellung} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {//wenn die Taste gerade gedrückt wurde MIDImessage (noteON, 63, Velocity); // Note 60 mit 127 Velocity Delay (200) einschalten; // grobe Form der Taste Entprellung} else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0); // Note 60 ausschalten Verzögerung (2); // grobe Form der Tastenentprellung} lastState = currentState; } // MIDI-Nachricht senden void MIDImessage (Byte-Befehl, Byte-Daten1, Byte-Daten2) { Serial.write (Befehl); Serial.write (Daten1); Serial.write (Daten2); }

Ich bin immer noch sehr neu im Schreiben von Code im Allgemeinen….. diejenigen mit etwas mehr Erfahrung könnten das wahrscheinlich aufräumen…

Schritt 3: Hairless MIDI und interne MIDI Loops verstehen

Hairless MIDI und interne MIDI Loops verstehen
Hairless MIDI und interne MIDI Loops verstehen
Hairless MIDI und interne MIDI Loops verstehen
Hairless MIDI und interne MIDI Loops verstehen
Hairless MIDI und interne MIDI Loops verstehen
Hairless MIDI und interne MIDI Loops verstehen

Der Arduino muss über eine serielle Brücke wie Hairless MIDI und dann über eine interne MIDI-Schleife wie loopbe1 (oder IAC-Bus für Mac) laufen.

Hinweis: Sie können keine Skizze auf das Arduino hochladen, während es mit der haarlosen seriellen MIDI-Brücke verbunden ist.

Wählen Sie Ihren Arduino im seriellen Hairless-MIDI-Port und loopbe1 oder IAC-Bus im MIDI-Ausgang aus.

Hinweis: Stellen Sie sicher, dass die Stummschaltung nicht aktiviert ist, wenn Sie loopbe1 verwenden.

Schritt 4: Verbinden mit Ihrer DAW

Verbinden mit Ihrer DAW
Verbinden mit Ihrer DAW

Wenn Sie beim Drücken einer Taste auf dem Steckbrett ein Signal an die Hairless MIDI-App erhalten (die Lichter blinken), sollten Sie in der Lage sein, MIDI-Daten an eine DAW zu senden. Ich habe Ableton verwendet, aber jede DAW sollte funktionieren. Stellen Sie sicher, dass Ihr interner MIDI-Loop (loopbe1) in Ihren DAW-Einstellungen aktiviert ist (in Ableton möchten Sie, dass "Track" aktiviert ist). Wählen Sie als Nächstes einen Ihrer MIDI-Spureingänge für den MIDI-Loop (loopbe1) aus, wie in der Abbildung oben gezeigt.

Schritt 5: Spielen

Image
Image

Die Tasten funktionieren jetzt wie jeder andere MIDI-Controller! Das Potentiometer ändert die Velocity der Noten, die an die DAW gesendet werden. Das (sehr düstere…) Video oben zeigt einen Flügelklang in Aktion!

Empfohlen: