Turinys:

Kitas MIDI į CV dėžutė: 7 žingsniai (su paveikslėliais)
Kitas MIDI į CV dėžutė: 7 žingsniai (su paveikslėliais)

Video: Kitas MIDI į CV dėžutė: 7 žingsniai (su paveikslėliais)

Video: Kitas MIDI į CV dėžutė: 7 žingsniai (su paveikslėliais)
Video: Meet the Mormons Official Movie (International Version) - Full HD 2024, Lapkritis
Anonim
Kitas MIDI į CV dėžutė
Kitas MIDI į CV dėžutė

Kitas „MIDI to CV“dėžutė yra projektas, kurį sukūriau, kai „Korg MS10“pasibeldė į mano duris ir įvyko mano studijoje. Kadangi mano sąranka labai susijusi su MIDI, kad būtų galima automatizuoti ir sinchronizuoti visus instrumentus, kai nusipirkau MS10, pirmoji problema, su kuria teko susidurti, buvo tai, kaip tokią kontrolę įgyvendinti.

„Korg MS20/10“nėra patys lengviausi sintezatoriai, norintys įdiegti MIDI: pirmiausia jie remiasi Hz/V valdymu (tiesinė koreliacija tarp valdymo įtampos ir natų dažnio), o ne okt/V (1 V oktavai); antra, norėdami suaktyvinti užrašą, turite nusiųsti neigiamą vartų signalą ir trumpai įvesti įžeminimą (S-Trig), o ne +5 V signalą (V-trig).

Šiais laikais yra įvairių komercinių sprendimų, kaip valdyti tokius instrumentus (t. Y. „Arturia Beatstep Pro“, „Korg SQ-1“, „Kenton Solo“), bet aš esu pigus niekšas ir net 100 eurų yra per daug „neskambančiam“įrenginiui:).

Štai mes tada: leiskite man parodyti, kaip sukurti mažo biudžeto MIDI į CV dėžutę, kad būtų galima valdyti/automatizuoti išankstinio MIDI sintezės žingsnį, vartus, greitį ir išjungimo dažnį naudojant išorinį MIDI valdiklį (klaviatūrą, DAW, seką ar bet ką).

- O kaip su naujuoju MS20 mini?

Kaip beveik visi žino, naujasis MS20 iš tikrųjų yra paruoštas MIDI: IN su 5 polių MIDI jungtimi ir IN/OUT su USB jungtimi.

"Taigi, jei turiu MS20 mini, tai nieko nereiškia!"

Gerai ne. MS20 mini atpažįsta tik pastabų įjungimo/išjungimo pranešimus, o klaviatūra nėra jautri greičiui. Neįmanoma to įveikti naudojant senovinę ar mini klaviatūrą MS10/20, tačiau su midi dėžute ir greičiui jautria klaviatūra esate auksinis. Be to, naudodami MIDI dėžutę galite automatizuoti filtro išjungimą (arba bet kurį kitą įtampos valdomą parametrą) arba modifikuoti jį pagal gaunamą MIDI užrašą apie greitį. Vėlgi, vienintelis MIDI kanalas MS20 mini reaguoja į 1 kanalą. Naudodami šį langelį taip pat galite įveikti šią ribą.

„O kas, jei turiu„ Oct/V “sintezatorių?

Jokiu problemu! Mano parašytas kodas suderinamas su „Oct/V“sintezatoriais (neišbandytas, bet esu įsitikinęs, kad tai veiks iš karto;)).

1 žingsnis: !! Atsargumo pastaba - atsisakymas

Jūsų įranga yra labai vertinga ir neturėtų būti naudojama bandymams atlikti.

Žaisdami su elektra galite labai sugadinti įrangą arba pakenkti sau.

Aš negaliu būti atsakingas už žalą, padarytą jūsų įrangai/techninei įrangai ar net sau, atsiradusiai dėl bet kokios programinės įrangos ar schemų, informacijos ar nuorodų, apie kurias pranešiau šioje instrukcijoje.

Tu buvai ispetaS!

2 žingsnis: Aparatūros kūrimas

„Arduino“yra naudingas sprendžiant tokius projektus. Didelė Bendrija ir labai geros bibliotekos, apimančios beveik visas bendras užduotis, yra teisingas pasirinkimas. Čia plokštė bus užprogramuota taip, kad ji nuskaitytų gaunamus MIDI duomenis ir tada siunčia atitinkamą įtampą vairuoti:

- Pitch, paverčiant pwm išėjimą į analoginę įtampą, kad VCO būtų valdomas per skaitmeninį į analoginį keitiklį (DAC)

- Greitis, filtruojant pwm išvestį, kad būtų galima valdyti VCA naudojant paprastą RC filtrą

- Filtro išjungimo dažnis, filtruojant pwm išvestį, kad būtų galima valdyti VCF naudojant paprastą RC filtrą

- Vartai, tiesiogiai iš skaitmeninės išvesties, esant V-trigui (įjunkite 1Kohm su išėjimu, kad sumažintumėte srovės nutekėjimą) arba paprastu pnp tranzistoriaus jungikliu iš skaitmeninės išvesties (žr. Schemą, pridėtą prie schemos žingsnio).

„Arduino“negali tiesiogiai perduoti pastovios įtampos, bet 0/+5 V impulsų su skirtingais periodais (PWM). Mums reikia skaitmeninio analoginio keitiklio (DAC), skirto liejimui. RC filtrai yra lengviausias DAC, kokį tik galiu įsivaizduoti. RC filtras yra pakankamas įtampos valdomam stiprintuvui ir filtrui (VCA ir VCF). RC filtrai yra pritaikyti taip, kad ribinis dažnis būtų <20Hz (žemiausias girdimas dažnis).

Aš padariau tam tikrą bandymą su mažos talpos nepoliarizuotais kondensatoriais ir baigiau 0,1 uF talpos verte, kad geriausiai tiktų. Patikrinta gerai su MS20 MKII.

Deja, mes negalime pasikliauti RC filtru, kad valdytume įtampos valdomą osciliatorių (VCO), nes jis būtų nepakankamai tikslus (Hz/V skalėje, apatiniame gale du adiacendiniai pustoniai skiriasi mažiau nei 0,02 V; V /spalio du prigludę pustoniai skiriasi 0,083 V); tam naudosime IC DAC (MPC4725).

Žinomos ribos

Apribojant pavaros įtampą iki 5 V („Arduino“išėjimo įtampa), greitis apima visą 0–5 V diapazoną; riba yra pusiau uždengta (nuo -5V iki +5V); VCO diapazonas yra iš dalies apimtas, nes Hz/V įtampa reikalauja 8 V, kad pasiektų 440 Hz A4. Esant 5 V išėjimo ribai, mes galime pakelti osciliatorių iki D4 dažnio Hz/V.

3 žingsnis: komponentų sąrašas

Komponentų sąrašas
Komponentų sąrašas
Komponentų sąrašas
Komponentų sąrašas
Komponentų sąrašas
Komponentų sąrašas

Jums reikia:

1X „Arduino UNO“(arba nano)

1X MPC4725 DAC plokštė

4X 1/8 "arba 1/4" monofoninės jungtys

1X MIDI jungtis

1X 6N138 optronas

1X 1N4148 diodas

1X 220 omų 1/4 W rezistorius

1X 470 omų 1/4 W rezistorius

1X 10K omų 1/4 W rezistorius

4X 1K omo 1/4 W rezistorius

2X 0,1 uF kondensatorius

1X BC547 pnp tranzistorius (S-trig atveju)

1X ABS dėžutė (ne mažiau kaip 55 x 70 x 100 mm)

… ir, žinoma, duonos lentos arba perforatoriaus plokštės, lituokliai, lydmetalio viela ir kabeliai (turėtų pakakti 2 metrų 28 AWG).

Atkreipkite dėmesį, kad nuotraukose, esančiose aukščiau mano prototipo, yra sumontuoti 100 uF elektrolitiniai dangteliai, tačiau jie yra per lėti dėl talpos įkrovimo laiko. 0,1uF talpa yra teisingas pasirinkimas.

Aš naudoju papildomą jungtį, kad galėčiau tiekti energiją savo arduino; nebūtina, kad mikrokontrolerio sulčių būtų galima išspausti tiesiai per įmontuotą mini USB jungtį.

4 žingsnis: jungtys/schemos

Ryšiai/schemos
Ryšiai/schemos
Ryšiai/schemos
Ryšiai/schemos
Ryšiai/schemos
Ryšiai/schemos

MIDI IN

MIDI IN grandinė yra paprasta ir gerai aprašyta internete. Paimkite, pavyzdžiui, šią puikią pamoką MIDI ir Arduino by Amanda Gassaei. Šiaip aš padariau n -ąją schemą šiuo klausimu.

Atkreipkite dėmesį, kad aš pridėjau jungiklį MIDI IN schemoje (1 jungiklis): tai būtina įkeliant naują eskizą į „Arduino“, nes opto trukdo RX linijai net ir be gaunamų midi pranešimų. Prieš įkeldami eskizą, turite atidaryti jungiklį, kitaip IDE nepavyks įkelti naujo eskizo.

Galų gale galite pakeisti eskizą, kad būtų naudojamas serijinis programinės įrangos ryšys.

DAC, RC filtras, sintezatorius

DAC, RC filtrų ir „Synth“jungtis (žingsnis, vartai ir greitis) parodyta diagramoje viršuje. Aš paėmiau nuorodą į „Korg MS20“pleistro skydelį, bet viską išbandžiau ir MS10. Tiesioginis greičio CV prijungimas prie VCA „pradinio stiprinimo“pataisos taško neturi jokios įtakos (turiu šį dalyką iškasti toliau), bet jei prijungsite jį prie „Total“pataisos taško ir padidinsite visus išorinius puodus (MG/T. EXT)), išgirsite gražius tonų variantus, atsižvelgiant į natos greitį.

Mano schemos (ir mano prototipas) nenaudoja srovės ribojančio rezistoriaus DAC išėjime, tačiau visada gera idėja jį įdėti, kad būtų užtikrintas ilgas jūsų grandinių tarnavimo laikas. Pakaks 220 omų rezistoriaus.

Atkreipkite dėmesį, kad schemose nurodoma virš 100 uF elektrolitinių dangtelių, tačiau jie yra per lėti dėl talpos įkrovimo laiko. Ne poliarizuoti, 0.1uF dangteliai yra tinkamas pasirinkimas.

Vartai

Jei ketinate sekti sintezatorių, suderinamą su „V-Trig“(įtampos paleidimo) signalais, pakaks 1k omų serijos rezistoriaus srovės nutekėjimui sumažinti; „S-Trig“(jungiklio paleidimo) sintezės atveju galite naudoti paprastą PNP jungiklio grandinę (žr. pridedamą schemą).

5 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Stengiausi, kad eskizas būtų kuo aiškesnis ir „skaitomas“.

Dirbau prie paprasto skaičiavimo lapo, kurį radau ČIA, kad išvestume įtampos Vs pastabos# kreivę ir tiesiogiai naudočiau mikrovaldiklio lygtį. Lygtis parodyta diagramoje viršuje. Aš naudoju C2 kaip informacinę pastabą, kad gaučiau Arp/Korg suderinamą įtampos V užrašų santykį (C0 - 0,25 V, C1 - 0,5 V, C2 - 1 V, C3 - 2 V, C4 - 4 V, C5 - 8 V ir pan.).

Turėjau apibrėžti žaislo kintamąjį, kad galėčiau gerai sureguliuoti … neskubėkite rasti tinkamų verčių. Tuneris yra būtinas.

Mes ketiname padidinti laikmačio/skaitiklio pwm dažnį, kad sumažintume išėjimo įtampą (taip paprasta, kaip kodo eilutė).

Kad kodas reaguotų į gaunamus baitus, kodas labai priklauso nuo funkcijų skambučių.

Jums reikia sudaryti „Sparkfun“„Adafruit_MCP4725.h“ir keturiasdešimt septynių efektų/Francois Best „MIDI.h“bibliotekų! (Didelis ačiū šiems asmenims: be jų pastangų šis projektas niekada nebūtų įgyvendintas!).

Manau, kad jūsų kompiuteryje yra paruoštas „Arduino IDE“ir žinote, kaip įkelti eskizą į „Arduino“plokštę.

Realiame gyvenime nesu koduotoja, todėl labai tikėtina, kad eskizas galėtų būti parašytas geriau. Esu atviras pasiūlymams (aš visada ką nors išmokstu žiūrėdamas į kodavimo kodą;))

Papildomos pastabos parašytos žemiau esančiame kode. Įdiekite dvi bibliotekas, atidarykite pridėtą kodą savo IDE, prijunkite plokštę, pasirinkite plokštės tipą ir įkelkite.

6 veiksmas: trikčių šalinimas

Net jei projektas yra žemo lygio, yra daugybė dalykų, kurie gali suklysti. Jei bandydami sukurti savo MIDI į CV dėžutę susiduriate su problemomis, atlikite šiuos veiksmus:

1. Įsitikinkite, kad „Arduino“teisingai gauna MIDI pranešimus

Patikrinkite išvesties kanalą, į kurį jūsų klaviatūra, DAW arba sekvencininkas siunčia MIDI pranešimus. „Arduino“pagal numatytuosius nustatymus klausosi 1 kanalo. Įkelkite „TEST_MIDI_IN.ino“, kad perskaitytumėte gaunamą „NoteON“pranešimą.

2. Dar kartą patikrinkite laidus

… arba dar geriau: tris kartus patikrinkite juos! Skirkite tam laiko.

3. Patikrinkite DAC adresą ir išvestį

DAC gali būti nustatytas priimti duomenis kitu adresu, nei aš nustatiau eskize. Patikrinkite adresą paleisdami „I2C_scanner.ino“. Jei įvyksta klaida „nerastas įrenginys“, patikrinkite DAC laidus (skirtingose „Arduino“plokštėse SDA ir SCL įvestys skiriasi!). Jei turite oscilokopą (net ir tų 15 eurų skaitmeninių osciloskopų užtenka … ir smagu su jais žaisti!), Galite patikrinti savo DAC išvestį įkeldami trikampių bangų generatoriaus pavyzdį, įtrauktą į DAC bibliotekos diegimą.

Atminkite, kad prijungus optroną prie jūsų arduino plokštės RX įvesties, negalėsite įkelti naujo eskizo !! Prieš RX kaištį uždėkite jungiklį (tai gali būti paprastas trumpiklis).

Dauguma šių bandymų eskizų nėra mano arba bent jau pagrįsti esama internetine medžiaga.

Man tai skamba nesąmoningai !?

Tai nėra tikra problema: Hz/V valdymo lygtis yra „ideali“. Kai kurie nukrypimai nuo idealaus elgesio gali pakilti nuo tiekiamo +5 V, o ne 5 000 V, iš DAC ir paties prietaiso. Norėdami išspręsti problemą, turite veikti pagal savo sintezės/smulkių melodijų potenciometrą ir „voilà“- puikiai suderintą MIDI valdiklį;)

7 žingsnis: naudingos nuorodos

en.wikipedia.org/wiki/CV/gate

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

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

Rekomenduojamas: