Πίνακας περιεχομένων:

Δημιουργία ελεγκτή Arduino MIDI: 9 βήματα (με εικόνες)
Δημιουργία ελεγκτή Arduino MIDI: 9 βήματα (με εικόνες)

Βίντεο: Δημιουργία ελεγκτή Arduino MIDI: 9 βήματα (με εικόνες)

Βίντεο: Δημιουργία ελεγκτή Arduino MIDI: 9 βήματα (με εικόνες)
Βίντεο: 1. Ξεκινώντας με QLC +. Εργαλεία και λειτουργίες 2024, Ιούλιος
Anonim

Αυτό το διδακτικό δημοσιεύτηκε αρχικά στο ιστολόγιό μου στις 28 Ιουνίου 2020

Μου αρέσει να χτίζω πράγματα που περιλαμβάνουν ηλεκτρονικά και πάντα ήθελα να φτιάξω κάτι χρησιμοποιώντας το Arduino.

Ένα από τα πιο συνηθισμένα build για αρχάριους που βρήκα ήταν ένα χειριστήριο MIDI. Ο ελεγκτής MIDI είναι οποιοδήποτε υλικό που στέλνει δεδομένα MIDI (icalηφιακή διασύνδεση μουσικού οργάνου) σε μια συσκευή για την ενεργοποίηση ήχων και τη δημιουργία μουσικής.

Διαπίστωσα ότι πολλές εφαρμογές είναι περίπλοκες, ακόμη και αυτές που είναι για αρχάριους. Wasταν πολύ απογοητευτικό να βρω ότι πρέπει να χρησιμοποιήσω εκατοντάδες γραμμές αδιάβαστου κώδικα. Or ότι πρέπει να κολλήσω μια αντίσταση σε ορισμένες περιπτώσεις, μεταξύ άλλων παραδειγμάτων.

Η εργασία

Κατασκευάζοντας το δικό μου Arduino MIDI Controller, η πρόθεσή μου ήταν να κάνω ένα ευχάριστο έργο, διατηρώντας τον θόρυβο στο χαμηλότερο. Κάτι που θα μπορούσε να ακολουθήσει κάθε αρχάριος. Για να το πετύχω αυτό, χρησιμοποίησα το MIDI Fighter 3D ως βασική έμπνευση και αφαίρεσα κάθε μη ουσιώδη λειτουργία.

Το συνολικό κόστος του έργου μου ήταν κάτω από $ 30 και ο κατάλογος των υλικών ήταν πολύ σύντομος (σύνδεσμοι συνεργατών):

  • Arduino Leonardo (ή κλώνος): μεταξύ $ 10 και $ 20.
  • 16 x κουμπιά Sanwa 24mm (ή κλώνος): μεταξύ $ 1 και $ 2,50 ανά κουμπί.
  • Συγκολλητικό σίδερο
  • 22 AWG Ηλεκτρικό καλώδιο

Ο πίνακας Arduino

Όταν ξεκίνησα αυτό το έργο διαπίστωσα ότι υπάρχουν ένα σωρό νέα μοντέλα Arduino (που δεν περιλαμβάνουν τους εκατοντάδες συμβατούς πίνακες). Και όλα αυτά προσφέρουν ελαφρώς διαφορετικές δυνατότητες.

Χρειάστηκε να στείλω σήματα MIDI σε έναν υπολογιστή και ο απλούστερος τρόπος για να γίνει αυτό είναι μέσω USB. Οποιοσδήποτε πίνακας Arduino που βασίζεται στον μικροελεγκτή ATmega32u4 διαθέτει ενσωματωμένη επικοινωνία USB.

Οι επίσημοι πίνακες Arduino με εγγενή υποστήριξη USB είναι οι Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Αυτές οι πλακέτες έχουν ενσωματωμένη υποστήριξη USB που σημαίνει ότι μπορούν να λειτουργήσουν ως συσκευή USB MIDI.

Αποφάσισα να πάω με έναν κλώνο του Arduino Leonardo. Έχει αρκετές εισόδους για αυτό το έργο και περιλαμβάνει επίσης κεφαλίδες, γεγονός που καθιστά ευκολότερη τη σύνδεση/αποσύνδεση καλωδίων.

Πρώτα βήματα

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

Για να ανεβάσετε κώδικα στον πίνακα πρέπει να χρησιμοποιήσετε το Arduino IDE. Έχουν επίσης έναν επεξεργαστή Ιστού που είναι πολύ χρήσιμος, αλλά έχουν περιορισμένη ποσόστωση σε ώρες ανά ημέρα που μπορείτε να συντάξετε κώδικα.

Βήμα 1: Αναβοσβήνει το ενσωματωμένο LED

Είναι αστείο πώς το "Hello World" στον κόσμο του υλικού αναβοσβήνει ένα LED.

Aταν μια ωραία έκπληξη για μένα να ανακαλύψω ότι το Arduino Leonardo διαθέτει ενσωματωμένο LED που μπορείτε να αναβοσβήνετε για να δοκιμάσετε τον κωδικό σας. Με αυτόν τον τρόπο δεν χρειάζεται να χτίσετε ένα εξωτερικό κύκλωμα σε ένα breadboard με LED και αντίσταση.

Κωδικός:

Βήμα 2: Αναβοσβήνει η λυχνία LED στη χειροκίνητη είσοδο

Το επόμενο λογικό βήμα ήταν να αναβοσβήνει το ίδιο LED κάθε φορά που στέλνω σήμα. Αφαίρεσα το πλαστικό κάλυμμα του ενός άκρου 2 καλωδίων Dupont και ένωσα το άλλο άκρο στην πλακέτα:

  • Αριθμός 2: Μία από τις ψηφιακές εισόδους (θετική). Θα μπορούσε να είναι οποιοδήποτε ψηφιακό pin.
  • Καρφίτσα GND: Οποιαδήποτε καρφίτσα γείωσης (αρνητική).

Τώρα, κάθε φορά που συνδέω τα εκτεθειμένα άκρα των καλωδίων κλείνω το κύκλωμα και έτσι μπορώ να εκτελέσω κώδικα ως συνέπεια

Κάθε μία από τις 20 ψηφιακές ακίδες στο Leonardo έχει μια εσωτερική αντίσταση (αποσυνδεδεμένη από προεπιλογή) που μπορεί να ενεργοποιηθεί χρησιμοποιώντας το INPUT_PULLUP. Λάβετε υπόψη ότι μια είσοδος pull-up σημαίνει ότι η κατάσταση του κουμπιού είναι ανεστραμμένη:

  • Υ HIGHΗΛΟ όταν το κύκλωμα είναι ανοιχτό (το κουμπί ΔΕΝ πατιέται).
  • LOW όταν το κύκλωμα είναι κλειστό (πιέζεται το κουμπί).

Κωδικός:

Βήμα 3: Εγκατάσταση της Βιβλιοθήκης MIDIUSB

Αυτή η βιβλιοθήκη επιτρέπει σε έναν πίνακα Arduino με δυνατότητες USB να λειτουργεί ως όργανο MIDI μέσω USB. Ελέγξτε την επίσημη τεκμηρίωση για περισσότερες πληροφορίες.

Χρησιμοποιώντας το Arduino IDE, μπορείτε να εγκαταστήσετε επιπλέον βιβλιοθήκες Arduino χρησιμοποιώντας τη Διαχείριση Βιβλιοθηκών:

  1. Ανοίξτε το IDE και κάντε κλικ στο μενού "Sketch", στη συνέχεια "Include Library" και στη συνέχεια "Manage Libraries".
  2. Αναζητήστε το MIDIUSB και κάντε κλικ στην επιλογή Εγκατάσταση.
  3. Μόλις τελειώσει, μια εγκατεστημένη ετικέτα θα πρέπει να εμφανίζεται δίπλα στη βιβλιοθήκη MIDIUSB.
  4. Κλείστε το Διαχειριστή βιβλιοθήκης.

Τώρα το Leonardo μπορεί να στέλνει μηνύματα MIDI μέσω USB! Αλλά πρώτα, χρειάζεται κάποια εικόνα για το πώς λειτουργεί το MIDI.

Πώς λειτουργεί το MIDI

"Το MIDI (Musical Instrument Digital Interface) είναι ένα τυπικό πρωτόκολλο επικοινωνίας που συνδέει ηλεκτρονικά μουσικά όργανα, υπολογιστές και συναφείς συσκευές ήχου για αναπαραγωγή μουσικής." - Wikipedia

Χειρίζεται μηνύματα συμβάντων με δεδομένα ταχύτητας και ταχύτητας της νότας που παίζεται, μεταξύ άλλων οδηγιών

Σε αυτό το συγκεκριμένο έργο, η είσοδος από τα 16 κουμπιά στέλνει διαφορετικά μηνύματα μέσω USB. Αυτά τα μηνύματα μπορούν να μετατραπούν σε ήχο σε υπολογιστή χρησιμοποιώντας οποιοδήποτε κατάλληλο λογισμικό όπως το GarageBand ή το Ableton Live.

Ανατομία ενός μηνύματος MIDI

Για να στείλω ένα μήνυμα MIDI, χρησιμοποίησα τη μέθοδο sendMIDI () από τη Βιβλιοθήκη MIDIUSB που εγκατέστησα στο βήμα 3.

Αυτή η μέθοδος μπορεί να λάβει 4 παραμέτρους:

  • Τύπος συμβάντος: Μπορεί να είναι 0x09 για σημείωση On (αναπαραγωγή σημείωσης) ή 0x08 για σημείωση Off (διακοπή αναπαραγωγής νότας).
  • Σημείωση Ενεργοποίηση/Απενεργοποίηση: Ο τύπος συμβάντος συνδυάζεται με το κανάλι MIDI (1-16). Χρησιμοποιώ μόνο το κανάλι 1, οπότε είναι είτε 0x90 για ενεργοποίηση της σημείωσης είτε 0x80 για απενεργοποίηση της σημείωσης.
  • Αριθμός σημείωσης: Κάθε νότα έχει ένα σχετικό αριθμητικό βήμα (κλίμακα συχνότητας).
  • Ταχύτητα: Από 0 (χωρίς ταχύτητα) έως 127 (ταχύτερη).

Βήμα 4: Αποστολή μηνύματος MIDI

Συμπεριέλαβα τη Βιβλιοθήκη MIDIUSB και αντί να αναβοσβήνει το ενσωματωμένο LED, έστειλα μια σημείωση.

Κωδικός:

⚠ Σημαντικό: Από αυτό το βήμα και μετά το Arduino μετατρέπεται σε MIDI USB Controller και σταματά να λαμβάνει κωδικό μέσω USB.

Όταν κολλήσετε σε μια θέση όπου το Arduino δεν μπορεί πλέον να προγραμματιστεί, ακολουθήστε τα εξής βήματα:

  1. Κρατήστε πατημένο το στρογγυλεμένο κουμπί επαναφοράς στην πλακέτα Arduino.
  2. Κάντε κλικ στο στοιχείο Μεταφόρτωση στο Arduino IDE.
  3. Αφήστε το κουμπί επαναφοράς.
  4. Ο ενημερωμένος κωδικός θα μεταφορτωθεί στον πίνακα.

Βήμα 5: Αποστολή μηνύματος MIDI από κάθε κουμπί

Αποστολή μηνύματος MIDI από κάθε κουμπί
Αποστολή μηνύματος MIDI από κάθε κουμπί

Το τελευταίο βήμα ήταν να χαρτογραφήσουμε κάθε βήμα σε ένα κουμπί. Για τα 16 κουμπιά, όρισα μια κλίμακα από C2 έως E3b, τα οποία είναι τα βήματα από 36 έως 51 σε μια σειρά από κάτω προς τα πάνω και από αριστερά προς τα δεξιά. Ρίξτε μια ματιά σε αυτό το αρχείο από το Arduino Tutorials για να δείτε ποια ένταση αντιστοιχεί σε κάθε νότα.

Χρησιμοποίησα ψηφιακούς πείρους από 2 έως 12 και αναλογικούς ακροδέκτες (χρησιμοποιώντας τους ως ψηφιακούς) από Α0 έως Α4.

Και κάπως έτσι μοιάζει ο τελικός κώδικας

Βήμα 6: Ρύθμιση καναλιών ή τραπεζών (προαιρετικά)

Ρύθμιση καναλιών ή τραπεζών (προαιρετικά)
Ρύθμιση καναλιών ή τραπεζών (προαιρετικά)

Σε περίπτωση που θέλετε να προσθέσετε περισσότερα κουμπιά με δυνατότητα εναλλαγής καναλιών ή τραπεζών, όπως στο MIDI Fighter 3D (δείτε την εικόνα), το Arduino Leonardo διαθέτει τέσσερις ακόμη καρφίτσες που μπορείτε να χρησιμοποιήσετε. Το Arduino Leonardo διαθέτει 20 ψηφιακές ακίδες εισόδου/εξόδου, από τις οποίες μόνο 16 χρησιμοποιούνται για αναπαραγωγή νότες.

Μπορείτε να χρησιμοποιήσετε αυτά τα επιπλέον κουμπιά για να ενημερώσετε μια μεταβλητή στον κώδικα και να στείλετε την τιμή της ως παράμετρο στη μέθοδο MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Βήμα 7: Η υπόθεση

Η υπόθεση
Η υπόθεση
Η υπόθεση
Η υπόθεση

Για να κρατήσω αυτό το έργο απλό, ήμουν εξαιρετικά επιλεκτικός σχετικά με την επιλογή των χαρακτηριστικών που περιλαμβάνουν.

  • Μόνο κουμπιά: 16 arcade κουμπιά τύπου Sanwa, σε πλέγμα 4x4. Χωρίς κουμπιά, χωρίς ρυθμιστικά, χωρίς faders ή οποιαδήποτε άλλη αναλογική είσοδο.
  • Θήκη Unibody: Μη χρησιμοποιείτε βίδες, παξιμάδια, μπουλόνια ή κόλλα για το περίβλημα ή για να κρατάτε την πλακέτα Arduino.
  • Καθημερινά εργαλεία: Για παράδειγμα, κόλλησα τα καλώδια αντί να αγοράσω ένα συγκεκριμένο κουρευτικό σύρμα για τα κουμπιά arcade.

Unibody Design

Μία από τις προκλήσεις που αντιμετώπισα ήταν να σχεδιάσω μια θήκη αρκετά απλή ώστε να μην χρειάζεται συναρμολόγηση και να μπορεί να εκτυπωθεί 3d σε μία μόνο εκτέλεση.

Για να αποφύγω τη χρήση βιδών ή κόλλας, χρειάστηκε να σχεδιάσω ένα περίβλημα που παρέχει τη μικρότερη πρόσβαση στα ηλεκτρονικά. Η μεγαλύτερη έμπνευσή μου για το περίβλημα ήταν το Mac Mini, το οποίο έχει μια τρύπα σε σχήμα κύκλου στο κάτω μέρος. Wantedθελα επίσης να σχεδιάσω ένα βιδωτό καπάκι για αυτό, αλλά αποφάσισα να το αφήσω ανοιχτό για να εκθέσω τα ηλεκτρονικά.

Κατεβάστε την τρισδιάστατη εκτυπώσιμη θήκη (322 KB). Προτεινόμενες ρυθμίσεις: PLA, στρώματα 0,15mm, 20% πλήρωση, υποστηρικτές υποστήριξης τουλάχιστον για τη στρογγυλεμένη κάτω τρύπα, τους κατόχους Arduino και το micro USB.

Κρατώντας ένα Arduino χωρίς βίδες

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

Η εύρεση μιας θήκης κλιπ για το Arduino στο Thingiverse ήταν εύκολη και μου χρειάστηκαν 5 επαναλήψεις για να ενσωματώσω αυτήν τη θήκη στο σχεδιασμό unibody. Το πιο δύσκολο κομμάτι ήταν να κάνει τα πόδια του να αποφύγουν τις τρύπες για τα κουμπιά και να κάνουν το micro USB να ευθυγραμμιστεί στο κέντρο με τη θήκη.

Βήμα 8: Η συνέλευση

Η Συνέλευση
Η Συνέλευση
Η Συνέλευση
Η Συνέλευση
Η Συνέλευση
Η Συνέλευση

Μετά την τοποθέτηση όλων των κουμπιών στη θέση τους, κόλλησα κοντά μαύρα καλώδια ενώνοντας όλα τα αρνητικά σκέλη των κουμπιών μεταξύ τους.

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

Για να συνδέσω τα καλώδια στο Arduino, έκοψα και κόλλησα μερικά άκρα του Dupont και τα σκέπασα με σωλήνες θερμοσυρρίκνωσης.

Συνδέσα τα καλώδια στον πίνακα ακολουθώντας την ίδια σειρά όπως στο MIDI Fighter. Από κάτω προς τα πάνω και από αριστερά προς τα δεξιά

Βήμα 9: Χρήση του ελεγκτή MIDI

Χρήση του ελεγκτή MIDI
Χρήση του ελεγκτή MIDI

Οποιοδήποτε λογισμικό μουσικής (ή κατάλληλο υλικό) μπορεί να χρησιμοποιηθεί για τη λήψη MIDI και τη δημιουργία μουσικής. Τα πιο προτεινόμενα είναι το Garage Band, το Ableton Live και γνωρίζω ότι υπάρχουν πολλές εφαρμογές για εγκατάσταση σε ένα τηλέφωνο.

Όλα αυτά τα εργαλεία είναι χρήσιμα για τη φόρτωση προκαθορισμένων ήχων για τύμπανο στα δάχτυλα, αλλά έγιναν για μεγαλύτερους σκοπούς. Αυτά τα εργαλεία μπορεί να είναι δύσκολα για αρχάριους.

MIDI στο πρόγραμμα περιήγησης στο Web

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

Punchy: Υλοποίηση WebMIDI και WebAudio για ελεγκτές MIDI.

Μπορεί να διαβάσει μηνύματα MIDI σε οποιοδήποτε πρόγραμμα περιήγησης που υποστηρίζει το WebMIDI JavaScript API. Στη συνέχεια, αναπαράγει ήχους σε συνθεσάιζερ (χρησιμοποιώντας το WebAudio API) ή σε δειγματολήπτη, φορτώνοντας προσαρμοσμένους ήχους από οποιοδήποτε πακέτο ήχου.

Ρυθμίστε το Ableton Live

Για να κάνετε το MIDI Controller να λειτουργεί με το Ableton Live, ακολουθήστε αυτά τα απλά βήματα από την επίσημη τεκμηρίωσή του.

Μεταβείτε στις Προτιμήσεις → Σύνδεση MIDI και βεβαιωθείτε ότι η "Εισαγωγή" έχει "Track" και "Remote" ON και η έξοδος έχει "Remote" ON, όπως αναφέρεται στον οδηγό:

Συνιστάται: