Inhoudsopgave:
- Stap 1: !! Let op - Disclaimer
- Stap 2: Engineering van de hardware
- Stap 3: Onderdelenlijst
- Stap 4: Aansluitingen/schema's
- Stap 5: De software
- Stap 6: Problemen oplossen
- Stap 7: Nuttige links
Video: Nog een MIDI naar CV Box: 7 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Een andere MIDI-naar-CV-box is een project dat ik ontwikkelde toen een Korg MS10 op mijn deur klopte en in mijn studio plaatsvond. Omdat mijn setup sterk gebaseerd is op MIDI om alle instrumenten te automatiseren en te synchroniseren, toen ik de MS10 kocht, was het eerste probleem dat ik onder ogen moest zien hoe een dergelijke besturing te implementeren.
Korg MS20/10 zijn niet de gemakkelijkste synths om MIDI op te implementeren: ten eerste vertrouwen ze op Hz/V-regeling (lineaire correlatie tussen de stuurspanning en de nootfrequentie), in plaats van oct/V (1V per octaaf); ten tweede, om een noot te triggeren, moet je een negatief gate-signaal sturen en de ingang kortsluiten naar aarde (S-Trig), niet een +5 V-signaal (V-trig).
Er zijn tegenwoordig verschillende commerciële oplossingen om dergelijke instrumenten aan te sturen (o.a. Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) maar ik ben een goedkope klootzak en zelfs 100 euro is te veel voor een "niet klinkend" apparaat:).
Hier zijn we dan: laat me je laten zien hoe je een low-budget MIDI-naar-CV-box bouwt om de toonhoogte, poort, snelheid en afsnijfrequentie van een pre-MIDI-synth te besturen/automatiseren met een externe MIDI-controller (toetsenbord, DAW, sequencer of wat dan ook).
"Hoe zit het met de nieuwe MS20 mini?"
Zoals bijna iedereen weet, is de nieuwe MS20 eigenlijk MIDI-ready: IN met een 5-polige MIDI-connector en IN/OUT met USB-connector.
"Dus als ik een MS20 mini heb, is dit ding nutteloos!"
Welnee. MS20 mini herkent alleen noot aan/uit berichten en het toetsenbord is niet aanslaggevoelig. Met het MS10/20 vintage of mini keyboard kun je dit niet oplossen, maar met midi box en een aanslaggevoelig keyboard zit je goed. Bovendien kunt u met de MIDI-box de filterafsnijding (of een andere spanningsbestuurbare parameter) automatiseren of deze laten moduleren door de binnenkomende MIDI-noot op snelheid. Nogmaals, het enige MIDI-kanaal waar de MS20 mini op reageert, is kanaal 1. Met deze box kun je ook deze limiet overwinnen.
"Wat als ik een Oct/V synth heb?"
Geen probleem! De code die ik heb geschreven is compatibel met Oct/V-synthesizers (niet getest, maar ik ben ervan overtuigd dat dit out-of-the-box zal werken;)).
Stap 1: !! Let op - Disclaimer
Uw apparatuur is zeer waardevol en mag niet worden gebruikt om tests uit te voeren.
Spelen met elektriciteit kan uw apparatuur ernstig beschadigen of uzelf schaden.
Ik kan niet verantwoordelijk worden gehouden voor schade aan uw apparatuur/hardware of zelfs uzelf die voortkomt uit een van de software of schema's of informatie of links die ik in deze instructable heb gemeld.
Je bent gewaarschuwd!
Stap 2: Engineering van de hardware
Arduino is handig bij het omgaan met projecten als deze. Het bestaan van een grote gemeenschap en zeer goede bibliotheken die bijna elke veelvoorkomende taak omvatten, maken het de juiste keuze. Hier wordt het bord zo geprogrammeerd dat het binnenkomende MIDI-gegevens leest en vervolgens de juiste spanningen verzendt om te rijden:
- Pitch, door een pwm-uitgang om te zetten in een analoge spanning om de VCO aan te sturen via een digitaal-naar-analoogomzetter (DAC)
- Velocity, door een pwm-uitgang te filteren om de VCA aan te sturen met een eenvoudig RC-filter
- Filterafsnijfrequentie, door een pwm-uitgang te filteren om de VCF aan te sturen met een eenvoudig RC-filter
- Poort, rechtstreeks van een digitale uitgang in het geval van V-trig (zet een 1Kohm in serie met de uitgang om de stroomafname te verminderen) of door een eenvoudige pnp-transistorschakelaar uit de digitale uitgang (zie schema bij de schematische stap).
Arduino is niet in staat om direct constante spanningen uit te voeren, maar 0/+5 V-pulsen met verschillende perioden (PWM). We hebben behoefte aan digitaal naar analoog converters (DAC) voor de pourpouse. RC-filters zijn de gemakkelijkste DAC die ik kan bedenken. Een RC-filter is goed genoeg voor de spanningsgestuurde versterker en filter (VCA en VCF). De RC-filters zijn op maat gemaakt om te resulteren in een afsnijfrequentie < 20 Hz (laagste hoorbare frequentie).
Ik heb wat tests gedaan met niet-gepolariseerde condensatoren met een lage capaciteit en ik eindigde met een capaciteitswaarde van 0.1uF om het beste te passen. Goed getest op een MS20 MKII.
Helaas kunnen we niet vertrouwen op een RC-filter om de spanningsgestuurde oscillator (VCO) aan te sturen, omdat deze niet nauwkeurig genoeg zou zijn (in Hz/V-schaal, aan de onderkant verschillen twee adiacend halve tonen voor minder dan 0,02V; in V /oct twee aangrenzende halve tonen verschillen voor 0,083 V); we gaan hiervoor een IC DAC (MPC4725) gebruiken.
Bekende limieten
Door de aandrijfspanning te beperken tot 5V (de Arduino-uitgangsspanning), wordt het volledige bereik van 0 tot 5V gedekt voor snelheid; de afsnijding is half afgedekt (-5V tot +5V); het VCO-bereik is gedeeltelijk gedekt, aangezien in Hz/V een spanning van 8 V nodig zou zijn om de 440 Hz A4 te bereiken. Met een uitgangslimiet van 5V kunnen we de oscillator pitchen tot de D4-frequentie in Hz/V.
Stap 3: Onderdelenlijst
U heeft behoefte aan:
1X Arduino UNO (of nano)
1X MPC4725 DAC-kaart
4X 1/8" of 1/4" mono-aansluitingen
1X MIDI-connector
1X 6N138 optocoupler
1X 1N4148-diode
1X 220 ohm 1/4 W weerstand
1X 470 ohm 1/4 W weerstand
1X 10K ohm 1/4 W weerstand
4X 1K ohm 1/4 W weerstand
2X 0.1 uF condensator
1X BC547 pnp-transistor (in geval van S-trig)
1X ABS doos (minimaal 55 x 70 x 100 mm)
… en uiteraard breadboard of perfboard, soldeerbout, soldeerdraad en kabels (2 meter 28 AWG zou genoeg moeten zijn).
Merk op dat op de foto's hierboven mijn prototype 100 uF elektrolitische doppen monteert, maar ze zijn te traag vanwege de oplaadtijd van de capaciteit. Een capaciteit van 0.1uF is de juiste keuze.
Ik heb een extra connector gebruikt om mijn Arduino van stroom te voorzien; het is niet nodig om de microcontroller rechtstreeks via de ingebouwde mini-USB-connector te juicen.
Stap 4: Aansluitingen/schema's
MIDI IN
Het MIDI IN-circuit is eenvoudig en goed beschreven op het net. Neem bijvoorbeeld DIT uitstekende instructable op MIDI en Arduino door Amanda Gassaei. Ik heb in ieder geval het zoveelste schema hierover gemaakt.
Merk op dat ik een schakelaar heb toegevoegd in het MIDI IN-schema (schakelaar 1): dit is nodig bij het uploaden van een nieuwe schets naar Arduino omdat de opto interfereert met de RX-lijn, zelfs zonder inkomende midi-berichten. U moet de schakelaar openen voordat u uw schets uploadt, anders kan de IDE de nieuwe schets niet uploaden.
U kunt de schets eventueel aanpassen om seriële softwarecommunicatie te gebruiken.
DAC, RC-filter, Synthesizer
Aansluitingen voor DAC, RC-filters en Synth (pitch, gate en velocity) staan in het diagram bovenaan. Ik nam ter referentie een Korg MS20-patchpaneel, maar ik heb alles ook op een MS10 getest. De directe verbinding van de Velocity CV met VCA "initiële versterking" patchpunt heeft geen effect (ik moet dit ding verder graven) maar als je het verbindt met het "Totale" patchpunt en je totale externe potten verhoogt (MG/T. EXT), hoort u mooie toonvariaties als functie van de nootsnelheid.
Mijn schema's (en ook mijn prototype) gebruiken geen stroombeperkende weerstand aan de DAC-uitgang, maar het is altijd een goed idee om er een te plaatsen om een lange levensduur van uw circuits te garanderen. Een weerstand van 220 ohm is voldoende.
Merk op dat in de bovenstaande schema's 100 uF elektrolytische doppen worden vermeld, maar deze zijn te traag vanwege de laadtijd van de capaciteit. Niet-gepolariseerde doppen van 0,1 uF zijn de juiste keuze.
Poort uit
Als je een synth gaat sequencen die compatibel is met V-Trig (voltage trigger) signalen, dan is een serieweerstand van 1k ohm om de stroomafname te verminderen voldoende; in het geval van een S-Trig (switch trigger) synth, zou je een eenvoudig PNP-schakelcircuit kunnen gebruiken (zie bijgevoegd schema).
Stap 5: De software
Ik heb geprobeerd de schets zo duidelijk en "leesbaar" mogelijk te houden.
Ik werkte aan een eenvoudig rekenblad dat ik HIER vond om een spanning versus noot#-curve af te leiden en de vergelijking rechtstreeks in de microcontroller te gebruiken. De vergelijking wordt weergegeven in de grafiek bovenaan. Ik heb C2 als referentienota gebruikt om een Arp/Korg-conforme spanning versus nootrelatie te verkrijgen (C0 - 0,25V, C1 - 0,5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V enzovoort).
Ik moest een variabele definiëren om mee te spelen om een goede afstemming te krijgen … neem de tijd om de juiste waarden te vinden. Een tuner is noodzakelijk.
We gaan de pwm-frequentie van een timer/teller verhogen om de rimpel van de uitgangsspanningen te verminderen (zo eenvoudig als een regel code).
Om ervoor te zorgen dat de code reageert op inkomende bytes, is de code sterk afhankelijk van functie-callbacks.
Je hebt de bibliotheken "Adafruit_MCP4725.h" en Forty Seven Effects/Francois Best van Sparkfun nodig om te compileren! (Hartelijk dank aan deze personen: zonder hun inzet zou dit project nooit gerealiseerd worden!).
Ik ga ervan uit dat je Arduino IDE gereed hebt op je pc en dat je weet hoe je een schets naar je Arduino-bord moet laden.
Ik ben in het echte leven geen programmeur, dus het is goed mogelijk dat de schets op een betere manier zou kunnen worden geschreven. Ik sta open voor suggesties (ik leer altijd iets door naar de code van de coder te kijken;))
Aanvullende opmerkingen zijn geschreven in de onderstaande code. Installeer de twee bibliotheken, open de bijgevoegde code op je IDE, sluit je board aan, selecteer het type board en upload.
Stap 6: Problemen oplossen
Zelfs als het project van een laag niveau is, zijn er talloze dingen die fout kunnen gaan. Als u problemen ondervindt bij het maken van uw eigen MIDI-naar-CV-box, volg dan deze stappen:
1. Zorg ervoor dat Arduino de MIDI-berichten correct ontvangt
Controleer het uitvoerkanaal waarnaar uw toetsenbord of DAW of Sequencer MIDI-berichten uitvoert. Arduino luistert standaard naar kanaal 1. Upload "TEST_MIDI_IN.ino" om een inkomend noteON-bericht te lezen.
2. Controleer uw bedrading dubbel
… of nog beter: controleer ze drie keer! Houd hier je tijd voor.
3. Controleer het DAC-adres en de uitgang
De DAC kan worden ingesteld om gegevens te ontvangen op een ander adres dan het adres dat ik in de schets heb ingesteld. Controleer het adres door "I2C_scanner.ino" uit te voeren. Als er een "geen apparaat gevonden"-fout optreedt, controleer dan uw DAC-bedrading (SDA- en SCL-ingangen zijn verschillend op verschillende Arduino-kaarten!). Als je een oscillocope hebt (zelfs die digitale oscilloscopen van 15 euro zijn goed genoeg… en leuk om mee te spelen!) kun je de output van je DAC controleren door het voorbeeld van de driehoekgolfgenerator te uploaden die bij de DAC-bibliotheekinstallatie wordt geleverd.
Onthoud dat wanneer een optocoupler is aangesloten op de RX-ingang van je Arduino-bord, je geen nieuwe schets kunt uploaden!! Plaats een schakelaar (het kan een eenvoudige jumper zijn) voor de RX-pin.
De meeste van deze testschetsen zijn niet van mij of in ieder geval gebaseerd op bestaand online materiaal.
Dit ding klinkt mij niet goed in de oren!?
Dit is geen echt probleem: de afgeleide vergelijking voor Hz/V-regeling is "ideaal". Enige afwijking van het ideale gedrag kan stijgen van de +5V die u levert, die niet 5.000V is, van de DAC en van het instrument zelf. Om op te lossen moet je handelen op je synth tune/fine tune potentiometer en "voilà" een perfect afgestemde MIDI-besturing;)
Stap 7: Nuttige links
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
Aanbevolen:
Roberts RM33 Raspberry Pi internetradio (nog een): 8 stappen (met afbeeldingen)
Roberts RM33 Raspberry Pi-internetradio (nog een …): Ja, het is een andere Raspberry Pi-internetradio en ook niet mijn eerste. Ik weet niet zeker waarom deze build nog steeds zo populair is, maar ik geniet er nog steeds van en kan ook niet zeggen dat dit mijn laatste zal zijn. Ik hou echt van het uiterlijk van de Robert
Een knop Kopie naar klembord op een webpagina plaatsen: 5 stappen (met afbeeldingen)
Een knop Kopie naar klembord op een webpagina plaatsen: dit klinkt misschien eenvoudig, en ik zie er misschien gek uit als ik het op Instructables zet, maar in werkelijkheid is het niet zo eenvoudig. Er is CSS, JQuery, HTML, wat fancy javascript, en, ach, je weet wel
Nog een andere instructie over het gebruik van de DIYMall RFID-RC522 en Nokia LCD5110 met een Arduino: 8 stappen (met afbeeldingen)
Nog een andere Instructable over het gebruik van de DIYMall RFID-RC522 en Nokia LCD5110 met een Arduino: waarom voelde ik de behoefte om nog een Instructable te maken voor de DIYMall RFID-RC522 en de Nokia LCD5110? Nou, om je de waarheid te zeggen, ik werkte ergens vorig jaar aan een Proof of Concept met beide apparaten en op de een of andere manier "misplaatst"
Nog een ATX naar Bench PSU-conversie: 7 stappen
Nog een andere ATX-naar-bank PSU-conversie: Waarschuwing: gebruik nooit een ATX-voeding met de behuizing uit, tenzij u precies weet wat u doet, ze bevatten spanningvoerende draden met dodelijke spanningen. Er zijn een paar projecten in de buurt om een ATX-psu om te zetten in een bank-psu, maar geen van hen was echt
Converteer een radiobandspeler naar een mp3-boombox: 10 stappen (met afbeeldingen)
Zet een radiocassettespeler om in een mp3-boombox: Mijn familie en ik luisteren graag naar muziek als we buiten met de kinderen spelen of zwemmen in ons kleine bovengrondse zwembad. We hadden een paar oude CD/Tape/Radio Boomboxen, maar de CD-spelers werkten niet en de oude analoge radiotuner was vaak moeilijk