Βασικός ελεγκτής Arduino MIDI: 5 βήματα
Βασικός ελεγκτής Arduino MIDI: 5 βήματα
Anonim
Βασικός ελεγκτής Arduino MIDI
Βασικός ελεγκτής Arduino MIDI

Εισαγωγή:

Είμαι νέος στη συνεργασία με το Arduino, αλλά ελπίζω να διευρύνω τις γνώσεις μου διδάσκοντας τους άλλους και λαμβάνοντας σχόλια. Αυτό είναι ένα πολύ βασικό χειριστήριο MIDI με 4 κουμπιά και ποτενσιόμετρο. Το περίγραμμα αυτού του έργου μοιάζει με αυτό:

1. Κατασκευάστε το breadboard

2. Ανεβάστε το Sketch στο Arduino

3. Κατανόηση του Hairless MIDI και του εσωτερικού βρόχου MIDI (loopbe1)

4. δρομολογήστε το MIDI σας σε ένα DAW (Ableton)

Προμήθειες

1 x Arduino Mega 2560

1 x σανίδα ψωμιού

1 x Καλώδιο USB

1 x Ποτενσιόμετρο

4 x κουμπιά τακτικής

4 x αντιστάσεις 120Ohm

14 x καλώδια jumper για breadboard

Βήμα 1: Δημιουργία του Breadboard

Χτίζοντας το Breadboard
Χτίζοντας το Breadboard
Χτίζοντας το Breadboard
Χτίζοντας το Breadboard

Συνδέστε το breadboard σας έτσι ώστε όλα τα στοιχεία να ταιριάζουν με την εικόνα 1 παραπάνω. Κάθε κουμπί πρέπει να μοιάζει με την εικόνα 2. Οι είσοδοι του κουμπιού είναι 2, 3, 4 και 5 στο Arduino και η μεσαία ακίδα του ποτενσιόμετρου συνδέεται με την είσοδο ANALOG A0.

Βήμα 2: Μεταφόρτωση του σκίτσου

Μεταφόρτωση του σκίτσου
Μεταφόρτωση του σκίτσου

Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο Arduino IDE. Επιλέξτε τον σωστό πίνακα στην ενότητα "εργαλεία" και ανεβάστε το σκίτσο στο Arduino.

byte noteON = 144; // note on commandbyte note; // αποθήκευση για την τρέχουσα αναπαραγωγή της σημείωσης int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage για τρέχουσα κατάσταση κουμπιού boolean lastState = LOW; // αποθήκευση για την τελευταία κατάσταση κουμπιού void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // αυτή τη φορά θα ορίσουμε τον πείρο ως INPUT Serial.begin (9600); // αρχικοποίηση σειριακής σύνδεσης} void loop () {int PotVal = analogRead (potPin); byte velocity = map (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); εάν (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // ενεργοποιήστε τη σημείωση 60 με 127 ταχύτητα καθυστέρησης (200) LOW && lastState == Υ HIGHΗΛΗ) {MIDImessage (noteON, 60, 0); // απενεργοποιήστε τη σημείωση 60 καθυστέρηση (2), // ακατέργαστη μορφή του κουμπιού που καταργεί} lastState = currentState; currentState = digitalRead (buttonPin2); εάν (currentState == HIGH && lastState == LOW) {// εάν το κουμπί μόλις έχει πατηθεί MIDImessage (σημείωσηON, 61, ταχύτητα); // ενεργοποιήστε τη σημείωση 60 με 127 ταχύτητα καθυστέρησης (200); // ακατέργαστη μορφή κουμπιού debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // απενεργοποιήστε τη σημείωση 60 καθυστέρηση (2), // ακατέργαστη μορφή πλήκτρων κατάργησης κουμπιού} lastState = currentState; currentState = digitalRead (buttonPin3); εάν (currentState == HIGH && lastState == LOW) {// εάν το κουμπί έχει μόλις πατηθεί MIDImessage (σημείωσηON, 62, ταχύτητα); // ενεργοποιήστε τη σημείωση 60 με 127 ταχύτητα καθυστέρησης (200); // ακατέργαστη μορφή κουμπιού debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // απενεργοποιήστε τη σημείωση 60 καθυστέρηση (2), // ακατέργαστη μορφή πλήκτρων κατάργησης κουμπιού} lastState = currentState; currentState = digitalRead (buttonPin4); εάν (currentState == HIGH && lastState == LOW) {// εάν το κουμπί έχει μόλις πατηθεί MIDImessage (noteON, 63, ταχύτητα); // ενεργοποιήστε τη σημείωση 60 με 127 ταχύτητα καθυστέρησης (200); // ακατέργαστη μορφή κουμπιού debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // απενεργοποιήστε τη σημείωση 60 καθυστέρηση (2), // ακατέργαστη μορφή πλήκτρων κατάργησης κουμπιού} lastState = currentState; } // αποστολή μηνύματος MIDI κενό MIDImessage (εντολή byte, δεδομένα byte1, δεδομένα byte2) {Serial.write (εντολή); Serial.write (data1); Serial.write (data2); }

Είμαι ακόμα πολύ νέος στο να γράφω κώδικα γενικά….. όσοι έχουν λίγη περισσότερη εμπειρία πιθανότατα θα μπορούσαν να το καθαρίσουν…

Βήμα 3: Κατανόηση του χωρίς μαλλιά MIDI και του εσωτερικού βρόχου MIDI

Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI
Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI
Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI
Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI
Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI
Κατανόηση του Hairless MIDI και των εσωτερικών βρόχων MIDI

Το Arduino πρέπει να τρέξει μέσω μιας σειριακής γέφυρας όπως το Hairless MIDI και στη συνέχεια μέσω ενός εσωτερικού βρόχου MIDI όπως loopbe1 (ή διαύλου IAC για Mac).

Σημείωση: δεν μπορείτε να ανεβάσετε ένα σκίτσο στο Arduino ενώ είναι συνδεδεμένο στη σειριακή γέφυρα MIDI χωρίς μαλλιά.

Επιλέξτε το Arduino σας στη σειριακή θύρα MIDI χωρίς μαλλιά και το loopbe1 ή το IAC Bus στο MIDI out.

Σημείωση: βεβαιωθείτε ότι η σίγαση δεν είναι ενεργοποιημένη όταν χρησιμοποιείτε το loopbe1.

Βήμα 4: Σύνδεση στο DAW σας

Σύνδεση στο DAW σας
Σύνδεση στο DAW σας

Εάν λαμβάνετε σήμα στην εφαρμογή MIDI χωρίς μαλλιά όταν πατάτε ένα κουμπί στο breadboard (τα φώτα θα αναβοσβήνουν) θα πρέπει να μπορείτε να στέλνετε δεδομένα MIDI σε ένα DAW. Χρησιμοποίησα το Ableton αλλά οποιοδήποτε DAW πρέπει να λειτουργεί. Βεβαιωθείτε ότι ο εσωτερικός σας βρόχος MIDI (loopbe1) είναι ενεργοποιημένος στις προτιμήσεις DAW (στο Ableton θέλετε να είναι ενεργοποιημένο το "track"). Στη συνέχεια, επιλέξτε μία από τις εισόδους του κομματιού MIDI στον βρόχο MIDI (loopbe1) όπως φαίνεται στην παραπάνω εικόνα.

Βήμα 5: Παίξτε

Image
Image

Τα κουμπιά θα λειτουργούν τώρα όπως οποιοδήποτε άλλο χειριστήριο MIDI! Το ποτενσιόμετρο θα αλλάξει την ταχύτητα των σημειώσεων που αποστέλλονται στο DAW. Το (πολύ σκοτεινό…) βίντεο παραπάνω δείχνει έναν ήχο πιάνου σε δράση!

Συνιστάται: