Πίνακας περιεχομένων:
- Βήμα 1: Συνδέστε το NunChuck σας
- Βήμα 2: Γνωριμία με τον Mozzi
- Βήμα 3: Το βάζουμε όλα μαζί
- Βήμα 4: Τελικές πινελιές
Βίντεο: Wii Nunchuck Synthesizer: 4 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Ο κόσμος της μουσικής Wii:
Αποφάσισα να συνδυάσω επιτέλους την αγάπη μου για τη μουσική με τη μικρή εμπειρία προγραμματισμού που έχω αποκτήσει τα τελευταία χρόνια. Ενδιαφέρομαι να δημιουργήσω ένα δικό μου όργανο από τότε που είδα μια ομιλία του Tod Machover στο σχολείο μου. Εάν δεν είστε εξοικειωμένοι με τη δουλειά του, δώστε του ένα Google, καθώς ξεπερνά τα όρια της μουσικής, της τεχνολογίας, καθώς και τη διασταύρωσή τους εδώ και αρκετά χρόνια (εργαστήρια πολυμέσων του MIT, Rock Band, Guitar Hero κ.λπ.).).
Έχω συνδέσει το Nunchuck μου με ένα Arduino Uno που λειτουργεί στη βιβλιοθήκη σύνθεσης ήχου Mozzi λόγω της καλά τεκμηριωμένης χρήσης και των δύο διαδικτυακά. Για ευκολία, χρησιμοποιώ έναν προσαρμογέα ψωμιού WiiChuck που συνδέεται απευθείας στο Arduino. Αυτό το σχετικά απλό έργο παίζει μια σειρά από γήπεδα ανάλογα με το βήμα (YZ-Plane) που μετράται από το επιταχυνσιόμετρο του Nunchuck. Η τιμή Υ του χειριστηρίου αντιστοιχεί στο κέρδος για να κάνει το βήμα πιο δυνατό ή πιο μαλακό. Αλλάζει επίσης συγχορδίες ανάλογα με το κουμπί Z και ενεργοποιεί ένα φάκελο διαμόρφωσης φάσης όταν πατηθεί το κουμπί C. Στη συνέχεια, η συχνότητα του φακέλου τροποποιείται με το Roll να μετριέται από το Nunchuck (η εικόνα γυρίζει το κουμπί).
Πόροι:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x Προσαρμογέας WiiChuck
- 1 x θηλυκό στερεοφωνικό βύσμα 3.5mm συμβατό με breadboard
- 1 x καλώδιο ήχου 3,5 mm
- 1 x ηχείου κάποιου είδους (Μπορείτε να συνδέσετε ένα βομβητή στην αρχή για να το δοκιμάσετε
- 4-5 Σύρματα διαφόρων χρωμάτων
Προαιρετικό αλλά συνιστάται:
- 1 x 330 Ohm αντίσταση
- Πυκνωτής 1 x 0,1 uF
Βήμα 1: Συνδέστε το NunChuck σας
Αντιγράψτε/Επικολλήστε την τάξη WiiChuck από την παιδική χαρά Arduino. Θα χρειαστούμε την έκδοση με τη δήλωση των ακίδων PWR και GND. Αποθηκεύστε το ως WiiChuck.h και κρατήστε το στον ίδιο κατάλογο με το έργο σας.
Τώρα αντιγράψτε/επικολλήστε τα παρακάτω στο Arduino IDE και ανεβάστε το.
#include "Wire.h" //#include "WiiChuckClass.h" // πιθανότατα το WiiChuck.h για εμάς τους υπόλοιπους. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();
void setup () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
void loop () {
καθυστέρηση (20)? chuck.update ();
Serial.print (chuck.readPitch ());
Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");
Serial.print (chuck.readJoyX ());
Serial.print (","); Serial.print (chuck.readJoyY ()); Serial.print (",");
αν (chuck.buttonZ) {
Serial.print ("Z"); } else {Serial.print ("-"); }
Serial.print (",");
// δεν είναι συνάρτηση // if (chuck.buttonC ()) {
if (chuck.buttonC) {Serial.print ("C"); } else {Serial.print ("-"); }
Serial.println ();
}
Αποσυνδέστε το Arduino από την τροφοδοσία και συνδέστε τον προσαρμογέα WiiChuck σε Analog Pins 2-5 στο Arduino σας.
Συνδεθείτε ξανά στην τροφοδοσία και βεβαιωθείτε ότι οι τιμές του Nunchuck αποστέλλονται στο Arduino σας και εκτυπώνονται στο Serial Monitor. Εάν δεν βλέπετε καμία αλλαγή στους αριθμούς, βεβαιωθείτε ότι οι συνδέσεις σας είναι καλές και ότι το Nunchuck λειτουργεί. Πέρασα μερικές ημέρες προσπαθώντας να διορθώσω το λογισμικό πριν συνειδητοποιήσω ότι το καλώδιο του Nunchuck μου ήταν εσωτερικά σπασμένο!
Στη συνέχεια, θα συνδέσουμε τα πάντα με τον Mozzi. Το Το
Βήμα 2: Γνωριμία με τον Mozzi
Πρώτον, θα χρειαστεί να κατεβάσετε την τελευταία έκδοση του Mozzi. Τροφοδοτούνται από δωρεές, γι 'αυτό δωρίστε εάν αισθάνεστε τόσο διατεθειμένοι και κατεβάστε τη βιβλιοθήκη. Μπορείτε να το προσθέσετε εύκολα στις βιβλιοθήκες σας επιλέγοντας Sketch> Libraries> Add. ZIP Library… από το Arduino IDE.
Τώρα θα συνδέσουμε την υποδοχή ακουστικών 3,5 mm στο breadboard και το Arduino, ώστε να μπορούμε εύκολα να συνδεθούμε αργότερα (μπορείτε να αποσυνδέσετε το Nunchuck και τον προσαρμογέα προς το παρόν).
- Συνδέστε το Jack σας στην κάτω δεξιά γωνία του πίνακα για να δημιουργήσετε χώρο για τα υπόλοιπα. Το βύσμα πρέπει να έχει πλάτος 5 ακίδες.
- Συνδέστε τη μεσαία σειρά με τη γείωση με ένα καλώδιο βραχυκυκλωτήρα.
- Συνδέστε την κορυφαία σειρά του γρύλου σε μια κενή σειρά πάνω (Σειρά 10 στην εικόνα). Αυτό είναι το καλώδιο που μεταφέρει το ηχητικό σήμα.
- Συνδέστε το Digital Pin ~ 9 στη σειρά 10 επίσης.
- Συνδέστε το Ground στο Arduino σας με τη ράγα στο έδαφος στο breadboard.
- Δεν χρειάζεται απαραίτητα να χρησιμοποιήσετε ακόμα την αντίσταση και τον πυκνωτή, αλλά μπορεί να παρατηρήσετε ένα υψηλό τρίξιμο αν δεν το κάνετε. Λειτουργεί ως φίλτρο χαμηλής διέλευσης για την εξάλειψη συχνοτήτων άνω των ~ 15 kHz.
Ανοίξτε το σκίτσο του Mozzi's Sinewave στο Arduino IDE επιλέγοντας Αρχείο> Παραδείγματα> Mozzi> Βασικά> Sinewave. Αυτό είναι ουσιαστικά το αντίστοιχο του Mozzi με το "Hello World".
Ανεβάστε το σκίτσο και συνδέστε ένα ηχείο στο breadboard. Μπορείτε επίσης να χρησιμοποιήσετε ένα βομβητή, εάν δεν έχετε συνδέσει ακόμα το breadboard στην υποδοχή ήχου.
Εάν δεν ακούτε ένα σταθερό A4 (440Hz) που προέρχεται από το ηχείο σας, βεβαιωθείτε ότι όλες οι συνδέσεις σας είναι καλές και δοκιμάστε ξανά.
Στη συνέχεια, θα συνδέσουμε το Nunchuck με το Arduino!
Βήμα 3: Το βάζουμε όλα μαζί
Τώρα θα χρησιμοποιήσουμε την τιμή ρολού από το Nunchuck για να αλλάξουμε τη συχνότητα ενός Sinewave.
Από το Arduino IDE Επιλέξτε Αρχείο> Παραδείγματα> Mozzi> Αισθητήρες> Συχνότητα πιέζο
Θα χρειαστεί να προσθέσουμε μερικές γραμμές σε αυτόν τον κώδικα για να λειτουργήσει με το Nunchuck. Προσθέστε ένα περιεχόμενο στη βιβλιοθήκη WiiChuck και δημιουργήστε ένα αντικείμενο WiiChuck που ονομάζεται τσοκ. Μπορείτε επίσης να σχολιάσετε τη δήλωση PIEZO_PIN ή απλώς να τη διαγράψετε καθώς δεν θα τη χρησιμοποιήσουμε.
#include "WiiChuck. H"
WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // ορίστε τον αναλογικό πείρο εισόδου για το πιεζό
Τώρα κατά τη ρύθμιση, θα πρέπει να προσθέσουμε τα ακόλουθα:
chuck.begin (); chuck.update ();
και τέλος θα χρειαστεί να αλλάξουμε μερικά πράγματα στο updateControl ():
void updateControl () {
chuck.update (); // λάβετε τα τελευταία δεδομένα nunchuck // διαβάστε το piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // η τιμή είναι 0-1023 int piezo_value = map (Σχολιάστε τη γραμμή που ορίζει piezo_value και προσθέστε την παρακάτω παρακάτω:
void updateControl () {chuck.update (); // λάβετε τα τελευταία δεδομένα nunchuck // διαβάστε το piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // η τιμή είναι 0-1023 // Δεν χρειαζόμαστε την παραπάνω γραμμή, αλλά γιατί να μην αντιστοιχίσουμε το ρολό στο ίδιο εύρος; int piezo_value = χάρτης (chuck.readRoll (), -180, 180, 0 1023);
Ανεβάστε τον κωδικό και η συχνότητα θα πρέπει να αντιστοιχεί στο Nunchuck's Roll. Δοκιμάστε να το αντιστοιχίσετε σε διαφορετικά εύρη συχνοτήτων. Εάν δεν έχετε παρατηρήσει παρακάτω στο σκίτσο, η τιμή από τον αισθητήρα πολλαπλασιάζεται με 3, οπότε αυτή τη στιγμή παίζουμε τόνους από 0 Hz έως περίπου 3000 Hz.
Βήμα 4: Τελικές πινελιές
Τώρα είστε έτοιμοι να ανεβάσετε την τελική έκδοση του κώδικα που έχω συγκεντρώσει από το προηγούμενο βήμα και μερικά ακόμη παραδείγματα του Mozzi (Phase_Mod_Envelope και Control_Gain για την ακρίβεια). Για να διευκολύνω τη ζωή μου, συμπεριέλαβα επίσης ένα αρχείο που ονομάζεται pitches.h, το οποίο απλώς καθορίζει τις τιμές συχνότητας με γνωστά ονόματα σημειώσεων (δηλ. NOTE_A4).
Προτείνω να διαβάσετε την τεκμηρίωση Mozzi, καθώς μεγάλο μέρος του κώδικα είναι απευθείας από τα παραδείγματα, εκτός από τον κώδικα για το Nunchuck.
Εδώ είναι ένας σύνδεσμος προς το αποθετήριο Git μου. Όλα τα σημαντικά αρχεία περιλαμβάνονται εκτός από τη βιβλιοθήκη Mozzi την οποία πρέπει να λάβετε από την ιστοσελίδα τους, ώστε να είναι ενημερωμένη. Κατεβάστε το WiiMusic.ino και ανεβάστε το στη συσκευή σας για να ακούσετε πώς ακούγεται. Σας προτείνω να παίξετε με τις παραμέτρους που αλλάζω (αλλάξτε το εύρος χάρτη, διαιρέστε/πολλαπλασιάστε αριθμούς κλπ…) Καθώς έτσι βρήκα τον συγκεκριμένο ήχο που έψαχνα.
Αντανάκλαση
Δεν νιώθω ότι έχω τελειώσει. Αυτό δεν σημαίνει ότι δεν είμαι ικανοποιημένος με το έργο ή τον ήχο που κάνει, αλλά αισθάνομαι ότι μόλις βούτηξα τα δάχτυλα των ποδιών μου σε έναν νέο κόσμο που θέλω να συνεχίσω να εξερευνώ, οπότε θα προσθέσω έναν νέο κλάδο από αυτό το έργο καθώς συνεχίζω να δουλέψω.
Παρ 'όλα αυτά, αυτό ήταν το πρώτο μου αληθινό ταξίδι στον κόσμο των μικροελεγκτών, οπότε είμαι πολύ ευγνώμων για τη μαθησιακή εμπειρία. Οι είκοσι περίπου ώρες που πέρασα δουλεύοντας σε αυτό μου έδωσαν χριστουγεννιάτικες ιδέες για μένα και σχεδόν κάθε μέλος της οικογένειάς μου. Λυπάμαι κάπως που δεν δούλεψα σε αυτό το έργο με κάποιον άλλο καθώς θα μπορούσα να είχα χρησιμοποιήσει πολλές συμβουλές και καθοδήγηση στην πορεία. Ωστόσο, προσωπικά έμαθα πολλά μέσα από τις δοκιμές μου, συμπεριλαμβανομένων τριών ημερών που έβγαλα τα μαλλιά μου προσπαθώντας να διορθώσω ένα πρόβλημα λογισμικού που δεν υπήρχε ποτέ (ένα εσωτερικό καλώδιο στο Nunchuck είχε σπάσει).
Υπάρχουν ακόμη πολλές δυνατότητες να προχωρήσουμε. Για παράδειγμα, θα ήθελα πολύ να χρησιμοποιήσω το Arduino ως έναν τύπο διεπαφής MIDI μεταξύ ενός ελεγκτή MIDI και των ακουστικών για να αλλάξω τις παραμέτρους της σημείωσης MIDI, καθώς υπάρχουν τόσες πολλές επιλογές (ένταση, αποκοπή, συχνότητα φακέλου, κάμψη, διαμόρφωση, vibrato, το ονομάζετε). Αυτό θα επέτρεπε πολύ μεγαλύτερη ευελιξία, συμπεριλαμβανομένης της εναλλαγής παραμέτρων με τα κουμπιά και απλώς την αναπαραγωγή μιας χορδής που δεν είναι κωδικοποιημένη σε πίνακα C ++.
Συνιστάται:
Oh Christmas Tree (Oh Tannenbaum) With MakeyMakey on the Water Synthesizer: 7 Βήματα
Oh Christmas Tree (Oh Tannenbaum) With MakeyMakey on the Water Synthesizer: Αυτό το χριστουγεννιάτικο τραγούδι είναι καλό να παιχτεί με το makeymakey στο waterynthesizer. Μπορείτε να το παίξετε με εννέα τόνους. Για την ατμόσφαιρα είναι ωραίο να έχετε λίγο χριστουγεννιάτικο φως :-) Απολαύστε
Arpeggiating Synthesizer (Mosquito I): 6 βήματα
Arpeggiating Synthesizer (Mosquito I): Το Mosquito I είναι ένας μικρός συνθεσάιζερ arpeggiating που χρησιμοποιεί Arduino Nano και τη βιβλιοθήκη σύνθεσης ήχου Mozzi. Μπορεί να παίξει πάνω από είκοσι ακολουθίες 8 βημάτων, αλλά μπορείτε να προσθέσετε όσες προσαρμοσμένες ακολουθίες θέλετε. Είναι σχετικά απλό στη ρύθμιση και δεν
Water Synthesizer With MakeyMakey and Scratch: 6 βήματα (με εικόνες)
Water Synthesizer With MakeyMakey and Scratch: Η χρήση του MakeyMakey για τη μετατροπή διαφορετικών υλικών σε διακόπτες ή κουμπιά και έτσι ενεργοποίηση κινήσεων ή ήχων στον υπολογιστή είναι μια συναρπαστική υπόθεση. Κάποιος μαθαίνει ποιο υλικό διεξάγει την αδύναμη τρέχουσα ώθηση και μπορεί να εφεύρει και να πειραματιστεί με
Ελεγχόμενο τηλεσκόπιο Nunchuck Focuser: 6 βήματα (με εικόνες)
Nunchuck Controlled Telescope Focuser: Αν δοκιμάσατε ποτέ να χρησιμοποιήσετε το τηλεσκόπιο σας σε σχετικά υψηλές μεγεθύνσεις (> 150x) πιθανότατα έχετε παρατηρήσει πώς η χειροκίνητη προσαρμογή του εστιασμού του τηλεσκοπίου σας μπορεί να οδηγήσει σε πραγματικό πόνο στο λαιμό. Αυτό συμβαίνει γιατί ακόμη και η μικρότερη προσαρμογή
Ασύρματο Wii Nunchuck Controlled Arduino: 7 βήματα
Ασύρματο Wii Nunchuck Controlled Arduino: Χρησιμοποιήστε ένα εντελώς μη τροποποιημένο ασύρματο Wii Nunchuck ως σύστημα ελέγχου για οποιοδήποτε έργο βασίζεται σε Arduino. Χωρίς πρόσθετα ζεύγη ραδιοπομπού/δέκτη κλπ. Αυτό το εκπαιδευτικό προϋποθέτει κάποια εμπειρία με τον μικροελεγκτή Arduino. Το ραδιόφωνο