Sadržaj:

(skoro) Univerzalni MIDI SysEx CC programator (i sekvencer ): 7 koraka (sa slikama)
(skoro) Univerzalni MIDI SysEx CC programator (i sekvencer ): 7 koraka (sa slikama)

Video: (skoro) Univerzalni MIDI SysEx CC programator (i sekvencer ): 7 koraka (sa slikama)

Video: (skoro) Univerzalni MIDI SysEx CC programator (i sekvencer ): 7 koraka (sa slikama)
Video: Это то самое универсальное блюдо для завтрака или полдника. Рецепт КРУПЕНИКА от ARGoStav Kitchen 2024, Juli
Anonim
(skoro) Univerzalni MIDI SysEx CC programer (i sekvencer …)
(skoro) Univerzalni MIDI SysEx CC programer (i sekvencer …)
(skoro) Univerzalni MIDI SysEx CC programer (i sekvencer …)
(skoro) Univerzalni MIDI SysEx CC programer (i sekvencer …)

Sredinom osamdesetih proizvođači sintetičkih sintetičara započeli su proces "manje je bolje" koji je doveo do barebones sintetizatora. Ovo je omogućilo smanjenje troškova sa strane proizvođača, ali je učinilo proces krpanja zabavnim, ako ne i nemogućim za krajnjeg korisnika.

Sami proizvođači i kompanije trećih strana realizirale su izborne kutije pune gumba i/ili klizača koji vam omogućuju da se zapravo "igrate" sa svojim sintetičkim tonovima, ali to su danas glupe precijenjene cijene i, kao i uvijek, prisiljeni smo sami pronaći jeftina rješenja;)

Ovaj projekt je došao iz moje potrebe da lako programiram zakrpe na nekim od mojih najnovijih sintetičkih proizvoda: Roland Alpha Juno 2 i JX8P. Započeo je kao jednostavan SysEx kontroler, a zatim je odrastao na meni i postao nešto složeniji, s ostalim uspravnim sintetizatorima koji su usput podržani (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) i ugrađenim sekvencerom.

U ovom uputstvu pokazat ću vam kako realizirati vlastiti kontroler: jeftin alat koji oponaša te skupe kontrolne kutije parametara … i još mnogo toga (nastavite čitati za detalje …).

Korak 1: Šta je to tačno (a šta nije …)

Šta je zapravo ovo (a šta nije …)
Šta je zapravo ovo (a šta nije …)
Šta je zapravo ovo (a šta nije …)
Šta je zapravo ovo (a šta nije …)
Šta je zapravo ovo (a šta nije …)
Šta je zapravo ovo (a šta nije …)

Ovdje je MIDI SysEx i kontrola promjene kontrolera u osnovi 16 tipki (potenciometara) i 4 tipke MIDI kontrolera. Zadana skica obrađuje tri "stranice", za ukupno 48 parametara tona sinteze.

Učinio sam kontroler kompatibilnim s promjenama kontrole MIDI poruka (jednostavna i "globalna" vrsta MIDI poruke koju široko koriste proizvođači sintetizatora, posebno iz 90-ih) i SysEx poruka (druga vrsta MIDI poruka, manje općenita i jako specifična za sintezu) koristi se 80 -ih godina).

Konkretno, kontroler je prema zadanim postavkama kompatibilan sa:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

- Oberheim Matrix 6/6R (> 2.14 firmver)

- Sekvencijalna kola MAX/SixTrak.

Konačno možete omogućiti kontroloru da djeluje na bilo kojem sintetizatoru koji može primati poruke o promjeni MIDI kontrole (CC), ali je prema zadanim postavkama onemogućen.

Budući da je priroda projekta otvorenog koda, vrlo je lako podržati bilo koji drugi sintetizator po vašem izboru (detalje potražite u koraku koda).

Raspored parametara tona sa svim tim brojevima u početku bi mogao biti zbunjujući, ali nije "slučajan" kako bi mogao izgledati: slijedi redoslijed MIDI grafikona implementacije proizvođača. Ovo je bio izbor dizajna kako bi kôd bio jednostavan i "univerzalan".

Na ovoj stranici možete preuzeti listove slika sa 4x4 "rasporedom" koji sam realizirao za Alpha-Junos, JX8P, DW8000, Matrix 6 i MAX/SixTrak: plavi parametri su oni koje možete prilagoditi na stranici 1, crni na stranici 2 i narandžaste one na stranici 3.

Čak i ako kontroler nema zaslon, poigravanje sintetizatorima koji vam pokazuju koji se parametar podešava u stvarnom vremenu čini proces stvaranja zakrpe radošću. JX8P i Matrix 6, na primjer, to mogu; umjesto toga, Alpha Juno ne prikazuje parametre koji se mijenjaju i čini stvari malo težima (ali stvaranje sjajnih zakrpa definitivno je izvodljivo i lakše nego pomoću ugrađenog sučelja bez knoblesa); DW8000 ima samo numeričke zaslone, ali možete vidjeti svoje prilagodbe u stvarnom vremenu pa se postavlja između njih.

Šta je sa onim dugmadima tamo?

Pa, prva (gore lijevo u mom izgledu) je za pregledavanje stranica: prijeđite na stranicu sljedećeg parametra pri svakom pritisku gumba. LED diode će pokazati na kojoj ste stranici.

Drugi, kada pritisnete, pošaljete zakrpu gdje radite natrag do sintetičara (zamislite to: napravili ste zakrpu svog života, zatim dodirnuli programsko dugme na površini sintetizatora i zakrpa specifična za dugme je učitana … sav vaš posao je otišao !). Pomoću ovog gumba možete poslati sve vrijednosti koje je programer zapamtio tijekom posljednjeg procesa zakrpe. Ovaj postupak opoziva zakrpe ne funkcionira ako ponovo pritisnete randomizer (postupak randomizacije prepisuje sve parametre u memoriji) i djeluje samo na parametre koje ste barem jednom uredili. Najnovija zakrpa se ne čuva u memoriji nakon isključivanja.

Treći je za sekundarnu funkciju: randomizer/patcher! Okrenite dugmad u smjeru suprotnom od kazaljke na satu za koje želite da se parametar na koji djeluju zaključa na minimalnu vrijednost (npr. LFO oscilatora, omotač oscilatora itd.) Ili okrenite do kraja u smjeru kazaljke na satu da biste povećali vrijednost (tj. Volumen miksera oscilatora, volumen VCA itd.) I pritisnite dugme za pokretanje procesa randomizacije za sve ostale parametre.

Četvrto dugme je tu da aktivira uskršnje jaje (nekako …) koje sam stavio u kôd nakon što sam primijetio da je raspored savršen za … MIDI sekvencer od 16 koraka! Tačno: pritisnite četvrto dugme (dugme MODE), kontroler će ući u "režim sekvencera" i biće vam dozvoljeno da pokrećete beleške na sličan način kao i stari analogni sekvencer. Lijepo uh!

Ponovno pritisnite tipku MODE za povratak u način rada kontroler/patcher.

Šta je sa tim LED diodama?

Postoje 4 LED diode u skladu sa svakim dugmetom (desno od svakog dugmeta u mom rasporedu); ove LED diode imaju više izljeva:

1) oni vam govore na kojoj se stranici sa parametrima nalazite (gornja LED lampica svijetli kada ste na stranici 1, LED dioda ispod svijetli kada je stranica 2 aktivna, LED 3 svijetli … sami ste zaključili). Ograničeni smo na 3 stranice bankomata, ali kôd se može lako podesiti da obrađuje više stranica;

2) druga LED označava parametre stranica 2 AND svijetli kada mikrokontroler šalje prethodnu zakrpu (povlačenje zakrpe);

3) treća LED dioda pokazuje parametre stranica 3 I svijetli tokom procesa randomizacije.

Četvrta LED ne radi ništa u načinu rada MIDI kontrolera i koristi se za globalnu promjenu MODE -a.

Sve ove funkcije se prenose kao MIDI poruke, pa da bi bio efikasan, vaš sintetičar mora biti sposoban/omogućen za primanje i tumačenje ovakvih poruka

Korak 2: "Skriveni" sekvencer od 16 koraka

The
The

Kao što je rečeno, tijekom testiranja kontrolera shvatio sam da bi bilo sjajno pustiti niz nota da se pokrenu kako bih mogao podesiti parametre sinteze i imati bolju predodžbu o konačnom efektu na ton. Imam softverski sekvencer (toliko mi se sviđa seq24!), Ali ovaj hardver je gotovo SAVRŠEN sekvencer sa 16 koraka! Tada je bilo samo pitanje koda kako ga implementirati.

Možete se prebacivati između načina kontrolera i sekvencera pritiskom na dugme #4 (dugme MODE).

Dok u načinu rada sekvencera tipke rade drugačije, a LED diode vam daju nove informacije:

- prvo dugme (dugme SHIFT) kada se pritisne omogućava tempo, dužinu note, izmjenu kanala i oktave; vrijednost tempa data je položajem prvog potenciometra, nota se izračunava iz drugog položaja potenciometra, MIDI kanali iz trećeg i četvrtog položaja potenciometra i oktave (-1 o do +2) iz petog pota. Možete kontrolirati tempo od 40 BPM (okrenite potenciometar #1 do kraja u smjeru suprotnom od kazaljke na satu držeći pritisnuto dugme #1) do gotovo 240 BPM (okrenite potenciometar #1 do kraja u smjeru kazaljke na satu držeći pritisnuto dugme #1). Dužinu nota možete postaviti na polovinu note, notu četvrtine, osmicu, notu šestorke okretanjem pot #2 držeći pritisnuto dugme SHIFT. Možete postaviti MIDI kanale (primarni kanal i sekundarni kanal) od 1 do 16. Osnovni raspon nota (od C2 do F#4) može se smanjiti za jednu oktavu ili povećati za jednu ili dvije oktave.

Podrazumevano je tempo postavljen na 120 otkucaja u minuti, a dužina note do četvrtine nota.

- drugo dugme za pokretanje i zaustavljanje sekvence nota. Kao što je rečeno, ako promijenite način rada pritiskom na tipku #4 (MODE) tijekom izvođenja sekvence, ući ćete u način rada kontrolera, ali će sekvenca nastaviti raditi.

- treće dugme je PANIKA! Pritiskom na njega sve će se note isključiti.

- četvrti se koristi za prebacivanje između globalnih režima (patter ili sekvencera) kada dugme #1 nije pritisnuto, ili između režima sekvence (vidi dalje) kada je pritisnut #1.

U modu sekvencera ako pritisnete tipku za odabir moda držeći pritisnutom tipku #1 (SHIFT), možete se prebacivati između 3 različita načina sekvenciranja:

Mono sekvenca od 1 - 16 koraka

2 - 16 koraka poli sekvenca: aktiviraju se i note za jednu oktavu niže od onih koje definiraju lonci (ovo ispušta 2 glasa po taktu)

Poli niz od 3 do 8 koraka, dvokanalni: dvije paralelne sekvence od 8 koraka šalju se na dva različita kanala (CH1 i CH2 prema zadanim postavkama); postavljanjem iste vrijednosti kanala i na primarnom i na sekundarnom kanalu možete imati dvije paralelne sekvence od 8 koraka koje svira isti (polifoni) sintisajzer.

O LED diodama: čim uđete u način rada sekvencera, sva četiri svjetla će zasvijetliti. Kada pokrenete sekvencu, LED diode će pratiti sekvencu (ili sekvence). Postavio sam jednu LED na svaka četiri potenciometra i meni je to dovoljno. Bilo bi jednostavno izmijeniti skicu za rukovanje sa 16 LED dioda, po jednom za svaki vaš korak.

Nedostajuće funkcije sekvencera koraka koje bi neko mogao smatrati neophodnim: MIDI sinhronizacija IN, zadržavanje koraka (možete isključiti samo korak), CV bez.

Implementirao sam clock OUT, ali je nekako pogrešan. Za to sam isprobao dva pristupa (jedan sa i jedan bez prekida tajmera), ali oba su bila nesavršena (ili potpuno neuspješno). MIDI sat mora biti strogo-savršen za rad na duge staze. Signal sata se ipak šalje i možete ga onemogućiti izravno na skici (za detalje pogledajte kasnije).

Primijetite da je ovaj sekvencer koraka MIDI ili digitalni ako želite, pa da bi mogao raditi mora biti povezan na sintetički uređaj omogućen za primanje i tumačenje ovakvih poruka

Korak 3: Potreban hardver i izgradnja

Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski
Potreban hardver i građevinski

Nakon svih ovih riječi, zabavite se!

Idemo uobičajenim Arduino načinom. Koristio sam Arduino MEGA -u zbog velike količine analognih ulaza (želimo kutiju punu ručica, zar ne ?!:)).

Konkretno, Arduino MEGA može rukovati sa 16 analognih ulaza (uz određena hardverska podešavanja, tj. Miksanjem, možete to povećati, ali mi ovdje ne idemo ovim putem), pa ćemo poslati 48 MIDI poruka putem 16 potenciometara. Svaki potenciometar će tada kontrolirati tri parametra, po jedan za svaku "stranicu"; stranice se biraju pritiskom na prekidač.

Lista hardvera:

- 1x Arduino MEGA

- 16x linearni, jednokretni potenciometri od 10 K ohma

- 16x ručke za lonac

- 4x trenutna dugmeta

- 4x LED

- 6x 220 ohmski otpornik

- 1x MIDI konektor

- 1x ABS kutija za projekte

Neki kabel, žica za lemljenje i šest do osam sati slobodnog vremena.

Koristio sam perfboard i neke pin zaglavlje kako bih realizirao neku vrstu štita na koji sam lemio otpornike i usmjeravao kabele. Ovo ima prednost što vam omogućuje da izvadite svoj Arduino i upotrijebite ga za druge projekte (svi ćemo u jednom trenutku ostati bez Arduino ploča!). To ionako nije obavezno, a drugi dobar pristup mogao bi biti odleđivanje arduino MEGA pinheadera i lemnih kabela direktno na mjestu.

Koristio sam otpornike od 200 ohma umjesto otpornika od 220 ohma i oni ionako rade savršeno; kladio bih se da bi čak i 150 ohmski otpornici radili odlično (i za MIDI komunikaciju i za LED).

Da bih oblikovao kutiju, prvo sam nanio malo adhezivnog papira na površinu kutije, izmjereno gdje treba izbušiti rupe (imao sam 3 cm od rupe do rupe kako bi svi lonci mogli stati) napravio rupe za vođenje, a zatim uvećao udesno veličina za propuštanje navoja posuda ili navoja dugmadi pomoću mini bušilice. Potrošio sam manje -više 2 sata da dovršim kutiju. Shvatio sam i male rupe i zalijepio LED diode na svoje mjesto.

Također sam izbušio rupu za MIDI OUT konektor i drugu za arduino konektor za napajanje (direktno sam koristio ugrađeni USB konektor za napajanje i čvrsto zaključao arduino MEGA na mjestu).

UPOZORENJE: Uvijek UVIJEK nosite zaštitu za oči i ruke tokom bušenja, bez obzira na materijal na kojem radite (plastika, drvo, metali, kompoziti … nije važno: u opasnosti ste i u pogledu električnih alata i iverja materijala erodiranog/pečenog) iz alata za pomicanje).

Zatim sam stavio sve lonce i dugmad i lemio komponente prema priloženoj slici. Efektivan način da se smanji težina konačnog objekta (i dužina kabela) je da se svi lonci spoje na žicu i na 5V liniji i na GND liniji.

I prije nego što iko upita: Znam, ta kutija koju sam koristio je ružna! Ali bilo je besplatno i ništa nije bolje:)

Korak 4: Ožičenje

Ožičenje
Ožičenje

Ožičenje je jednostavno, poput povezivanja potenciometra (x16), dugmeta (x4) i LED (x4) na ploču mikrokontrolera Arduino. Ovdje su opisane sve osnove Arduina:)

U prilogu je ožičenje. Primijetite da:

- Koriste se svi analogni pinovi (od A0 do A15), po jedan za svaki potenciometar;

- koriste se 4 digitalna pina (ulazi) (od D51, D49, D47, D45), po jedan za svako dugme;

- druga 4 digitalna pina (izlazi) koriste se za LED diode (D43, D41, D39, D37);

- MIDI izlaz je vrlo jednostavan i traži dva otpornika od 220 ohma (ali će raditi do 150 ohma)

- Dugmad ne traže otpornike za povlačenje jer skica aktivira unutrašnje Arduino otpornike.

- Svaka LED dioda traži otpornik za ograničavanje struje (200-220 ohma je u redu za zelene LED diode).

Koristio sam navedene digitalne pinove za robu, ali to nisu "posebni" pinovi (ovdje ne koristimo pwm mogućnosti nekih pinova ili neku drugu karakteristiku specifičnu za pin): možete postaviti svoje omiljene digitalne pinove, ali ne zaboravite izmijeniti kôd u skladu s tim ili vaša dugmad/LED diode neće raditi!

Imajte na umu da je MIDI OUT veza na slici prikaz FRONT (ne pogled straga).

Korak 5: Softver - neke veze s teorijom

Neću objašnjavati cijelu teoriju iza poruka System Exclusive ili Control Change jer postoji mnogo dobrih članaka i glupo je prepisivati ono što je već napisano.

Samo kratka veza za implementaciju Roland SysExa:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (ENGLESKI)

- https://www.2writers.com/eddie/tutsysex.htm (ENGLESKI)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ENGLESKI)

- https://www.audiocentralmagazine.com/system-exclusi… (ITALIANO)

i neke veze za MIDI općenito:

-

-https://www.music-software-development.com/midi-tut…

Korak 6: Softver - skica

Ovdje je u prilogu skica koju trebate postaviti na svoj Arduino Mega.

Pokušao sam programer držati što univerzalnijim, što znači da sam pokušao smanjiti komade koda specifične za sintetiku. Pokušao sam zadržati kôd što jednostavnijim. Dodavanje sekvencera koraka učinilo je stvari složenijima, a kôd neurednijim, svejedno je za mene vrijedilo. Čuvanje koda "univerzalnim" je razlog zašto je raspored kontrolera tako "slučajan": slijedi redoslijed parametara MIDI implementacije proizvođača sintetičara definiranog u priručniku. U početku bi moglo biti zbunjujuće, ali na to ćete se vrlo brzo naviknuti.

Zadani kôd/skica/firmver podržava "samo" 48 parametara (tri stranice sa po 16 gumba svaki) pa ne može biti moguće kontrolirati sve MIDI poruke koje podržava vaš sintetizator (razmislite o Access Virusu ili Nonova Supernovi: prihvaćaju više ili manje 110 parametara usklađenih s MIDI -jem). Skicu možete jednostavno promijeniti da podržava više poruka, ako je potrebno.

Zapravo su podržane SysEx poruke kompatibilne s Roland Alpha-Juno, JX8P, Korg DW8000 i Oberheim Matrix 6. Ostavio sam kôd za kompatibilne poruke Juno 106 u slučaju da vam je to potrebno.

Za Matrix 6 morao sam odabrati parametre za kontrolu. Izostavio sam treću kovertu, drugu rampu i još nešto. Matrica se ionako ne može kontrolirati putem MIDI -ja, pa je i ona vani. Potreban vam je ažurirani firmver (verzija 2.14 ili novija) i trebate postaviti parametar "Master -> Sysex Enable" na "3".

Sat je nekako neispravan (sat mora biti strogo savršen da bi radio kako treba i vjerovatno dva pristupa koja sam usvojio tamo gdje nisu efikasni). Podrazumevano je onemogućeno.

Kôd sadrži komentare, pa nema potrebe za daljim komentarima ovdje.

Kao i uvijek: zapamtite da ja u stvarnom životu nisam koder i zasigurno postoje bolji načini da kodiramo ono što nam je potrebno ovdje. Ako ste koder i imate prijedlog, dobrodošli ste! Molimo vas da mi pošaljete bilo koju varijaciju koja može povećati efikasnost/efektivnost koda i ja ću je uključiti u glavnu skicu (očigledno citirajući saradnika!).

Uvijek naučim nešto novo čitajući neki dobar kod kodera;)

Korak 7: Povezani projekti

Koliko ja znam, nema kontrolera i sekvencera za MIDI parametre (možda stari Behringer BCR2000 sa izmijenjenim firmverom?)

U svakom slučaju, ako niste skloni realizirati ovakvu kutiju, ali ste jako zainteresirani za jeftina rješenja za daljinsko upravljanje parametrima sinteze, razmislite o ovim drugim alternativama:

- CTRL MIDI uređivač: ovo je briljantan, besplatan program otvorenog koda koji radi na win/Linux/mac i može pretvoriti vaš računar u potpuni kontroler za SysEx sintetičare

- "junosex" CC pretvarač Davida Konsumara: ovaj projekt zahtijeva manji hardverski rad s vaše strane i ideja je odlična - arduino bazirani CC / SysEx pretvarač koji vam omogućuje korištenje uobičajenog MIDI kontrolera koji nije SysEx (tj. AKAI MPK glavna tastatura) da razgovarate sa vašim sintetizatorom spremnim za SysEx

Preporučuje se: