Obsah:

(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer ): 7 krokov (s obrázkami)
(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer ): 7 krokov (s obrázkami)

Video: (takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer ): 7 krokov (s obrázkami)

Video: (takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer ): 7 krokov (s obrázkami)
Video: CS50 2014 – 4-я неделя, продолжение 2024, November
Anonim
(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer …)
(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer …)
(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer …)
(takmer) Univerzálny MIDI SysEx CC programátor (a sekvencer …)

V polovici osemdesiatych rokov výrobcovia syntetizátorov zahájili proces „menej je lepšie“, ktorý viedol k syntetizátorom barebones. To umožnilo zníženie nákladov na strane výrobcu, ale spôsobilo, že proces opravy bol pre konečného užívateľa nemožný, ak nie nemožný.

Sami výrobcovia a spoločnosti tretích strán realizovali voliteľné škatule plné gombíkov a/alebo posuvníkov, aby ste sa mohli skutočne „hrať“s tónmi syntetizátorov, ale tie sú v dnešnej dobe hlúpo predražené a ako vždy sme nútení nájsť lacné riešenia sami;)

Tento projekt vyšiel z mojej potreby jednoducho naprogramovať záplaty na niektoré z mojich najnovších nákupov syntetizátorov: Roland Alpha Juno 2 a JX8P. Začalo to ako jednoduchý ovládač SysEx, potom to na mne vyrástlo a stalo sa z toho niečo komplexnejšie, pričom cestou boli podporované ďalšie syntetizátory (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) a vstavaný sekvencer.

V tomto návode vám ukážem, ako realizovať svoj vlastný ovládač: lacný nástroj, ktorý napodobňuje tieto cenovo dostupné ovládacie boxy parametrov … a ďalšie (ďalšie informácie nájdete v čítaní …).

Krok 1: Čo to vlastne je (a čo nie je …)

Čo to vlastne je (a čo nie je …)
Čo to vlastne je (a čo nie je …)
Čo to vlastne je (a čo nie je …)
Čo to vlastne je (a čo nie je …)
Čo to vlastne je (a čo nie je …)
Čo to vlastne je (a čo nie je …)

Ovládač MIDI SysEx a Control Change je v zásade 16 knobov (potenciometrov) a 4 tlačidlá MIDI ovládača. Predvolený náčrt spracováva tri „stránky“, celkovo teda 48 parametrov syntetického tónu.

Nastavil som ovládač tak, aby bol kompatibilný so správami MIDI so zmenou ovládania (jednoduchý a „globálny“typ správy MIDI široko používaný výrobcami syntetizátorov najmä z 90. rokov) a správami SysEx (ďalší typ správy MIDI, menej všeobecný a silne špecifický pre syntetizátory) používa sa v 80. rokoch).

Ovládač je v predvolenom nastavení kompatibilný najmä s:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

- Oberheim Matrix 6/6R (> 2,14 firmvér)

- Sekvenčné obvody MAX/SixTrak.

Nakoniec môžete ovládaču povoliť pôsobenie na akomkoľvek syntetizátore, ktorý môže prijímať správy o zmene MIDI ovládania (CC), ale v predvolenom nastavení je deaktivovaný.

Keďže projekt má povahu open source, je veľmi ľahké podporiť akéhokoľvek iného syntetizátora podľa vášho výberu (podrobnosti nájdete v kroku kódu).

Rozloženie parametrov tónu so všetkými tými číslami môže byť spočiatku mätúce, ale nie je to „náhodné“, ako by to mohlo vyzerať: dodržiava poradie implementačnej tabuľky MIDI výrobcu. Toto bola voľba dizajnu, aby bol kód jednoduchý a „univerzálny“.

Obrázkové listy s „rozložením“4x4, ktoré som realizoval pre Alpha-Junos, JX8P, DW8000, Matrix 6 a MAX/SixTrak, si môžete stiahnuť na tejto stránke: modré parametre sú tie, ktoré môžete vyladiť na strane 1, čierne na strane 2 a oranžové na strane 3.

Aj keď ovládač nemá obrazovku, pohrávanie sa so syntetizátormi, ktoré vám v reálnom čase ukazujú, aký parameter sa ladí, robí z procesu vytvárania patche radosť. Napríklad JX8P a Matrix 6 sú toho schopné; Alpha Juno vám namiesto toho nezobrazuje zmenený parameter a robí veci o niečo ťažšími (vytváranie úžasných opráv je však určite možné a jednoduchšie ako pomocou vstavaného rozhrania bez gombíkov); DW8000 má iba numerické displeje, ale svoje vylepšenia môžete vidieť v reálnom čase, takže sa medzi nimi nachádza niečo medzi tým.

Čo s tými tlačidlami tam?

Prvá (v mojom rozložení vľavo hore) je na surfovanie po stránke: pri každom stlačení tlačidla preskočíte na stránku nasledujúceho parametra. LED diódy indikujú, na ktorej stránke sa nachádzate.

Druhý po stlačení vám pošle opravu, pri ktorej pracujete, späť na syntetizátor (predstavte si to: urobili ste náplasť svojho života, potom ste sa dotkli tlačidla programu na povrchu syntetizátora a načítala sa oprava konkrétneho tlačidla … všetka vaša práca je preč !). Pomocou tohto tlačidla môžete odoslať všetky hodnoty, ktoré si programátor zapamätal počas posledného procesu opravy. Tento proces vyvolania opravy nefunguje, ak znova stlačíte randomizer (proces randomizácie prepíše všetky parametre v pamäti) a bude účinný iba pre parametre, ktoré ste upravili aspoň raz. Najnovšia oprava sa po vypnutí neuchováva v pamäti.

Tretia je pre sekundárnu funkciu: randomizer/patcher! Otočením gombíkov, proti ktorým chcete, sa parameter, na ktorý pôsobia, uzamkne na minimálnu hodnotu (tj. Oscilátor LFO, obálka oscilátora atď.) Alebo otáčaním úplne v smere hodinových ručičiek maximalizujete hodnotu (tj. Hlasitosť mixu oscilátora, hlasitosť VCA atď.) A stlačte tlačidlo na spustenie procesu randomizácie pre všetky ostatné parametre.

Štvrté tlačidlo slúži na aktiváciu veľkonočného vajíčka (druh …), ktoré som umiestnil do kódu, keď som si všimol, že rozloženie bolo ideálne pre … 16 -stupňový MIDI sekvencer! Presne: stlačte štvrté tlačidlo (tlačidlo MODE), ovládač prejde do „režimu sekvencera“a budete môcť spúšťať poznámky podobným spôsobom ako starý analógový sekvencer. Pekne uh!

Opätovným stlačením tlačidla MODE sa vrátite do režimu ovládača/opravy.

A čo tie LED diódy?

Každé tlačidlo obsahuje 4 LED diódy (vpravo od každého tlačidla v mojom rozložení); tieto LED diódy majú viac pólových žiaroviek:

1) povedia vám, na ktorej stránke s parametrami sa nachádzate (horná dióda LED svieti, keď ste na stránke 1, kontrolka zospodu svieti, keď je stránka 2 aktívna, dióda 3 svieti … zistili ste to sami). Máme obmedzený počet stránok na 3 bankomaty, ale kód je možné ľahko vyladiť tak, aby zvládol viac stránok;

2) druhá LED dióda indikuje parametre stránky 2 A svieti, keď mikrokontrolér odosiela predchádzajúcu opravu (vyvolanie opravy);

3) tretia dióda LED indikuje parametre na strane 3 A počas procesu randomizácie svieti.

Štvrtá LED dióda nerobí nič v režime MIDI kontroléra a slúži na globálnu zmenu REŽIMU.

Všetky tieto funkcie sa prenášajú ako správy MIDI, takže aby bol váš syntetizátor účinný, musí byť schopný/povolený prijímať a interpretovať tento druh správ

Krok 2: „Skrytý“16 -stupňový sekvencer

The
The

Ako som už povedal, pri testovaní ovládača som zistil, že by bolo skvelé nechať bežať sekvenciu nôt, aby som mohol vyladiť parametre syntetizátora a získať lepšiu predstavu o konečnom účinku na tón. Mám softvérový sekvencer (seq24 mám tak rád!), Ale tento hardvér je takmer PERFEKTNÝ 16-stupňový sekvencer! Potom už bolo len otázkou kódu, ako ho implementovať.

Medzi režimom ovládača a režimom sekvencera môžete prepínať stlačením tlačidla č. 4 (tlačidlo MODE).

V režime sekvenceru tlačidlá fungujú odlišne a diódy LED vám poskytujú nové informácie:

- prvé tlačidlo (tlačidlo SHIFT) po stlačení umožňuje úpravu tempa, dĺžky tónu, kanálov a oktáv; hodnota tempa je daná polohou prvého potenciometra, dĺžka noty je vypočítaná z druhej polohy potenciometra, MIDI kanály z tretej a štvrtej polohy potenciometra a oktáva (-1 o až +2) z piateho potenciometra. Tempo môžete ovládať od 40 BPM (otočte potenciometer č. 1 úplne proti smeru hodinových ručičiek, pričom držte tlačidlo #1 stlačené) až po takmer 240 BPM (otáčajte potenciometer č. 1 úplne v smere hodinových ručičiek, zatiaľ čo tlačidlo č. 1 držíte stlačené). Dĺžku tónov môžete nastaviť na noty na polovicu, štvrťku, osmičky, noty na šestnástky otáčaním hrnca č. 2 a podržaním tlačidla SHIFT. MIDI kanály (primárny a sekundárny kanál) môžete nastaviť od 1 do 16. Základný rozsah not (od C2 do F#4) je možné znížiť o jednu oktávu alebo zvýšiť o jednu alebo dve oktávy.

Štandardne je tempo nastavené na 120 úderov za minútu a dĺžka noty na štvrťtóny.

- druhé tlačidlo spustí a zastaví sekvenciu poznámok. Ako bolo povedané, ak zmeníte režim stlačením tlačidla č. 4 (REŽIM) počas behu sekvencie, prejdete do režimu ovládača, ale sekvencia bude pokračovať.

- tretie tlačidlo je PANIC! Jeho stlačením sa všetky poznámky vypnú.

- štvrtý sa používa na prepínanie medzi globálnymi režimami (prechod alebo sekvencer), keď nie je stlačené tlačidlo č. 1, alebo medzi režimami sekvencie (pozri ďalej), keď je stlačený #1.

V režime sekvencera môžete stlačením tlačidla výberu režimu a podržaním tlačidla #1 (SHIFT) prepínať medzi 3 rôznymi režimami sekvencie:

1 - 16 krokov mono sekvencie

2 - 16 kroková poly sekvencia: spustia sa aj noty o oktávu nižšie, ako sú definované v potoch (to odčerpáva 2 hlasy za úder)

3 - 8 -stupňová poly sekvencia, dvojkanálový: dve paralelné 8 -krokové sekvencie sú odoslané do dvoch rôznych kanálov (štandardne CH1 a CH2); nastavením rovnakej hodnoty kanála na primárnom aj sekundárnom kanáli môžete mať k dispozícii dve paralelné 8-krokové sekvencie, ktoré budú hrať rovnaký (polyfónny) syntetizátor.

O diódach LED: akonáhle vstúpite do režimu sekvencera, rozsvietia sa všetky štyri kontrolky. Keď spustíte sekvenciu, diódy LED budú sledovať sekvenciu (alebo sekvencie). Umiestnil som jednu LED diódu každé štyri potenciometre a je to pre mňa dosť dobré. Bolo by jednoduché upraviť náčrt tak, aby zvládol 16 LED diód, jednu pre každý váš krok.

Chybné funkcie krokového sekvencera, ktoré niekto môže považovať za potrebné: MIDI synchronizácia IN, podržanie krokov (môžete vypnúť iba krok), CV výstup.

Implementoval som hodiny OUT, ale je to nejaká chyba. Na tento účel som vyskúšal dva prístupy (jeden s prerušením a jeden bez prerušenia časovača), ale obidva boli nedokonalé (alebo celkom zlyhali). MIDI hodiny musia byť striktne dokonalé, aby fungovali dlhodobo. Hodinový signál je napriek tomu odoslaný a môžete ho deaktivovať priamo v náčrte (podrobnosti nájdete neskôr).

Všimnite si, že tento krokový sekvencer je MIDI alebo digitálny, ak chcete, takže aby fungoval, musí byť pripojený k syntetizátoru, ktorý je schopný prijímať a interpretovať tieto druhy správ

Krok 3: Potrebný hardvér a budovanie

Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba
Potrebný hardvér a stavba

Po všetkých týchto slovách sa zabavte!

Ideme bežnou cestou Arduino. Použil som Arduino MEGA kvôli veľkému množstvu analógových vstupov (chceme krabicu plnú gombíkových gombíkov, nie ?!:)).

Arduino MEGA dokáže spracovať najmä 16 analógových vstupov (s určitým vyladením hardvéru, t. J. Zmiešaním, môžete to zvýšiť, ale touto cestou nepôjdeme), takže budeme odosielať 48 MIDI správ prostredníctvom 16 potenciometrov. Každý potenciometer potom bude ovládať tri parametre, jeden pre každú „stránku“; stránky sa vyberajú prepínacím tlačidlom.

Zoznam hardvéru:

- 1x Arduino MEGA

- 16x lineárne, jednootáčkové 10 K ohmové potenciometre

- 16x gombíky hrnca

- 4x okamžité stlačenie tlačidiel

- 4x LED

- odpor 6 x 220 ohmov

- 1x MIDI konektor

- 1x box na projekty ABS

Nejaký kábel, spájkovací drôt a šesť - osem hodín voľného času.

Použil som perfboard a niekoľko kolíkových konektorov na realizáciu akéhosi štítu, na ktorý som spájkoval odpory a nasmeroval káble. To má tú výhodu, že vám umožní vybrať si Arduino a použiť ho na iné projekty (všetkým nám v určitom bode dochádzajú dosky Arduino!). Nie je to povinné a ďalším dobrým prístupom by mohlo byť odpájanie pinderov arduino MEGA a spájkovacích káblov priamo na mieste.

Použil som odpory 200 ohmov namiesto odporov 220 ohmov a fungujú perfektne; Stavil by som sa, že aj 150 ohmové odpory budú fungovať skvele (pre komunikáciu MIDI aj pre diódy LED).

Na tvarovanie škatule som najskôr na povrch škatule naniesol nejaký priľnavý papier, meral som, kde by mali byť vyvŕtané otvory (mal som 3 cm od otvoru k otvoru, aby sa zmestili všetky hrnce), urobil vodiace otvory a potom ich zväčšil doprava veľkosť, aby nechali prevliekať hrnce alebo gombíky pomocou mini vŕtačky. Na dokončenie škatule som strávil viac -menej 2 hodiny. Uvedomil som si aj malé diery a nalepil LED diódy na miesto.

Tiež som vyvŕtal otvor pre konektor MIDI OUT a ďalší pre napájací konektor arduino (použil som priamo vstavaný napájací konektor USB a arduino MEGA som pevne zaistil na mieste).

UPOZORNENIE: Pri vŕtaní VŽDY VŽDY noste ochranu očí a rúk, bez ohľadu na materiál, na ktorom pracujete (plast, drevo, kovy, kompozity … na tom nezáleží: ste v ohrození, pokiaľ ide o elektrické náradie a triesky z erodovaného/páleného materiálu z pohybujúceho sa nástroja).

Potom som umiestnil všetky hrnce a gombíky a spájkoval komponenty podľa priloženého obrázku. Účinným spôsobom, ako znížiť hmotnosť konečného predmetu (a dĺžku káblov), je prepojiť všetky nádoby na linke 5V aj GND.

A než sa niekto spýta: Viem, tá škatuľka, ktorú som použil, je škaredá! Ale bolo to zadarmo a nič neprekonáva zadarmo:)

Krok 4: Zapojenie

Elektrické vedenie
Elektrické vedenie

Zapojenie je jednoduché ako zapojenie potenciometra (x16), tlačidla (x4) a LED (x4) k doske mikrokontroléra Arduino. Tu sú popísané všetky základy Arduina:)

Pripojené sú rozvody. Všimni si:

- Sú použité všetky analógové piny (od A0 do A15), jeden pre každý potenciometer;

- Sú použité 4 digitálne piny (vstupy) (od D51, D49, D47, D45), jeden pre každé tlačidlo;

- ďalšie 4 digitálne piny (výstupy) sú použité pre LED diódy (D43, D41, D39, D37);

- Pripojenie MIDI výstupu je veľmi jednoduché a vyžaduje dva rezistory 220 ohmov (ale fungovať bude až 150 ohmov)

- Tlačidlá nevyžadujú rozbaľovacie odpory, pretože náčrt aktivuje vnútorné výsuvné odpory Arduina.

- Každá LED dióda vyžaduje prúd obmedzujúci prúd (200-220 ohmov je v poriadku pre zelené LED diódy).

Uvedené digitálne piny som použil na komoditu, ale nie sú to „špeciálne“piny (tu nepoužívame schopnosť PWM niektorých pinov ani inú funkciu špecifickú pre pin): môžete si nastaviť svoje obľúbené digitálne piny, ale nezabudnite ich upraviť podľa toho kód alebo vaše tlačidlá/diódy LED nebudú fungovať!

Všimnite si prosím, že pripojenie MIDI OUT na obrázku je predný pohľad (nie zadný pohľad).

Krok 5: Softvér - nejaký odkaz na teóriu

Nebudem vysvetľovať celú teóriu správ exkluzívnych pre systém alebo o zmene riadenia, pretože existuje veľa dobrých článkov a je hlúpe prepisovať už napísané.

Len malý odkaz na implementáciu Roland SysEx:

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

- https://www.2writers.com/eddie/tutsysex.htm (ANGLIČTINA)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ANGLIČTINA)

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

a nejaký odkaz na MIDI všeobecne:

-

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

Krok 6: Softvér - skica

Tu je náčrt, ktorý by ste mali nahrať do svojho Arduino Mega.

Snažil som sa udržať programátora čo najuniverzálnejšieho, čo znamená, že som sa pokúsil obmedziť časti kódu špecifické pre syntetizátory. Snažil som sa udržať kód čo najjednoduchší. Pridaním krokového sekvencera sa veci stali komplexnejšími a kódom bol neporiadnejší, napriek tomu to pre mňa stálo za to. Ponechanie kódu „univerzálneho“je dôvod, prečo je usporiadanie radiča také „náhodné“: dodržiava poradie parametrov implementácie MIDI syntetizátora, ktoré výrobca definoval v príručke. Na začiatku to môže byť mätúce, ale veľmi rýchlo si na to zvyknete.

Predvolený kód/náčrt/firmvér podporuje „iba“48 parametrov (tri strany po 16 gombíkoch), takže nebolo možné ovládať všetky správy MIDI podporované vašim syntetizátorom (premýšľajte nad programom Access Virus alebo Novation Supernova: akceptujú viac alebo menej 110 parametrov kompatibilných s MIDI). V prípade potreby môžete náčrt ľahko zmeniť tak, aby podporoval viac správ.

V skutočnosti sú podporované správy SysEx kompatibilné s Roland Alpha-Juno, JX8P, Korg DW8000 a Oberheim Matrix 6. Nechal som kód pre správy kompatibilné s Juno 106 pre prípad, že by ste to potrebovali.

Pre Matrix 6 som musel vybrať parametre, ktoré chcem ovládať. Vynechal som tretiu obálku, druhú rampu a ešte niečo. Maticu nie je možné ovládať pomocou MIDI, takže je tiež vonku. Potrebujete aktualizovaný firmvér (ver. 2.14 alebo novší) a parameter „Master -> Sysex Enable“by ste mali nastaviť na „3“.

Zatlačenie je nejakým spôsobom chybné (hodiny musia byť striktne dokonalé, aby fungovali tak, ako by mali, a pravdepodobne dva prístupy, ktoré som prijal, kde nie sú účinné). Štandardne je vypnutý.

Kód obsahuje komentáre, takže tu nie je potrebné ďalšie komentáre.

Ako vždy: pamätajte, že nie som programátor v skutočnom živote a určite existujú lepšie spôsoby, ako kódovať to, čo tu potrebujeme. Ak ste programátor a máte návrhy, ste vítaní! Pošlite mi prosím akúkoľvek variáciu, ktorá môže zvýšiť účinnosť/efektivitu kódu, a ja ho zaradím do hlavného náčrtu (samozrejme s odvolaním sa na prispievateľa!).

Vždy sa niečo nové naučím prečítaním dobrého kodéra;)

Krok 7: Súvisiace projekty

Pokiaľ viem, neexistuje tam MIDI parameter radič a sekvencer (možno starý Behringer BCR2000 s upraveným firmvérom?)

Každopádne, ak nie ste náchylní realizovať takýto box, ale zaujímate sa o lacné riešenia na diaľkové ovládanie vašich parametrov syntetizátora, zvážte tieto ďalšie alternatívy:

- CTRL MIDI editor: je to brilantný bezplatný program s otvoreným zdrojovým kódom spustený na systéme win/Linux/mac, ktorý dokáže z vášho počítača urobiť úplný ovládač pre syntetizátory SysEx

- CC prevodník „junosex“Davida Konsumera: tento projekt si vyžaduje menšiu hardvérovú prácu na vašej strane a nápad je skvelý - arduino prevodník CC na SysEx, ktorý vám umožní používať bežný MIDI ovládač, ktorý nie je SysEx (tj. Hlavná klávesnica AKAI MPK)) hovoriť so svojim syntetizátorom pripraveným pre SysEx

Odporúča: