Πώς να φτιάξετε έναν ελεγκτή MIDI με ένα Arduino

Πώς να φτιάξετε έναν ελεγκτή MIDI με ένα Arduino

Ως μουσικός που έχει συγκεντρώσει μια συλλογή μουσικών οργάνων και κουτιών θορύβου, το ταπεινό Arduino είναι το τέλειο εργαλείο για τη δημιουργία ενός προσαρμοσμένου ελεγκτή MIDI. Ενώ το Raspberry Pi μπορεί να πήρε το στέμμα για έργα του Internet of Things (IoT), ένα απλό Arduino Uno (ποιοι είναι οι διαφορετικοί τύποι Arduino;) έχει περισσότερη από αρκετή ισχύ για αυτό το έργο.





Πρώτη φορά χρησιμοποιείτε Arduino; Μην ανησυχείτε, έχουμε ολοκληρωμένο Arduino οδηγός για αρχάριους για να διαβάσετε πριν αντιμετωπίσετε αυτό το έργο.





Τι είναι το MIDI;

Το MIDI σημαίνει Musical Instrument Digital Interface. Περιγράφει έναν τυπικό τρόπο επικοινωνίας μεταξύ των μουσικών συσκευών. Εάν διαθέτετε ηλεκτρονικό πληκτρολόγιο, πιθανότατα έχετε διεπαφή MIDI. Ενώ υπάρχουν μερικές τεχνικές λεπτομέρειες που σχετίζονται με την εφαρμογή του MIDI, είναι σημαντικό να θυμόμαστε ότι το MIDI δεν είναι ήχος! Τα δεδομένα MIDI είναι ένα απλό σύνολο οδηγιών (μία εντολή ονομάζεται «μήνυμα») που μπορεί να εφαρμόσει μια άλλη συσκευή για να παράγει διαφορετικούς ήχους ή να ελέγχει παραμέτρους.





Το MIDI υποστηρίζει 16 κανάλια. Αυτό σημαίνει ότι κάθε καλώδιο μπορεί να υποστηρίξει 16 διαφορετικές συσκευές που επικοινωνούν ανεξάρτητα μεταξύ τους. Οι συσκευές συνδέονται χρησιμοποιώντας καλώδιο DIN 5 ακίδων. Το DIN σημαίνει «Γερμανικό Ινστιτούτο Τυποποίησης» και είναι απλώς ένα καλώδιο με πέντε ακίδες στο εσωτερικό του συνδέσμου. Το USB χρησιμοποιείται συχνά στη θέση του DIN 5 ακίδων ή μπορεί να χρησιμοποιηθεί μια διεπαφή USB-MIDI.

MIDI-Cable-Male



Έλεγχος αλλαγής και αλλαγή προγράμματος

Υπάρχουν δύο κύριοι τύποι μηνυμάτων MIDI: Έλεγχος αλλαγής και Αλλαγή προγράμματος.

Τα μηνύματα Control Change (CC) περιέχουν έναν αριθμό ελεγκτή και μια τιμή μεταξύ 0 και 127. Τα μηνύματα CC χρησιμοποιούνται συχνά για την αλλαγή ρυθμίσεων, όπως ένταση ήχος ήχου. Οι συσκευές που δέχονται MIDI θα πρέπει να συνοδεύονται από ένα εγχειρίδιο που θα εξηγεί ποια κανάλια και μηνύματα έχουν ρυθμιστεί από προεπιλογή και πώς να τα αλλάξετε (γνωστό ως χαρτογράφηση MIDI).





Τα μηνύματα αλλαγής προγράμματος (PC) είναι πιο απλά από τα μηνύματα CC. Τα μηνύματα υπολογιστή αποτελούνται από έναν μόνο αριθμό και χρησιμοποιούνται για την αλλαγή της προεπιλογής ή της ενημερωμένης έκδοσης κώδικα σε μια συσκευή. Τα μηνύματα υπολογιστή είναι μερικές φορές γνωστά ως «Αλλαγή κώδικα». Παρόμοια με τα μηνύματα CC, οι κατασκευαστές θα πρέπει να παρέχουν ένα έγγραφο στο οποίο θα περιγράφονται οι προκαθορισμένες ρυθμίσεις που αλλάζουν από ένα συγκεκριμένο μήνυμα.

Αυτό που θα χρειαστείτε

  • Arduino
  • Γυναικεία πρίζα 5 ακίδων DIN
  • 2 αντιστάσεις 220 ohm
  • 2 αντιστάσεις 10k ohm
  • 2 x στιγμιαίοι διακόπτες
  • Σύρματα σύνδεσης
  • Breadboard
  • Καλώδιο MIDI
  • Συσκευή MIDI ή διεπαφή USB
Water & Wood 5 PCs DIN 5 Pin PCB Mounting θηλυκές πρίζες για πληκτρολόγιο PC ΑΓΟΡΑ ΤΩΡΑ ΣΤΟ AMAZON

Σχέδιο κατασκευής

Αυτό το έργο θα είναι αρκετά απλό. Μπορείτε φυσικά να προσθέσετε περισσότερα κουμπιά ή υλικό που ταιριάζει στις ανάγκες σας. Σχεδόν κάθε Arduino θα είναι κατάλληλο - χρειάζονται μόνο τρεις ακίδες για αυτό το παράδειγμα. Αυτό το έργο αποτελείται από δύο κουμπιά για τον έλεγχο του προγράμματος, μια θύρα MIDI για την αποστολή των δεδομένων και μια συσκευή για τη λήψη των μηνυμάτων. Αυτό το κύκλωμα έχει χτιστεί σε ένα breadboard εδώ, ωστόσο είναι δυνατό να το μεταφέρετε σε ένα κουτί έργου και να κολλήσετε συνδέσμους για μια ισχυρή λύση.





Συνέλευση κυκλωμάτων

Arduino-Midi-Controller-Circuit

Σύνδεση MIDI

MIDI-Pinout

Συνδέστε την πρίζα MIDI ως εξής:

  • MIDI pin 5 στο Arduino Transmit (TX) 1 μέσω αντίστασης 220 ohm
  • MIDI pin 4 στο Arduino +5V μέσω αντίστασης 220 ohm
  • MIDI καρφίτσα 2 στη γείωση Arduino

Σύνδεση κουμπιού

Τα κουμπιά λειτουργούν αλλάζοντας την αντίσταση που «βλέπει» το Arduino. Ο πείρος Arduino περνάει από το διακόπτη κατευθείαν στη γείωση ( ΧΑΜΗΛΟΣ ) μέσω αντίστασης 10k ohm (αντίσταση «τραβήξτε προς τα κάτω», διασφαλίζοντας ότι η τιμή παραμένει χαμηλή). Όταν πατηθεί το κουμπί, η τιμή που βλέπει το κύκλωμα αλλάζει σε +5v χωρίς αντίσταση ( ΥΨΗΛΟΣ ). Το Arduino μπορεί να εντοπίσει αυτήν την αλλαγή χρησιμοποιώντας το digitalRead (pin) εντολή. Συνδέστε τα κουμπιά στις ακίδες 6 και 7 της ψηφιακής εισόδου/εξόδου Arduino (I/O). Συνδέστε και τα δύο κουμπιά:

  • Αριστερή πλευρά του κουμπιού έως +5V
  • Δεξιά πλευρά του κουμπιού στο Arduino Ground μέσω αντίστασης 10k ohm
  • Δεξιά πλευρά του κουμπιού στην καρφίτσα Arduino (6 ή 7)

Δοκιμή MIDI

Τώρα που ολοκληρώθηκε όλο το υλικό, ήρθε η ώρα να το δοκιμάσετε. Θα χρειαστείτε μια διεπαφή USB-MIDI (πολλές διεπαφές ήχου μπορούν να το κάνουν αυτό) και ένα καλώδιο MIDI. Η θύρα MIDI που είναι συνδεδεμένη στο breadboard στέλνει δεδομένα, οπότε είναι η έξοδος. Ο υπολογιστής σας λαμβάνει τα δεδομένα, επομένως είναι η είσοδος. Αυτό το έργο χρησιμοποιεί το εξαιρετικό Arduino Βιβλιοθήκη MIDI v4.2 από το Forty Seven Effects. Αφού εγκαταστήσετε τη Βιβλιοθήκη, μπορείτε να την συμπεριλάβετε στον κωδικό σας μεταβαίνοντας στο Σκίτσο> Συμπερίληψη βιβλιοθήκης> MIDI Το

Θα χρειαστείτε επίσης ένα πρόγραμμα για την παρακολούθηση των εισερχόμενων δεδομένων MIDI:

Συνδέστε το Arduino στον υπολογιστή σας και ανεβάστε τον ακόλουθο κωδικό δοκιμής (μην ξεχάσετε να επιλέξετε τη σωστή πλακέτα και θύρα από το Εργαλεία> Πίνακας και Εργαλεία> Θύρα μενού).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Αυτός ο κωδικός θα στείλει ένα μήνυμα CC, περιμένετε 1 δευτερόλεπτο, στείλετε ένα μήνυμα υπολογιστή και περιμένετε 1 δευτερόλεπτο επ 'αόριστον. Εάν όλα λειτουργούν σωστά, θα πρέπει να δείτε ένα μήνυμα να εμφανίζεται στην οθόνη MIDI.

Αν δεν συμβεί τίποτα, μην πανικοβληθείτε! Δοκιμάστε την αντιμετώπιση προβλημάτων:

  • Βεβαιωθείτε ότι όλες οι συνδέσεις είναι σωστές
  • Ελέγξτε ότι η θύρα MIDI είναι σωστά συνδεδεμένη - θα πρέπει να υπάρχουν 2 εφεδρικές ακίδες στις εξωτερικές άκρες
  • Ελέγξτε ξανά ότι το κύκλωμα είναι σωστό
  • Βεβαιωθείτε ότι το κύκλωμα είναι συνδεδεμένο σε διεπαφή USB-MIDI με καλώδιο MIDI
  • Ελέγξτε ότι το καλώδιο MIDI είναι συνδεδεμένο στο εισαγωγή στη διεπαφή USB-MIDI
  • Βεβαιωθείτε ότι το Arduino έχει ισχύ
  • Εγκαταστήστε το σωστό πρόγραμμα οδήγησης για τη διασύνδεση USB-MIDI

Αν είστε ακόμη αντιμετωπίζοντας προβλήματα ίσως αξίζει να ελέγξετε το breadboard σας. Οι φτηνές σανίδες μπορεί μερικές φορές να είναι πολύ ασυνεπείς και χαμηλής ποιότητας-μου συνέβη ενώ εργάζομαι σε αυτό το έργο.

Δοκιμή κουμπιού

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

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Εκτελέστε αυτόν τον κωδικό (αλλά διατηρήστε το καλώδιο USB συνδεδεμένο) και ανοίξτε τη Σειριακή οθόνη ( Επάνω δεξιά> Σειριακή οθόνη ). Όταν πατάτε ένα κουμπί, θα πρέπει να δείτε το 'Button One Works!' ή 'Button Two Works!' ανάλογα με το κουμπί που πατήσατε.

Υπάρχει μια σημαντική σημείωση που πρέπει να αφαιρεθεί από αυτό το παράδειγμα-το λογισμικό αποκλείει. Αυτή είναι μια απλή καθυστέρηση 10 χιλιοστών του δευτερολέπτου μεταξύ του ελέγχου του κουμπιού και στη συνέχεια του ελέγχου του κουμπιού ξανά. Αυτό αυξάνει την ακρίβεια του πατήματος κουμπιού και βοηθά στην αποφυγή θορύβου που προκαλεί το Arduino. Δεν χρειάζεται να το κάνετε αυτό, αν και συνιστάται.

Δημιουργία του ελεγκτή

Τώρα που όλα είναι ενσύρματα και λειτουργούν, ήρθε η ώρα να συναρμολογήσετε τον πλήρη ελεγκτή.

Αυτό το παράδειγμα θα στείλει ένα διαφορετικό μήνυμα CC για κάθε κουμπί που πατάτε. Το χρησιμοποιώ για να ελέγξω το Ableton Live 9.6 στο OS X. Ο κώδικας είναι παρόμοιος με τα δύο παραπάνω δείγματα δοκιμής.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Σημείωση - δεν θα μπορείτε να χρησιμοποιήσετε Serial.println () με έξοδο MIDI.

Εάν θέλετε να στείλετε ένα μήνυμα υπολογιστή αντί για ένα CC, απλώς αντικαταστήστε:

midiOut.sendControlChange(42,127,1);

Με:

midiOut.sendProgramChange(value, channel);

Εν ΔΡΑΣΕΙ

Παρακάτω είναι μια επίδειξη ως ελεγκτής για Ableton Live ( Το καλύτερο λογισμικό DJ για κάθε προϋπολογισμό ). Επάνω δεξιά εμφανίζονται οι μετρητές ήχου και στην επάνω μέση τα εισερχόμενα midi μηνύματα (μέσω Οθόνη MIDI στο OS X).

να παρακολουθήσετε ταινίες στο τηλέφωνο δωρεάν δωρεάν

Έχετε φτιάξει έναν ελεγκτή MIDI;

Υπάρχουν πολλές πρακτικές χρήσεις για έναν προσαρμοσμένο ελεγκτή MIDI. Θα μπορούσατε να φτιάξετε μια τεράστια μονάδα ελεγχόμενη με πόδια ή ένα κομψό χειριστήριο στούντιο. Και αν ενδιαφέρεστε να αγοράσετε ένα, εδώ είναι οι καλύτεροι ελεγκτές MIDI USB που μπορείτε να αγοράσετε.

Πίστωση εικόνας: Keith Gentry via Shutterstock.com

Ελπίζουμε να σας αρέσουν τα αντικείμενα που προτείνουμε και συζητάμε! Το MUO έχει συνεργασίες θυγατρικών και χορηγών, οπότε λαμβάνουμε ένα μερίδιο των εσόδων από ορισμένες από τις αγορές σας. Αυτό δεν θα επηρεάσει την τιμή που πληρώνετε και μας βοηθά να προσφέρουμε τις καλύτερες προτάσεις προϊόντων.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Αξίζει την αναβάθμιση σε Windows 11;

Τα Windows έχουν επανασχεδιαστεί. Είναι όμως αυτό αρκετό για να σας πείσει να μεταβείτε από τα Windows 10 στα Windows 11;

Διαβάστε Επόμενο
Σχετικά θέματα
  • DIY
  • Λογισμικό DJ
  • Arduino
  • ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
  • ΜΕΣΗΜΕΡΙ
Σχετικά με τον Συγγραφέα Τζο Κόμπερν(Δημοσιεύθηκαν 136 άρθρα)

Ο Joe είναι απόφοιτος της Επιστήμης των Υπολογιστών από το Πανεπιστήμιο του Lincoln, Ηνωμένο Βασίλειο. Είναι επαγγελματίας προγραμματιστής λογισμικού και όταν δεν πετάει με drones ή δεν γράφει μουσική, μπορεί συχνά να βρεθεί να βγάζει φωτογραφίες ή να παράγει βίντεο.

Περισσότερα από τον Joe Coburn

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή
Κατηγορία Diy