Inhoudsopgave:

Nog een MIDI naar CV Box: 7 stappen (met afbeeldingen)
Nog een MIDI naar CV Box: 7 stappen (met afbeeldingen)

Video: Nog een MIDI naar CV Box: 7 stappen (met afbeeldingen)

Video: Nog een MIDI naar CV Box: 7 stappen (met afbeeldingen)
Video: VADER BEHANDELT ZIJN KIND SLECHT | BONDGENOTEN 2024, November
Anonim
Nog een MIDI naar CV Box
Nog een MIDI naar CV Box

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

Onderdelenlijst
Onderdelenlijst
Onderdelenlijst
Onderdelenlijst
Onderdelenlijst
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

Aansluitingen/schema's
Aansluitingen/schema's
Aansluitingen/schema's
Aansluitingen/schema's
Aansluitingen/schema's
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

De software
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: