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

Ένα άλλο κουτί MIDI σε CV: 7 βήματα (με εικόνες)
Ένα άλλο κουτί MIDI σε CV: 7 βήματα (με εικόνες)

Βίντεο: Ένα άλλο κουτί MIDI σε CV: 7 βήματα (με εικόνες)

Βίντεο: Ένα άλλο κουτί MIDI σε CV: 7 βήματα (με εικόνες)
Βίντεο: Ξύλο μεταξύ κάμεραμαν του ΣΚΑΙ και πολίτη 2024, Νοέμβριος
Anonim
Ένα άλλο κουτί MIDI to CV
Ένα άλλο κουτί MIDI to CV

Ένα άλλο κουτί MIDI to CV είναι ένα έργο που ανέπτυξα όταν ένα Korg MS10 μου χτύπησε την πόρτα και έγινε στο στούντιο μου. Επειδή η ρύθμισή μου σχετίζεται σε μεγάλο βαθμό με το MIDI για αυτοματοποίηση και συγχρονισμό όλων των οργάνων, όταν αγόρασα το MS10, το πρώτο πρόβλημα που έπρεπε να αντιμετωπίσω ήταν πώς να εφαρμόσω έναν τέτοιο έλεγχο.

Τα Korg MS20/10 δεν είναι τα ευκολότερα synths για την εφαρμογή του MIDI σε: πρώτα απ 'όλα, βασίζονται στον έλεγχο Hz/V (γραμμική συσχέτιση μεταξύ της τάσης ελέγχου και της συχνότητας σημείωσης), αντί για oct/V (1V ανά οκτάβα). Δεύτερον, για να ενεργοποιήσετε μια σημείωση πρέπει να στείλετε ένα αρνητικό σήμα πύλης και να συντομεύσετε την είσοδο στη γείωση (S-Trig) και όχι ένα σήμα +5 V (V-trig).

Υπάρχουν διάφορες εμπορικές λύσεις για τον έλεγχο τέτοιων οργάνων στις μέρες μας (δηλ. Arturia Beatstep Pro, Korg SQ-1, Kenton Solo), αλλά είμαι φθηνό κάθαρμα και ακόμη και τα 100 ευρώ είναι πάρα πολλά για μια συσκευή που «δεν ακούγεται»:).

Εδώ είμαστε τώρα: επιτρέψτε μου να σας δείξω πώς να φτιάξετε ένα κουτί MIDI σε CV χαμηλού προϋπολογισμού για να ελέγξετε/αυτοματοποιήσετε το βήμα, την πύλη, την ταχύτητα και τη συχνότητα ενός προ-MIDI synth με έναν εξωτερικό ελεγκτή MIDI (Πληκτρολόγιο, DAW, sequencer ή οτιδήποτε άλλο) Το

"Τι γίνεται με το νέο MS20 mini;"

Όπως σχεδόν όλοι γνωρίζουν, το νέο MS20 είναι στην πραγματικότητα έτοιμο για MIDI: IN με υποδοχή MIDI 5 πόλων και IN/OUT με υποδοχή USB.

"Έτσι, αν έχω ένα MS20 mini αυτό το πράγμα είναι άχρηστο!"

Λοιπόν όχι. Το MS20 mini αναγνωρίζει μόνο μηνύματα ενεργοποίησης/απενεργοποίησης μηνυμάτων και το πληκτρολόγιο δεν είναι ευαίσθητο στην ταχύτητα. Δεν υπάρχει τρόπος να το ξεπεράσετε με το vintage ή μίνι πληκτρολόγιο MS10/20, αλλά με το midi box και ένα πληκτρολόγιο ευαίσθητο στην ταχύτητα είστε χρυσός. Επιπλέον, με το πλαίσιο MIDI μπορείτε να αυτοματοποιήσετε την αποκοπή φίλτρου (ή οποιαδήποτε άλλη παράμετρο που ελέγχεται από την τάση) ή να το διαμορφώσετε από την εισερχόμενη σημείωση MIDI σχετικά με την ταχύτητα. Και πάλι, το μόνο κανάλι MIDI MS20 mini ανταποκρίνεται είναι το κανάλι 1. Με αυτό το πλαίσιο μπορείτε επίσης να ξεπεράσετε αυτό το όριο.

"Τι γίνεται αν έχω συνθετικό Oct/V;"

Κανένα πρόβλημα! Ο κώδικας που έγραψα είναι συμβατός με τα συνθετικά Oct/V (δεν έχει δοκιμαστεί, αλλά είμαι βέβαιος ότι θα λειτουργήσει έξω από το κουτί;)).

Βήμα 1: !! Σημείωση Προσοχής - Αποποίηση

Ο εξοπλισμός σας είναι πολύτιμος και δεν πρέπει να χρησιμοποιείται για τη διενέργεια δοκιμών.

Το παιχνίδι με ηλεκτρικό ρεύμα μπορεί να βλάψει σοβαρά τον εξοπλισμό σας ή να βλάψει τον εαυτό σας.

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

Σε έχω προειδοποιήσει!

Βήμα 2: Μηχανική του υλικού

Το Arduino είναι βολικό όταν ασχολείστε με έργα όπως αυτό. Η ύπαρξη μιας μεγάλης Κοινότητας και πολύ καλών βιβλιοθηκών που καλύπτουν σχεδόν κάθε κοινό έργο την καθιστούν τη σωστή επιλογή. Εδώ ο πίνακας θα προγραμματιστεί έτσι ώστε να διαβάζει τα εισερχόμενα δεδομένα MIDI και στη συνέχεια θα στέλνει τις κατάλληλες τάσεις στην οδήγηση:

- Βήμα, μετατρέποντας μια έξοδο pwm σε αναλογική τάση για να οδηγήσετε το VCO μέσω ψηφιακού σε αναλογικό μετατροπέα (DAC)

- Ταχύτητα, φιλτράροντας μια έξοδο pwm για να οδηγήσετε το VCA με ένα απλό φίλτρο RC

- Φιλτράρετε τη συχνότητα αποκοπής, φιλτράροντας μια έξοδο pwm για να οδηγήσετε το VCF με ένα απλό φίλτρο RC

- Πύλη, απευθείας από μια ψηφιακή έξοδο σε περίπτωση V-trig (βάλτε 1Kohm σε σειρά με την έξοδο για να μειώσετε την τρέχουσα αποστράγγιση) ή με ένα απλό τρανζίστορ pnp βγείτε από την ψηφιακή έξοδο (δείτε το σχηματικό συνημμένο στο βήμα των σχημάτων) Το

Το Arduino δεν είναι ικανό να εξάγει άμεσα σταθερές τάσεις, αλλά παλμούς 0/+5 V με διάφορες περιόδους (PWM). Έχουμε ανάγκη για ψηφιακούς σε αναλογικούς μετατροπείς (DAC) για το πορτοκαλί. Τα φίλτρα RC είναι το πιο εύκολο DAC που μπορώ να σκεφτώ. Ένα φίλτρο RC είναι αρκετά καλό για τον ενισχυτή και το φίλτρο ελεγχόμενης τάσης (VCA και VCF). Τα φίλτρα RC είναι προσαρμοσμένα ώστε να έχουν ως αποτέλεσμα συχνότητα διακοπής <20Hz (χαμηλότερη ηχητική συχνότητα).

Έκανα κάποια δοκιμή με μη πολωμένους πυκνωτές χαμηλής χωρητικότητας και τελείωσα με μια τιμή χωρητικότητας 0.1uF για να ταιριάξω καλύτερα. Δοκιμασμένο καλό σε MS20 MKII.

Δυστυχώς, δεν μπορούμε να βασιστούμε σε ένα φίλτρο RC για να οδηγήσουμε τον ταλαντωτή ελεγχόμενης τάσης (VCO), καθώς δεν θα ήταν αρκετά ακριβής (σε κλίμακα Hz/V, στο κάτω άκρο δύο ημιτόνοι adiacend διαφέρουν για λιγότερο από 0,02V · σε V /Οκτώ δύο γειτονικοί ημίτονοι διαφέρουν για 0,083 V). θα χρησιμοποιήσουμε ένα IC DAC (MPC4725) για αυτό.

Γνωστά Όρια

Περιορίζοντας την τάση κίνησης στα 5V (η τάση εξόδου Arduino), το πλήρες εύρος 0 έως 5V καλύπτεται για ταχύτητα. η διακοπή είναι μισοσκεπασμένη (-5V έως +5V). η περιοχή VCO καλύπτεται εν μέρει επειδή σε Hz/V απαιτείται τάση 8 V για να φτάσει τα 440 Hz A4. Με όριο εξόδου 5V μπορούμε να ανεβάσουμε τον ταλαντωτή στη συχνότητα D4 σε Hz/V.

Βήμα 3: Λίστα εξαρτημάτων

Λίστα εξαρτημάτων
Λίστα εξαρτημάτων
Λίστα εξαρτημάτων
Λίστα εξαρτημάτων
Λίστα εξαρτημάτων
Λίστα εξαρτημάτων

Έχετε ανάγκη για:

1X Arduino UNO (ή nano)

Πίνακας 1X MPC4725 DAC

Μονό συνδετήρες 4X 1/8 "ή 1/4"

1X υποδοχή MIDI

Οπτικό ζεύγος 1X 6N138

Δίοδος 1Χ 1Ν4148

Αντίσταση 1X 220 ohm 1/4 W

Αντίσταση 1X 470 ohm 1/4 W

Αντίσταση 1X 10K ohm 1/4 W

Αντίσταση 4X 1K ohm 1/4 W

2X πυκνωτής 0,1 uF

1X τρανζίστορ BC547 pnp (σε περίπτωση S-trig)

1X κουτί ABS (τουλάχιστον 55 x 70 x 100 mm)

… Και προφανώς breadboard ή διάτρηση, συγκολλητικό σίδερο, σύρμα συγκόλλησης και καλώδια (2 μέτρα 28 AWG πρέπει να είναι αρκετά).

Παρατηρήστε ότι στις παραπάνω εικόνες το πρωτότυπο μου τοποθετεί 100 uF ηλεκτρολυτικά καλύμματα, αλλά είναι πολύ αργά λόγω του χρόνου φόρτισης της χωρητικότητας. Η χωρητικότητα 0.1uF είναι η σωστή επιλογή.

Χρησιμοποίησα μια πρόσθετη υποδοχή για να τροφοδοτήσω το arduino μου. Δεν είναι απαραίτητο να μπορείτε να αποσυνδέσετε τον μικροελεγκτή απευθείας μέσω της ενσωματωμένης σύνδεσης mini USB.

Βήμα 4: Συνδέσεις/Διαγράμματα

Συνδέσεις/Διαγράμματα
Συνδέσεις/Διαγράμματα
Συνδέσεις/Διαγράμματα
Συνδέσεις/Διαγράμματα
Συνδέσεις/Διαγράμματα
Συνδέσεις/Διαγράμματα

MIDI IN

Το κύκλωμα MIDI IN είναι απλό και περιγράφεται καλά στο δίκτυο. Πάρτε αυτό το εξαιρετικό οδηγό για MIDI και Arduino της Amanda Gassaei, για παράδειγμα. Έκανα το ένατο σχηματικό για το θέμα ούτως ή άλλως.

Παρατηρήστε ότι πρόσθεσα έναν διακόπτη στο πρόγραμμα MIDI IN (διακόπτης 1): αυτό είναι απαραίτητο κατά τη μεταφόρτωση ενός νέου σκίτσου στο Arduino επειδή το opto παρεμβαίνει στη γραμμή RX ακόμη και χωρίς εισερχόμενα midi μηνύματα. Πρέπει να ανοίξετε το διακόπτη πριν ανεβάσετε το σκίτσο σας, διαφορετικά το IDE δεν θα ανεβάσει το νέο σκίτσο.

Μπορείτε τελικά να τροποποιήσετε το σκίτσο για να χρησιμοποιήσετε μια σειριακή επικοινωνία λογισμικού.

DAC, RC Filter, Synthesizer

Η σύνδεση για φίλτρα DAC, RC και Synth (βήμα, πύλη και ταχύτητα) εμφανίζεται στο διάγραμμα στην κορυφή. Πήρα για αναφορά ένα patch panel Korg MS20, αλλά δοκίμασα τα πάντα και σε ένα MS10. Η άμεση σύνδεση του CV ταχύτητας με το σημείο επιδιόρθωσης "αρχικού κέρδους" VCA δεν έχει καμία επίδραση (πρέπει να το σκάψω περαιτέρω), αλλά αν το συνδέσετε με το σημείο επιδιόρθωσης "Σύνολο" και ανεβάσετε τα συνολικά εξωτερικά δοχεία σας (MG/T. EXT), θα ακούσετε ωραίες παραλλαγές τόνου σε συνάρτηση με την ταχύτητα της νότας.

Τα σχήματά μου (και το πρωτότυπό μου επίσης) δεν χρησιμοποιούν μια αντίσταση περιορισμού ρεύματος στην έξοδο DAC, αλλά είναι πάντα καλή ιδέα να τοποθετήσετε ένα για να εξασφαλίσετε μεγάλη διάρκεια ζωής στα κυκλώματά σας. Μια αντίσταση 220 ohm θα είναι αρκετή.

Παρατηρήστε ότι στα σχήματα αναφέρονται ηλεκτρολυτικά καπάκια άνω των 100 uF, αλλά είναι πολύ αργά λόγω του χρόνου φόρτισης της χωρητικότητας. Τα μη πολωμένα καλύμματα 0.1uF είναι η σωστή επιλογή.

Gate Out

Σε περίπτωση που πρόκειται να ακολουθήσετε ένα synth συμβατό με σήματα V-Trig (σκανδάλη τάσης), μια αντίσταση σειράς 1k ohm για τη μείωση της τρέχουσας αποστράγγισης θα είναι αρκετή. σε περίπτωση συνθετικού S-Trig (σκανδάλη διακόπτη), μπορείτε να χρησιμοποιήσετε ένα απλό κύκλωμα διακόπτη PNP (δείτε το συνημμένο σχήμα).

Βήμα 5: Το Λογισμικό

Το λογισμικό
Το λογισμικό

Προσπάθησα να κρατήσω το σκίτσο όσο το δυνατόν πιο σαφές και «ευανάγνωστο».

Δούλεψα σε ένα απλό φύλλο υπολογισμού που βρήκα ΕΔΩ να αντλήσω μια καμπύλη Voltage Vs Σημείωση# και να χρησιμοποιήσω απευθείας την εξίσωση στον μικροελεγκτή. Η εξίσωση φαίνεται στο γράφημα στην κορυφή. Χρησιμοποίησα το C2 ως σημείωση αναφοράς για να αποκτήσω μια σχέση σημείωσης Voltage Vs συμβατή με Arp/Korg (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V και ούτω καθεξής).

Έπρεπε να ορίσω κάποια μεταβλητή στο παιχνίδι για να έχω έναν καλό συντονισμό… πάρτε το χρόνο σας για να βρείτε τις σωστές τιμές. Ένας δέκτης είναι απαραίτητος.

Θα αυξήσουμε τη συχνότητα pwm ενός χρονοδιακόπτη/μετρητή για να μειώσουμε τον κυματισμό των τάσεων εξόδου (τόσο εύκολο όσο μια γραμμή κώδικα).

Για να διατηρήσετε τον κώδικα ανταποκρινόμενο στα εισερχόμενα byte, ο κώδικας βασίζεται σε μεγάλο βαθμό στις κλήσεις κλήσεων.

Χρειάζεστε τη συλλογή των βιβλιοθηκών Sparkfun "Adafruit_MCP4725.h" και Forty Seven Effects/"MIDI.h" του Francois Best! (Ευχαριστώ πολύ αυτά τα άτομα: χωρίς τις προσπάθειές τους αυτό το έργο δεν θα υλοποιούνταν ποτέ!).

Υποθέτω ότι έχετε έτοιμο το Arduino IDE στον υπολογιστή σας και ξέρετε πώς να φορτώσετε ένα σκίτσο στον πίνακα Arduino.

Δεν είμαι κωδικοποιητής στην πραγματική ζωή, οπότε είναι πολύ πιθανό ότι το σκίτσο θα μπορούσε να γραφτεί με καλύτερο τρόπο. Είμαι ανοιχτός σε προτάσεις (πάντα μαθαίνω κάτι κοιτάζοντας τον κωδικό του κωδικοποιητή;))

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

Βήμα 6: Αντιμετώπιση προβλημάτων

Ακόμα κι αν το έργο είναι χαμηλού επιπέδου, υπάρχουν πολλά πράγματα που θα μπορούσαν να πάνε στραβά. Εάν αντιμετωπίζετε προβλήματα ενώ προσπαθείτε να δημιουργήσετε το δικό σας πλαίσιο MIDI to CV, ακολουθήστε αυτά τα βήματα:

1. Βεβαιωθείτε ότι το Arduino λαμβάνει σωστά μηνύματα MIDI

Ελέγξτε το κανάλι εξόδου το πληκτρολόγιό σας ή το DAW ή το Sequencer εξάγει μηνύματα MIDI. Το Arduino ακούει το κανάλι 1 από προεπιλογή. Ανεβάστε το "TEST_MIDI_IN.ino" για να διαβάσετε ένα εισερχόμενο μήνυμα

2. Ελέγξτε ξανά τις καλωδιώσεις σας

… Ή ακόμα καλύτερα: ελέγξτε τους τρεις φορές! Κρατήστε το χρόνο σας για αυτό.

3. Ελέγξτε τη διεύθυνση και την έξοδο DAC

Το DAC θα μπορούσε να ρυθμιστεί ώστε να λαμβάνει δεδομένα σε διαφορετική διεύθυνση από αυτήν που έθεσα στο σκίτσο. Ελέγξτε τη διεύθυνση εκτελώντας "I2C_scanner.ino". Εάν συμβεί σφάλμα "δεν βρέθηκε συσκευή", ελέγξτε την καλωδίωση DAC (οι είσοδοι SDA και SCL είναι διαφορετικές σε διαφορετικούς πίνακες Arduino!). Εάν έχετε παλμογράφο (ακόμη και αυτά τα ψηφιακά παλμογράφοι 15 ευρώ είναι αρκετά καλά … και διασκεδαστικά!) Μπορείτε να ελέγξετε την έξοδο του DAC σας ανεβάζοντας το παράδειγμα της γεννήτριας τριγώνων που περιλαμβάνεται στην εγκατάσταση της βιβλιοθήκης DAC.

Θυμηθείτε ότι όταν ένα οπτικό ζεύγος συνδέεται στην είσοδο RX της πλακέτας arduino σας, δεν θα μπορείτε να ανεβάσετε ένα νέο σκίτσο !! Τοποθετήστε έναν διακόπτη (θα μπορούσε να είναι ένας απλός άλτης) πριν από τον πείρο RX.

Τα περισσότερα από αυτά τα σκίτσα δοκιμών δεν είναι δικά μου ή τουλάχιστον βασίζονται σε υπάρχον διαδικτυακό υλικό.

Αυτό το πράγμα μου ακούγεται ασυνήθιστο !?

Αυτό δεν είναι πραγματικό ζήτημα: η εξίσωση που προκύπτει για τον έλεγχο Hz/V είναι "ιδανική". Κάποια απόκλιση από την ιδανική συμπεριφορά μπορεί να αυξηθεί από τα +5V που παρέχετε δεν είναι 5.000V, από το DAC και από το ίδιο το όργανο. Για να το λύσετε, πρέπει να ενεργήσετε με το ποτενσιόμετρο συντονισμού/λεπτής ρύθμισης και να "voilà" ένα τέλεια συντονισμένο χειριστήριο MIDI;)

Βήμα 7: Χρήσιμοι σύνδεσμοι

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Συνιστάται: