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

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

Ως μουσικός που έχει συγκεντρώσει μια συλλογή από μουσικά όργανα και κιβώτια θορύβου, το ταπεινό Arduino είναι το τέλειο εργαλείο για τη δημιουργία ενός προσαρμοσμένου ελεγκτή MIDI.
Διαφήμιση

Ως μουσικός που έχει συγκεντρώσει μια συλλογή από μουσικά όργανα και κιβώτια θορύβου, το ταπεινό Arduino είναι το τέλειο εργαλείο για τη δημιουργία ενός προσαρμοσμένου ελεγκτή MIDI. Ενώ το Raspberry Pi μπορεί να έχει πάρει το στέμμα για το Ίντερνετ των πραγμάτων (Internet of Things) Το Διαδίκτυο των πραγμάτων: 10 Χρήσιμα προϊόντα που πρέπει να δοκιμάσετε το 2016 Το Διαδίκτυο των πραγμάτων: 10 Χρήσιμα προϊόντα που πρέπει να δοκιμάσετε το 2016 Το Διαδίκτυο των πραγμάτων αυξάνεται 2016, αλλά τι σημαίνει αυτό ακριβώς; Πώς αξιοποιείτε προσωπικά το Διαδίκτυο των πραγμάτων; Εδώ είναι μερικά χρήσιμα προϊόντα για να απεικονίσουν. Διαβάστε περισσότερα έργα, ένα απλό Arduino Uno (ποιοι είναι οι διάφοροι τύποι Arduino;) Arduino οδηγός αγοράς: ποιο συμβούλιο θα έπρεπε να πάρετε; Arduino οδηγός αγοράς: ποιο συμβούλιο θα πρέπει να έχετε; Υπάρχουν τόσες πολλές διαφορετικές μορφές Arduino συμβούλια έξω εκεί, εσείς Θα πρέπει να βοηθήσετε, με αυτόν τον οδηγό αγορών Arduino! Διαβάστε περισσότερα) έχει περισσότερη δύναμη για αυτό το έργο.

Πρώτη φορά χρησιμοποιώντας ένα Arduino; Χωρίς ανησυχίες, έχουμε έναν πλήρη οδηγό για αρχάριους Arduino Ξεκινώντας με το Arduino: Οδηγός για αρχάριους Ξεκινώντας με το Arduino: Οδηγός για αρχάριους Το Arduino είναι μια πλατφόρμα πρωτοτύπου ηλεκτρονικών ανοικτών πηγών που βασίζεται σε ευέλικτο και εύχρηστο υλικό και λογισμικό. Πρόκειται για καλλιτέχνες, σχεδιαστές, χομπίστες και όσους ενδιαφέρονται να δημιουργήσουν διαδραστικά αντικείμενα ή περιβάλλοντα. Διαβάστε περισσότερα για να διαβάσετε πριν αντιμετωπίσετε αυτό το έργο.

Arduino-Midi-Controller-Breadboard

Τι είναι το MIDI;

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

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

MIDI-καλώδιο-αρσενικό

Αλλαγή ελέγχου και αλλαγή προγράμματος

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

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

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

Τι θα χρειαστείτε

  • Arduino
  • 5 θηλυκή υποδοχή DIN
  • 2 x 220 ohm αντιστάσεις
  • 2 x 10k ohm αντιστάσεις
  • 2 στιγμιαί διακόπτες
  • Καλώδια σύνδεσης
  • Breadboard
  • Καλώδιο MIDI
  • Συσκευή MIDI ή διασύνδεση USB

Νερό & Ξύλο 5 Τεμάχια DIN 5 Pin PCB Βάσεις Γυναικεία Υποδοχές για PC Πληκτρολόγιο Νερό & Ξύλο 5 Τεμάχια DIN 5 Pin PCB Βάση Γυναικεία Πρίζες για PC πληκτρολόγιο Αγοράστε τώρα στο Amazon $ 4.59

Δημιουργία σχεδίου

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

Συγκρότημα κυκλώματος

Circuit Arduino-Midi-Controller

Σύνδεση MIDI

MIDI-Pinout

Συνδέστε την υποδοχή MIDI ως εξής:

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

Κουμπί Σύνδεση

Τα κουμπιά λειτουργούν αλλάζοντας την αντίσταση που βλέπει ο Arduino. Ο πείρος Arduino περνά μέσω του διακόπτη κατευθείαν στη γείωση ( LOW ) μέσω μιας αντίστασης 10k ohm (μια αντίσταση "pull down", διασφαλίζοντας ότι η τιμή παραμένει χαμηλή). Όταν πατήσετε το κουμπί, η τιμή που βλέπει το κύκλωμα αλλάζει σε + 5v χωρίς αντίσταση ( HIGH ). Το 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. Αφού εγκαταστήσετε τη Βιβλιοθήκη, μπορείτε να την συμπεριλάβετε στον κώδικα σας μεταβαίνοντας στο Sketch> Include Library> MIDI .

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

  • Παρακολούθηση MIDI για OS X
  • MIDI-OX για Windows
  • KMidimon για Linux

Συνδέστε το Arduino Ξεκινώντας με το κιτ εκκίνησης Arduino - Εγκατάσταση προγραμμάτων οδήγησης & Εγκατάσταση του Board & Port Ξεκινώντας με το κιτ εκκίνησης Arduino - Εγκατάσταση προγραμμάτων οδήγησης & Ρύθμιση της πλατφόρμας & της θύρας Έτσι έχετε αγοράσει τον εαυτό σας ένα κιτ εκκίνησης Arduino και πιθανώς μερικά άλλα τυχαία δροσερά εξαρτήματα - τώρα τι; Πώς ξεκινάτε πραγματικά να προγραμματίζετε αυτό το πράγμα 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 δευτερόλεπτο, θα στείλει ένα μήνυμα PC και στη συνέχεια θα περιμένει για 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 συνδεδεμένο) και ανοίξτε το Serial Monitor ( Κορυφαία Δεξιά> Σειριακή Παρακολούθηση ). Όταν πιέζετε ένα κουμπί θα πρέπει να δείτε το "Button One Works!" Ή το "Button Two Works!" Ανάλογα με το κουμπί που πιέσατε.

Υπάρχει μια σημαντική σημείωση για να απομακρυνθεί από αυτό το παράδειγμα - το λογισμικό de-αναπήδηση. Αυτή είναι μια απλή καθυστέρηση 10 χιλιοστών (ms) μεταξύ του ελέγχου του κουμπιού και έπειτα του ελέγχου του κουμπιού ξανά. Αυτό αυξάνει την ακρίβεια του πάτημα του κουμπιού και βοηθά στην αποτροπή του θορύβου που ενεργοποιεί το 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 (Best DJ λογισμικό για κάθε προϋπολογισμό) Το καλύτερο λογισμικό DJ για κάθε προϋπολογισμό Το καλύτερο λογισμικό DJ για κάθε προϋπολογισμό Το καλό λογισμικό ανάμειξης μπορεί να κάνει όλη τη διαφορά στην απόδοσή σας., Τα Windows ή το Linux, κάθε επίπεδο δεξιοτήτων και προϋπολογισμού εξασφαλίζεται εάν θέλετε να ξεκινήσετε το DJing. Στην επάνω δεξιά στήλη εμφανίζονται οι μετρητές ήχου και το πάνω μέσον δείχνει τα εισερχόμενα μηνύματα midi (μέσω του MIDI Monitor στο OS X).

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

Υπάρχουν πολλές πρακτικές χρήσεις για έναν προσαρμοσμένο ελεγκτή MIDI. Θα μπορούσατε να οικοδομήσετε μια τεράστια μονάδα ελέγχου ποδιών ή έναν κομψό ελεγκτή στούντιο. Έχετε κάνει έναν προσαρμοσμένο ελεγκτή MIDI; Ενημερώστε με σχόλια, θα ήθελα να τους δω!

Image Credit: Ο Keith Gentry μέσω του Shutterstock.com

In this article