Ο συγγραφέας των Instructables με το ψευδώνυμο rgco ήρθε με μια τεσσάρων φωνών 1,5-οκτάβα συνθεσάιζερ για Arduino Uno. Για λόγους σύγκρισης, οι σύνθετοι συγγραφείς των παιδιών που διαφέρουν ο ένας από τον άλλο μόνο στο σχεδιασμό και κατασκευάζονται από το ίδιο τσιπ είναι τριών φωνών. Είναι αλήθεια ότι μπορούν αυτομάτως να συνοδεύουν τη μουσική με ρυθμό, να απομνημονεύουν μονοφωνικές μελωδίες και να μιμούνται τις φωνές των ζώων. Αλλά τότε σπιτικό ακούγεται καλύτερο. Γιατί;
Είναι όλα σχετικά με τις παραμέτρους. Συχνότητα δειγματοληψίας 31 kHz, 9-bit, 4 φωνές, σύνθεση FM με μετατόπιση χρόνου, ADSR φάκελο, 12 εικονικά όργανα, 18 πλήκτρα που καλύπτουν 1,5 οκτάβες.
Ο κύριος συνθέτει το κύκλωμα συνθετητή στο Fritzing:
Σε αυτό, προσομοιώνει τη θέση των εξαρτημάτων σε ένα breadboard τύπου breadboard και τις συνδέσεις μεταξύ τους:
Και συλλέγει το σχέδιο στην πραγματική ζωή:
Απλά "ρίξτε και χρησιμοποιήστε" είναι το απλούστερο πράγμα που μπορείτε να κάνετε με το σχεδιασμό. 18 πλήκτρα (από το ΠΡΙΝ την τέταρτη οκτάβα έως την πέμπτη FA) - για να παίξει, το δέκατο ένατο διακόπτει τα εικονικά όργανα σε ένα δαχτυλίδι: πιάνο, ξυλόφωνο, κιθάρα, κύμβαλα, καμπάνες, funky, vibrato, μέταλλο, βιολί, μπάσο, τρομπέτα, ακορντεόν. Η φύση του ήχου επηρεάζεται από τη διάρκεια των πληκτρολογήσεων, αλλά όχι από την προσπάθεια, σε αντίθεση με τους επαγγελματικούς συνθέτες. Αλλά ο προγραμματιστής θέλει να δοκιμάσετε τον προγραμματισμό των εικονικών εργαλείων σας επίσης. Κάθε μία από αυτές δίνεται από δέκα παραμέτρους. Ο οδηγός σας δείχνει από ποια παράμετρο εξαρτάται.
ldness - όγκος
Αν αυτή η παράμετρος είναι μικρότερη από 64, αποκλείεται η υπερφόρτωση και οι σχετικές παραμορφώσεις. Αν όμως προγραμματίσετε ένα τέτοιο εικονικό όργανο που δεν ακούγεται με μέγιστη ένταση για μεγάλο χρονικό διάστημα, η τιμή αυτής της παραμέτρου μπορεί να υπερβεί τα 64, καθώς και οι τέσσερις φωνές παίζουν ταυτόχρονα σπάνια.
pitch0 - αλλαγή βήματος
Το εύρος αντιστοιχεί στα παραπάνω, αν ρυθμίσετε αυτήν την παράμετρο στο 12. Μείωση των κινήσεων προς τα κάτω, αύξηση. Το μηδέν αντιστοιχεί σε μια στροφή ακριβώς μίας οκτάβας, 24 - ακριβώς μια οκτάβα.
ADSR_a - ρυθμός συσσώρευσης όγκου από μηδέν έως μέγιστο
Όσο μικρότερος, τόσο πιο αργός.Για παράδειγμα, το 8192 αντιστοιχεί σε 4 ms, 256 έως 128 ms.
ADSR_d - ταχύτητα για να μειώσετε την ένταση του ήχου από το μέγιστο σε εκείνο που καθορίζεται από την παράμετρο ADSR_s.
Η αρχή είναι η ίδια.
ADSR_s - η τιμή στην οποία μειώνεται ο όγκος όταν πατάτε το πλήκτρο για μεγάλο χρονικό διάστημα
Για παράδειγμα, 256 - ο όγκος παραμένει μέγιστος καθ 'όλη τη διάρκεια της λειτουργίας του πλήκτρου. 192 - ο όγκος πέφτει στο 80% και παραμένει έτσι ενώ το πλήκτρο κρατιέται προς τα κάτω. 0 - ο όγκος μειώνεται στο μηδέν, ακόμα και αν το πλήκτρο κρατηθεί προς τα κάτω.
ADSR_r - ταχύτητα μείωσης της έντασης του ήχου στο μηδέν μετά την απελευθέρωση του πλήκτρου
Η αρχή είναι ίδια με την παράμετρο ADSR_a και ADSR_d.
FM_inc - λόγος συχνότητας διαμόρφωσης προς τόνο
Με μια τιμή 256, ο λόγος αυτός είναι 1: 1, με 512 - 2: 1, με 128 - 1: 2, το υπόλοιπο είναι κατ 'αναλογία. Εάν αυτή η παράμετρος έχει οριστεί σε πολλαπλάσιο του 64, ο ήχος θα είναι ανόμονος.
FM_a1 - το εύρος διαμόρφωσης συχνότητας στην αρχή μιας σημείωσης
256 αντιστοιχεί σε ένα ευρύ φάσμα αρμονικών. Με μείωση, ο τόνος είναι καθαρότερος, με αύξηση των αρμονικών γίνεται όλο και περισσότερο.
FM_a2 - διαμόρφωση συχνότητας σάρωσης στο τέλος μιας σημείωσης
Η αρχή είναι η ίδια. Για τα περισσότερα πραγματικά όργανα, οι αρμονικές αποσυντίθενται πιο γρήγορα από τον θεμελιώδη τόνο. Εάν κάνετε το αντίθετο, έχετε ασυνήθιστους ήχους.
FM_dec - ταχύτητα μετάβασης του εύρους διαμόρφωσης συχνότητας από εκείνη που έχει οριστεί από το FM_a1 έως εκείνη που έχει οριστεί από το FM_a2
Η αρχή είναι ίδια με την παράμετρο ADSR_a, ADSR_d και ADSR_r.
Λαμβάνεται συχνότητα PWM 31,250 Hz διαιρώντας τη συχνότητα ρολογιού (16 MHz) κατά 512. Το πρόγραμμα σχεδιάζεται κατά τέτοιο τρόπο ώστε τα συμβάντα να συνδέονται με το χρόνο χωρίς διακοπή. Αντίθετα, υπάρχει ένα bit υπερχείλισης χρονομέτρου. Προκειμένου το πρόγραμμα να καταφέρει να κάνει ό, τι απαιτείται από αυτό, χρησιμοποιούνται μόνο ακέραιοι μήκους 8 και 16 bit. Το ημιτονοειδές κύμα παρουσιάζεται με τη μορφή πίνακα αριθμών 8-bit. Οι βοηθητικές λειτουργίες - η ανάγνωση των καταστάσεων κλειδιών, η αλλαγή των εικονικών οργάνων, η επιλογή των φωνών, ο υπολογισμός των παραμέτρων σημειώσεων που αλλάζουν στο χρόνο - κατανέμονται μεταξύ 15 διαδικασιών, οι οποίες χρειάζονται 0,48 ms για να ολοκληρωθούν. Αυτή τη στιγμή, ορισμένες λειτουργίες εκτελούνται με ακρίβεια 32 bit, η οποία είναι απαραίτητη για τον πολλαπλασιασμό δύο δυαδικών ψηφίων 16 bit.
Ένα απλό ημιτονοειδές κύμα ακούγεται θαμπό γιατί δεν υπάρχουν αρμονικές στο φάσμα του. Η σύνθεση FM σας επιτρέπει να τις λάβετε και να αλλάξετε το φάσμα τους με την πάροδο του χρόνου, προσομοιώντας τον ήχο των πραγματικών οργάνων. Πολλαπλές συχνότητες δίνουν έναν ανωνυμικό ήχο που συμβαίνει, για παράδειγμα, σε κουδούνια. Η συσκευή μιμείται καλά την αλλαγή στο φάσμα που είναι εγγενές στα πραγματικά όργανα με την πάροδο του χρόνου, όταν ορισμένες αρμονικές αποσυντίθενται πιο γρήγορα από άλλες.