Cuprins:

O altă cutie MIDI către CV: 7 pași (cu imagini)
O altă cutie MIDI către CV: 7 pași (cu imagini)

Video: O altă cutie MIDI către CV: 7 pași (cu imagini)

Video: O altă cutie MIDI către CV: 7 pași (cu imagini)
Video: Aurica îl înșeală pe Mitică cu Cornel (Moldovenii S2 Ep.7) 2024, Noiembrie
Anonim
Un alt MIDI la CV Box
Un alt MIDI la CV Box

O altă cutie MIDI-CV este un proiect pe care l-am dezvoltat când un Korg MS10 mi-a bătut ușa și a avut loc în studioul meu. Fiind faptul că configurarea mea se referă în mare măsură la MIDI pentru a automatiza și sincroniza toate instrumentele, atunci când am cumpărat MS10, prima problemă cu care am avut de înfruntat a fost cum să implementez un astfel de control.

Korg MS20 / 10 nu sunt cele mai ușoare sintetizatoare pentru a implementa MIDI: în primul rând, se bazează pe controlul Hz / V (corelație liniară între tensiunea de control și frecvența notei), în loc de oct / V (1V pe octavă); în al doilea rând, pentru a declanșa o notă, trebuie să trimiteți un semnal de poartă negativ și să scurtați intrarea la masă (S-Trig), nu un semnal de +5 V (V-trig).

Există diverse soluții comerciale pentru a controla astfel de instrumente în zilele noastre (adică Arturia Beatstep Pro, Korg SQ-1, Kenton Solo), dar sunt un ticălos ieftin și chiar și 100 de euro sunt prea mult pentru un dispozitiv „care nu sună”:).

Iată-ne atunci: permiteți-mi să vă arăt cum să construiți o cutie MIDI la CV cu buget redus pentru a controla / automatiza tonul, poarta, viteza și frecvența de tăiere a unui sintetizator pre-MIDI cu un controler MIDI extern (tastatură, DAW, secvențiator sau orice altceva).

"Dar noul MS20 mini?"

După cum știe aproape oricine, noul MS20 este gata MIDI: IN cu un conector MIDI cu 5 poli și IN / OUT cu conector USB.

"Deci, dacă am un MS20 mini, acest lucru este inutil!"

Ei bine, nu. MS20 mini recunoaște numai mesajele de pornire / oprire a notelor, iar tastatura nu este sensibilă la viteză. Nu există nicio modalitate de a depăși acest lucru cu tastatura MS10 / 20 vintage sau mini, dar cu cutie midi și o tastatură sensibilă la viteză sunteți de aur. În plus, cu caseta MIDI puteți automat tăierea filtrului (sau orice alt parametru controlabil de tensiune) sau îl puteți modula prin nota MIDI de intrare pe viteză. Din nou, singurul canal MIDI MS20 mini la care răspunde este canalul 1. Cu această casetă puteți depăși și această limită.

"Ce se întâmplă dacă am un sintetizator Oct / V?"

Nici o problemă! Codul pe care l-am scris este compatibil cu sintetizatoarele Oct / V (netestat, dar sunt încrezător că va funcționa din cutie;)).

Pasul 1: !! Notă de precauție - Declinare de responsabilitate

Echipamentul dvs. este foarte valoros și nu ar trebui utilizat pentru a efectua teste.

Jucarea cu electricitate vă poate deteriora grav echipamentele sau vă poate face rău.

Nu pot fi tras la răspundere pentru pagubele aduse echipamentului / hardware-ului dvs. sau chiar dvs. însuși provenite din niciunul dintre software-uri sau scheme sau informații sau link-uri pe care le-am raportat în acest instructable.

Ai fost avertizat!

Pasul 2: Ingineria hardware-ului

Arduino este la îndemână atunci când se ocupă de proiecte de acest gen. Existența unei comunități mari și a unor biblioteci foarte bune care acoperă aproape fiecare sarcină comună o fac alegerea corectă. Aici placa va fi programată astfel încât să citească datele MIDI primite și apoi să trimită tensiunile corespunzătoare pentru a conduce:

- Pitch, prin conversia unei ieșiri pwm într-o tensiune analogică pentru a conduce VCO printr-un convertor digital în analog (DAC)

- Viteza, prin filtrarea unei ieșiri pwm pentru a conduce VCA cu un filtru RC simplu

- Frecvența de întrerupere a filtrului, prin filtrarea unei ieșiri pwm pentru a conduce VCF cu un filtru RC simplu

- Poartă, direct de la o ieșire digitală în cazul V-trig (puneți 1Kohm în serie cu ieșirea pentru a reduce scurgerea de curent) sau printr-un simplu comutator de tranzistor pnp din ieșirea digitală (a se vedea schema atașată la pasul schemei).

Arduino nu este capabil să emită tensiuni direct stabile, ci impulsuri 0 / + 5 V cu diferite perioade (PWM). Avem nevoie de convertoare digitale în analogice (DAC) pentru pourpouse. Filtrele RC sunt cel mai ușor DAC la care mă pot gândi. Un filtru RC este suficient pentru amplificatorul și filtrul controlat de tensiune (VCA și VCF). Filtrele RC sunt adaptate pentru a rezulta într-o frecvență de întrerupere <20Hz (cea mai mică frecvență sonoră).

Am făcut câteva teste cu condensatori ne polarizați de capacitate mică și am încheiat cu o valoare a capacității de 0,1 uF pentru a fi cea mai potrivită. Testat bine pe un MS20 MKII.

Din păcate, nu ne putem baza pe un filtru RC pentru a conduce oscilatorul controlat de tensiune (VCO), deoarece nu ar fi suficient de precis (în scara Hz / V, la capătul inferior două semitonuri adiacend diferă pentru mai puțin de 0,02V; în V / oct două semitonuri adiacente diferă pentru 0,083 V); vom folosi un IC DAC (MPC4725) pentru aceasta.

Limite cunoscute

Limitând tensiunea de acționare la 5V (tensiunea de ieșire Arduino), gama completă de la 0 la 5V este acoperită pentru viteză; limita este pe jumătate acoperită (-5V până la + 5V); gama VCO este acoperită parțial fiind că în Hz / V ar fi necesară o tensiune de 8 V pentru a ajunge la 440 Hz A4. Cu o limită de ieșire de 5V putem lansa oscilatorul până la frecvența D4 în Hz / V.

Pasul 3: Lista componentelor

Lista componentelor
Lista componentelor
Lista componentelor
Lista componentelor
Lista componentelor
Lista componentelor

Aveți nevoie de:

1X Arduino UNO (sau nano)

1X placă DAC MPC4725

Conectori mono 4X 1/8 "sau 1/4"

1X conector MIDI

1X 6N138 optocuplor

1X 1N4148 diodă

Rezistor 1X 220 ohm 1/4 W.

Rezistor 1X 470 ohm 1/4 W.

Rezistor 1X 10K ohm 1/4 W.

Rezistor 4X 1K ohm 1/4 W.

Condensator 2X 0,1 uF

1X BC547 tranzistor pnp (în cazul S-trig)

1X cutie ABS (cel puțin 55 x 70 x 100 mm)

… Și, evident, panou sau panou de perfecționare, fier de lipit, sârmă și cabluri de lipit (ar trebui să fie suficient 2 metri de 28 AWG).

Observați că în imaginile de mai sus prototipul meu montează capace electrolitice de 100 uF, dar sunt prea lente din cauza timpului de încărcare a capacității. O capacitate de 0,1 uF este alegerea corectă.

Am folosit un conector suplimentar pentru a furniza energie arduino-ului meu; nu este necesar să fie posibilă sucul microcontrolerului direct prin conectorul mini USB de la bord.

Pasul 4: Conexiuni / Scheme

Conexiuni / Scheme
Conexiuni / Scheme
Conexiuni / Scheme
Conexiuni / Scheme
Conexiuni / Scheme
Conexiuni / Scheme

MIDI IN

Circuitul MIDI IN este simplu și bine descris pe net. Luați ACEST instructiv excelent pe MIDI și Arduino de Amanda Gassaei, de exemplu. Oricum am făcut a nea schemă în această privință.

Observați că am adăugat un comutator în schema MIDI IN (comutatorul 1): acest lucru este necesar atunci când încărcați o schiță nouă pe Arduino deoarece opto-ul interferează cu linia RX chiar și fără mesaje midi primite. Trebuie să deschideți comutatorul înainte de a încărca schița sau IDE nu va reuși să încarce noua schiță.

Puteți modifica în cele din urmă schița pentru a utiliza o comunicare software serial.

DAC, filtru RC, sintetizator

Conexiunea pentru DAC, filtre RC și Synth (pitch, poartă și viteză) sunt prezentate în diagrama de mai sus. Am luat ca referință un panou de patch-uri Korg MS20, dar am testat totul și pe un MS10. Conexiunea directă a vitezei CV la punctul de patch "câștig inițial" VCA nu are niciun efect (trebuie să sap acest lucru mai departe), dar dacă îl conectați la punctul de patch "Total" și vă ridicați poturile externe totale (MG / T. EXT), veți auzi variații de ton frumoase în funcție de viteza notei.

Schemele mele (și prototipul meu) nu folosesc un rezistor de limitare a curentului la ieșirea DAC, dar este întotdeauna o idee bună să plasați unul pentru a asigura o viață lungă circuitelor dvs. Va fi suficient un rezistor de 220 ohmi.

Observați că în schemele de peste 100 uF sunt raportate capacele electrolitice, dar sunt prea lente din cauza timpului de încărcare a capacității. Capace ne polarizate, 0.1uF sunt alegerea potrivită.

Gate Out

În cazul în care urmează să secvențiați un sintetizator compatibil cu semnalele V-Trig (declanșator de tensiune), va fi suficient un rezistor de serie de 1k ohm pentru a reduce scurgerea de curent; în cazul unui sintetizator S-Trig (switch trigger), puteți utiliza un circuit de comutare PNP simplu (a se vedea schema atașată).

Pasul 5: Software-ul

Software-ul
Software-ul

Am încercat să păstrez schița cât mai clară și „lizibilă” posibil.

Am lucrat la o foaie simplă de calc pe care am găsit-o AICI pentru a obține o curbă Voltage Vs Note # și a folosi direct ecuația din microcontroler. Ecuația este prezentată în graficul de sus. Am folosit C2 ca notă de referință pentru a obține o relație de notă Voltage Vs conformă Arp / Korg (C0 - 0,25V, C1 - 0,5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V și așa mai departe).

A trebuit să definesc o variabilă de jucărie pentru a obține o reglare bună … ia-ți timp pentru a găsi valorile corecte. Este necesar un tuner.

Vom crește frecvența pwm a unui temporizator / contor pentru a reduce ondularea tensiunilor de ieșire (la fel de ușor ca o linie de cod).

Pentru a menține codul receptiv la octeții primiți, codul se bazează în mare măsură pe funcțiile de apel invers.

Aveți nevoie de bibliotecile Sparkfun „Adafruit_MCP4725.h” și Forty Seven Effects / Francois Best „MIDI.h” de compilat! (Multe mulțumiri acestor persoane: fără eforturile lor acest proiect nu s-ar realiza niciodată!).

Voi presupune că aveți Arduino IDE pregătit în computer și știți cum să încărcați o schiță pe placa dvs. Arduino.

Nu sunt un programator în viața reală, deci este foarte probabil ca schița să poată fi scrisă într-un mod mai bun. Sunt deschis la sugestii (învăț mereu ceva privind codul coderului;))

Note suplimentare sunt scrise în codul de mai jos. Instalați cele două biblioteci, deschideți codul atașat pe IDE, conectați-vă placa, selectați tipul de placă și încărcați.

Pasul 6: Depanare

Chiar dacă proiectul are un nivel scăzut, există o mulțime de lucruri care ar putea merge prost. Dacă întâmpinați probleme în timp ce încercați să creați propria casetă MIDI în CV, urmați acești pași:

1. Asigurați-vă că Arduino primește corect mesaje MIDI

Verificați canalul de ieșire pe care tastatura sau DAW sau Sequencer trimit mesaje MIDI. Arduino ascultă canalul 1 în mod implicit. Încărcați „TEST_MIDI_IN.ino” pentru a citi un mesaj ONON primit.

2. Verificați cablurile

… Sau chiar mai bine: verificați triplu! Păstrează-ți timpul pentru asta.

3. Verificați adresa și ieșirea DAC

DAC ar putea fi setat să primească date pe o altă adresă decât cea pe care am setat-o în schiță. Verificați adresa rulând „I2C_scanner.ino”. Dacă se întâmplă o eroare „fără dispozitiv găsit”, verificați cablajul DAC (intrările SDA și SCL sunt diferite pe diferite plăci Arduino!). Dacă aveți un osciloscop (chiar și acele osciloscoape digitale de 15 euro sunt suficiente … și distractiv de jucat!) Puteți verifica ieșirea DAC-ului dvs. încărcând exemplul generatorului de undă triunghiular inclus în instalarea bibliotecii DAC.

Amintiți-vă că atunci când un optocuplator este conectat la intrarea RX a plăcii dvs. arduino, nu veți putea încărca o schiță nouă !! Plasați un comutator (ar putea fi un simplu jumper) în fața pinului RX.

Majoritatea acestor schițe de testare nu sunt ale mele sau cel puțin bazate pe material online existent.

Chestia asta îmi sună deconectată !?

Aceasta nu este o problemă reală: ecuația derivată pentru controlul Hz / V este „ideală”. Unele derivări din comportamentul ideal pot crește de la + 5V pe care le furnizați nu fiind 5.000V, de la DAC și de la instrumentul în sine. Pentru a rezolva trebuie să acționați pe sintetizatorul de sintetizare / potențiometrul de reglaj fin și „voilà” un control MIDI perfect reglat;)

Pasul 7: Link-uri utile

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

Recomandat: