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

Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο .: 7 βήματα
Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο .: 7 βήματα

Βίντεο: Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο .: 7 βήματα

Βίντεο: Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο .: 7 βήματα
Βίντεο: Πώς να διορθώσετε γρήγορα τη σύνδεσή σας στο Διαδίκτυο Εξερευνήθηκαν τρεις επιλογές 2024, Νοέμβριος
Anonim
Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο
Μετατροπέας ήχου σε MIDI σε πραγματικό χρόνο

Άνθρωποι Namaste! Αυτό είναι ένα έργο στο οποίο εργάστηκα για ένα από τα μαθήματά μου (Επεξεργασία ψηφιακού σήματος σε πραγματικό χρόνο) στο πτυχίο μου. Το έργο στοχεύει στη δημιουργία ενός συστήματος DSP που "ακούει" δεδομένα ήχου και εξάγει μηνύματα MIDI των αντίστοιχων σημειώσεων μέσω UART. Για το σκοπό αυτό χρησιμοποιήθηκε το Arduino Nano. Εν συντομία, ο μικροελεγκτής κάνει ένα FFT στα εισερχόμενα δεδομένα ήχου και κάνει κάποια ανάλυση των κορυφών και στέλνει το κατάλληλο μήνυμα MIDI. Μην ενοχλείτε όμως για τα MOSFET επειδή είναι για κάποιο άλλο έργο (το οποίο θα τεθεί αργότερα και σε οδηγίες) και δεν απαιτούνται για αυτό το έργο. Ας ξεκινήσουμε λοιπόν ήδη !!

Βήμα 1: Απαιτούνται εξαρτήματα

Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα

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

Ποσότητα συστατικού

1. Μικρόφωνο Electret. 1

2. Αντίσταση 30 Kilo Ohm. 1

3. Αντίσταση 150 Kilo Ohm. 1

4. Αντίσταση 100 ohm. 1

5. 2.2 αντιστάσεις Kilo Ohm. 3

6. Προκαθορισμένο δοχείο 10 Kilo Ohm. 1

7. Δοχείο κοπής 10 Kilo Ohm. 1

8. 47 στερεοφωνικό δοχείο Kilo Ohm. 1

9. Αντιστάσεις 470 Ohms. 2

10. πυκνωτές 0,01uF. 2

11. Πυκνωτές 2.2uF. 3

12. Πυκνωτές 47uF. 2

13. Πυκνωτής 1000uF. 1

14. πυκνωτής 470uF. 1

15. Ρυθμιστής τάσης 7805. 1

16. Γυναικεία και αρσενική ταινία κεφαλίδας. 1 το καθένα

17. Βύσμα Jack Barrel. 1

18. Προσαρμογέας DC 12 V 1 Amp DC. 1

19. Διακόπτης SPST. (Προαιρετικό) 1

20. Διάτρητη σανίδα. 1

Βήμα 2: Τεχνικές προδιαγραφές

Τεχνικές προδιαγραφές
Τεχνικές προδιαγραφές

Συχνότητα δειγματοληψίας: 3840 δείγματα/δευτερόλεπτο

Αριθμός δειγμάτων ανά FFT: 256

Ανάλυση συχνότητας: 15Hz

Ρυθμός ανανέωσης: Περίπου 15 Hz

Οι χαμηλότερες και υψηλότερες κλίμακες των μουσικών νότες δεν αποτυπώνονται σωστά. Οι χαμηλότερες νότες υποφέρουν από ανάλυση χαμηλής συχνότητας όπου οι υψηλότερες συχνότητες υποφέρουν από χαμηλά ποσοστά δειγματοληψίας. Το arduino είναι ήδη εκτός μνήμης, οπότε δεν υπάρχει τρόπος για καλύτερη ανάλυση. Και η καλύτερη ανάλυση θα έχει κόστος μειωμένου ρυθμού ανανέωσης, ώστε η αντιστάθμιση να είναι αναπόφευκτη. Εκδοχή Layman της αρχής αβεβαιότητας του Heisenberg.

Η πρωταρχική δυσκολία είναι η εκθετική απόσταση μεταξύ των νότες (Όπως φαίνεται στο σχήμα. Κάθε ώθηση στον άξονα συχνότητας είναι μια μουσική νότα). Αλγόριθμοι όπως το LFT μπορεί να βοηθήσουν, αλλά αυτό είναι λίγο προηγμένο και λίγο περίπλοκο για μια συσκευή όπως το arduino Nano.

Βήμα 3: Διαγράμματα κυκλωμάτων

Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων
Διαγράμματα κυκλωμάτων

Σημείωση: Μην ενοχλείστε από τα τρία MOSFET και τους βιδωτούς ακροδέκτες στις εικόνες. Δεν απαιτούνται για αυτό το έργο. Παρατηρήστε ότι η πλακέτα εισόδου μικροφώνου είναι αφαιρούμενη ή όπως την αποκαλούν Modular. Μια μικρή περιγραφή των διαφόρων μπλοκ δίνεται παρακάτω.

1) Οι δύο αντιστάσεις 470 ohm συνδυάζουν το στερεοφωνικό σήμα ήχου με το μονοφωνικό σήμα ήχου. Βεβαιωθείτε ότι η γείωση του σήματος εισέρχεται στην εικονική γείωση (vg στο διάγραμμα κυκλώματος) και όχι στη γείωση του κυκλώματος.

2) Το επόμενο μπλοκ είναι ένα φίλτρο χαμηλής διέλευσης κλειδιού sallen 2ης τάξης, το οποίο είναι υπεύθυνο για τον περιορισμό της ζώνης του σήματος εισόδου για αποφυγή ψευδαισθήσεων. Δεδομένου ότι δουλεύουμε μόνο με τροφοδοσία +12v, προκατάληψη του op-amp φτιάχνοντας ένα διαχωριστή τάσης RC. που ξεγελά τον ενισχυτή να σκεφτεί ότι η παροχή είναι 6 0 -6 βολτ παροχή (διπλή ράγα) όπου vg είναι η βασική αναφορά για τον ενισχυτή λειτουργίας.

3) Στη συνέχεια, η έξοδος φιλτράρεται για χαμηλή διέλευση για να αποκλείσει τη μετατόπιση DC 6 βολτ και συνδυάζεται με DC περίπου 0,55 βολτ επειδή το ADC θα διαμορφωθεί ώστε να χρησιμοποιεί το εσωτερικό 1.1 v ως Vref.

Σημείωση: Ο προενισχυτής για το μικρόφωνο electret δεν είναι το καλύτερο κύκλωμα στο διαδίκτυο. Ένα κύκλωμα που περιλαμβάνει op-amp θα ήταν καλύτερη επιλογή. Επιθυμούμε η απόκριση συχνότητας να είναι όσο το δυνατόν πιο επίπεδη. Το στερεοφωνικό δοχείο 47 κιλών ωμ χρησιμοποιείται για τον καθορισμό της συχνότητας αποκοπής που θα πρέπει να είναι τυπικά η μισή συχνότητα δειγματοληψίας. Η προεπιλογή των 10 κιλών ohm (Το μικρό δοχείο με λευκή κεφαλή) χρησιμοποιείται για τον συντονισμό του κέρδους και της τιμής Q του φίλτρου. Το δοχείο κοπής 10 κιλών (ένα με μεταλλικό κουμπί συντονισμού που μοιάζει με μια μικρή βίδα επίπεδης κεφαλής) χρησιμοποιείται για να ρυθμίσει την τάση να είναι τόσο κοντά όσο το μισό Vref.

Σημείωση: Όταν συνδέετε το Nano στο Τ. Κ. κρατήστε το διακόπτη SPST ανοιχτό αλλού κλειστό. Προσέξτε ιδιαίτερα εάν αυτό δεν συμβεί, μπορεί να βλάψει το κύκλωμα/τον υπολογιστή/τον ρυθμιστή τάσης ή οποιονδήποτε συνδυασμό των παραπάνω

Βήμα 4: Απαραίτητες εφαρμογές και IDE

Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
Απαραίτητες εφαρμογές και IDE
  1. Για την κωδικοποίηση του Arduino Nano πήγα με το πρωτόγονο στούντιο AVR 5.1 επειδή φαίνεται να λειτουργεί για μένα. Μπορείτε να βρείτε το πρόγραμμα εγκατάστασης εδώ.
  2. Για τον προγραμματισμό του Arduino Nano χρησιμοποίησα το Xloader. Είναι πραγματικά εύκολο στη χρήση ελαφρύ εργαλείο για την εγγραφή.hex αρχείων στο Arduinos. Μπορείτε να το πάρετε εδώ.
  3. Για μικρό μπόνους μίνι έργο και ρύθμιση του κυκλώματος χρησιμοποίησα επεξεργασία. Μπορείτε να το πάρετε από εδώ, αν και κάνετε σημαντικές αλλαγές σε κάθε αναθεώρηση, οπότε ίσως χρειαστεί να ασχοληθείτε με καταργημένες λειτουργίες για να λειτουργήσει το σκίτσο.
  4. FL studio ή οποιοδήποτε άλλο λογισμικό επεξεργασίας MIDI. Μπορείτε να λάβετε δωρεάν έκδοση FL studio περιορισμένης πρόσβασης από εδώ.
  5. Το Loop MIDI δημιουργεί μια εικονική θύρα MIDI και εντοπίζεται από το FL studio σαν να ήταν μια συσκευή MIDI. Πάρτε ένα αντίγραφο του ίδιου από εδώ.
  6. Το χωρίς μαλλιά MIDI χρησιμοποιείται για την ανάγνωση μηνυμάτων MIDI από τη θύρα COM και την αποστολή στη θύρα MIDI βρόχου. Επίσης, διορθώνει τα μηνύματα MIDI σε πραγματικό χρόνο, γεγονός που καθιστά την αποσφαλμάτωση βολική. Αποκτήστε MIDI χωρίς μαλλιά από εδώ.

Βήμα 5: Σχετικοί κωδικοί για τα πάντα

Θα ήθελα να ευχαριστήσω το Electronic Lifes MFG (Website Here !!) για τη σταθερή βιβλιοθήκη FFT που χρησιμοποίησα σε αυτό το έργο. Η βιβλιοθήκη είναι βελτιστοποιημένη για οικογένεια AVR mega. Αυτός είναι ο σύνδεσμος για αρχεία βιβλιοθήκης και κωδικούς που χρησιμοποίησε. Επισυνάπτω τον κωδικό μου παρακάτω. Περιλαμβάνει το σκίτσο επεξεργασίας και τον κωδικό AVR C επίσης. Λάβετε υπόψη ότι αυτή είναι η διαμόρφωση που λειτούργησε για μένα και δεν αναλαμβάνω καμία ευθύνη, αν καταστρέψετε κάτι λόγω αυτών των κωδικών. Επίσης, είχα πολλά προβλήματα προσπαθώντας να κάνω τον κώδικα να λειτουργήσει. Για παράδειγμα, το DDRD (Data Direction Register) έχει DDDx (x = 0-7) ως μάσκες bit αντί για το συμβατικό DDRDx (x = 0-7). Προσέξτε αυτά τα σφάλματα κατά τη σύνταξη. Επίσης, η αλλαγή του μικροελεγκτή επηρεάζει αυτούς τους ορισμούς, οπότε προσέξτε το και αυτό ενώ ασχολείστε με σφάλματα μεταγλώττισης. Και αν αναρωτιέστε γιατί ο φάκελος του έργου ονομάζεται DDT_Arduino_328p.rar, ας πούμε ότι ήταν πολύ σκοτεινά το βράδυ όταν ξεκίνησα και ήμουν αρκετά τεμπέλης για να μην ανάψω τα φώτα.:Π

Ερχόμενος στο σκίτσο επεξεργασίας, χρησιμοποίησα την επεξεργασία 3.3.6 για να γράψω αυτό το σκίτσο. Θα χρειαστεί να ορίσετε τον αριθμό θύρας COM στο σκίτσο χειροκίνητα. Μπορείτε να ελέγξετε τα σχόλια στον κώδικα.

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

Βήμα 6: Ρύθμιση

  1. Ανοίξτε τον κώδικα και μεταγλωττίστε τον κώδικα με #define pcvisual uncommented και #define midi_out σχολιάστηκε.
  2. Ανοίξτε το xloader και περιηγηθείτε στον κατάλογο με κωδικό, περιηγηθείτε στο αρχείο.hex και εγγραφείτε στο nano επιλέγοντας την κατάλληλη πλακέτα και θύρα COM.
  3. Ανοίξτε το σκίτσο επεξεργασίας και εκτελέστε το με το κατάλληλο ευρετήριο θύρας COM. Εάν όλα πάνε καλά θα πρέπει να μπορείτε να δείτε ένα φάσμα του σήματος στον ακροδέκτη A0.
  4. Πάρτε ένα κατσαβίδι και γυρίστε το δοχείο κοπής έως ότου το φάσμα είναι επίπεδο (το εξάρτημα DC πρέπει να είναι κοντά στο μηδέν). Τότε μην εισάγετε κανένα σήμα στην πλακέτα. (Μην συνδέετε τη μονάδα μικροφώνου).
  5. Τώρα χρησιμοποιήστε οποιοδήποτε εργαλείο γεννήτριας σάρωσης όπως αυτό για να δώσετε είσοδο στην πλακέτα από το μικρόφωνο και να παρατηρήσετε το φάσμα.
  6. Εάν δεν βλέπετε σάρωση συχνοτήτων, μειώστε τη συχνότητα διακοπής αλλάζοντας την αντίσταση 47 κιλών ωμ. Επίσης, αυξήστε το κέρδος χρησιμοποιώντας το προκαθορισμένο δοχείο 10 κιλών ohm. Προσπαθήστε να λάβετε μια επίπεδη και εμφανή έξοδο σάρωσης αλλάζοντας αυτές τις παραμέτρους. Αυτό είναι το διασκεδαστικό μέρος (το μικρό μπόνους!), Παίξτε τα αγαπημένα σας τραγούδια και απολαύστε το φάσμα τους σε πραγματικό χρόνο. (Δες το βίντεο)
  7. Τώρα μεταγλωττίστε τον ενσωματωμένο κώδικα C ξανά αυτή τη φορά με #define pcvisual σχολιασμένο και #define midi_out χωρίς σχόλιο.
  8. Φορτώστε ξανά τον νέο μεταγλωττισμένο κώδικα στο arduino Nano.
  9. Ανοίξτε το LoopMidi και δημιουργήστε μια νέα θύρα.
  10. Ανοίξτε το FL studio ή άλλο λογισμικό διασύνδεσης MIDI και βεβαιωθείτε ότι η θύρα midi του βρόχου είναι ορατή στις ρυθμίσεις της θύρας MIDI.
  11. Ανοιχτό MIDI χωρίς μαλλιά με συνδεδεμένο το arduino. Επιλέξτε θύρα εξόδου για να είναι η θύρα LoopMidi. Μεταβείτε στις ρυθμίσεις και ορίστε την τιμή Baud σε 115200. Τώρα επιλέξτε τη θύρα COM που αντιστοιχεί στο Arduino Nano και ανοίξτε τη θύρα.
  12. Παίξτε μερικούς "καθαρούς" τόνους κοντά στο μικρόφωνο και θα ακούσετε την αντίστοιχη νότα να χτυπάται και στο λογισμικό MIDI. Εάν δεν υπάρχει απόκριση, δοκιμάστε να κατεβάσετε το όριο up_threshold που ορίζεται στον κωδικό C. Εάν οι σημειώσεις ενεργοποιούνται τυχαία, αυξήστε το ανώτατο όριο.
  13. Πάρτε το πιάνο σας και δοκιμάστε πόσο γρήγορο είναι το σύστημά σας !! Το καλύτερο είναι ότι στη χρυσή κλειδαριά των σημειώσεων μπορεί να ανιχνεύσει άνετα πολλαπλά ταυτόχρονα πατήματα πλήκτρων εύκολα.

Σημείωση: Όταν η θύρα COM είναι προσβάσιμη από μία εφαρμογή, δεν μπορεί να διαβαστεί από άλλη. Για παράδειγμα, εάν το Hairless MIDI διαβάζει τη θύρα COM, το Xloader δεν θα μπορεί να αναβοσβήνει στον πίνακα

Βήμα 7: Αποτελέσματα/βίντεο

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

Συνιστάται: