Obsah:

(téměř) Universal MIDI SysEx CC Programmer (and Sequencer ): 7 Steps (with Pictures)
(téměř) Universal MIDI SysEx CC Programmer (and Sequencer ): 7 Steps (with Pictures)

Video: (téměř) Universal MIDI SysEx CC Programmer (and Sequencer ): 7 Steps (with Pictures)

Video: (téměř) Universal MIDI SysEx CC Programmer (and Sequencer ): 7 Steps (with Pictures)
Video: MIDI System Exclusive (SysEx): Quick Summary 2024, Listopad
Anonim
(téměř) Universal MIDI SysEx CC Programmer (and Sequencer…)
(téměř) Universal MIDI SysEx CC Programmer (and Sequencer…)
(téměř) Universal MIDI SysEx CC Programmer (and Sequencer…)
(téměř) Universal MIDI SysEx CC Programmer (and Sequencer…)

V polovině osmdesátých let zahájili výrobci syntetizátorů proces „méně je lepší“, který vedl k barebonesovým syntetizátorům. To umožnilo snížení nákladů na straně výrobce, ale způsobilo, že proces opravy byl pro konečného uživatele zdlouhavý, ne -li nemožný.

Sami výrobci a společnosti třetích stran realizovaly volitelné krabice plné knoflíků a/nebo posuvníků, které vám umožní skutečně si „hrát“s vašimi zvuky syntetizátorů, ale ty jsou v dnešní době hloupě předražené a jako vždy jsme nuceni sami hledat levná řešení;)

Tento projekt vzešel z mé potřeby snadno naprogramovat patche na některé z mých posledních nákupů syntezátorů: Roland Alpha Juno 2 a JX8P. Začalo to jako jednoduchý řadič SysEx, pak to na mě vyrostlo a stalo se z toho něco složitějšího, na cestě byly podporovány další syntezátory (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) a vestavěný sekvencer.

V tomto pokynu vám ukážu, jak realizovat svůj vlastní řadič: levný nástroj, který emuluje ty cenově dostupné ovládací panely parametrů … a další (podrobnosti čtěte dále …).

Krok 1: Co přesně je tato věc (a co není …)

Co přesně je tato věc (a co není …)
Co přesně je tato věc (a co není …)
Co přesně je tato věc (a co není …)
Co přesně je tato věc (a co není …)
Co přesně je tato věc (a co není …)
Co přesně je tato věc (a co není …)

Řadič MIDI SysEx a Control Change je v podstatě 16 knobů (potenciometrů) a 4 tlačítek MIDI kontroleru. Výchozí skica zpracovává tři „stránky“, celkem tedy 48 parametrů syntetického tónu.

Nastavil jsem ovladač tak, aby byl kompatibilní se zprávami MIDI pro změnu ovládání (jednoduchý a „globální“typ zprávy MIDI široce používanou výrobci syntetizátorů zejména z 90. let) a zprávami SysEx (další typ zprávy MIDI, méně obecný a silně specifický pro syntetizátory) používá se v 80. letech).

Regulátor je ve výchozím nastavení kompatibilní zejména s:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

- Oberheim Matrix 6/6R (> 2,14 firmware)

- Sekvenční obvody MAX/SixTrak.

Nakonec můžete řadiči povolit, aby fungoval na jakémkoli syntetizátoru, který může přijímat zprávy o změně MIDI řízení (CC), ale ve výchozím nastavení je zakázán.

Vzhledem k tomu, že projekt má povahu open source, je velmi snadné podporovat jakýkoli jiný synth podle vašeho výběru (podrobnosti najdete v kroku kódu).

Rozložení parametrů tónu se všemi těmi čísly mohlo být zpočátku matoucí, ale není to „náhodné“, jak by to mohlo vypadat: dodržuje pořadí implementační tabulky výrobce MIDI. Toto byla designová volba, aby byl kód jednoduchý a „univerzální“.

Obrazové listy s „rozložením“4x4, které jsem realizoval pro Alpha-Junos, JX8P, DW8000, Matrix 6 a MAX/SixTrak, si můžete stáhnout na této stránce: modré parametry jsou ty, které můžete upravit na stránce 1, černé na stránce 2 a oranžové na straně 3.

I když ovladač nemá obrazovku, pohrávání si se syntetizátory, které vám v reálném čase ukazují, jaký parametr se ladí, dělá z procesu vytváření patche radost. Například JX8P a Matrix 6 toho jsou schopné; Alpha Juno vám místo toho nezobrazuje změněný parametr a dělá věci trochu těžšími (ale vytváření úžasných záplat je rozhodně proveditelné a jednodušší než pomocí vestavěného rozhraní bez knoflíků); DW8000 má pouze číselné displeje, ale svá vylepšení můžete vidět v reálném čase, takže je mezi tím.

A co ta tlačítka tam?

První (vlevo nahoře v mém rozložení) je pro procházení stránky: při každém stisknutí tlačítka přeskočte na stránku dalšího parametru. LED diody indikují, na které stránce se nacházíte.

Druhý po stisknutí vám pošle opravu zpět při práci zpět na syntetizátor (obrázek: udělali jste opravu svého života, poté se dotkli tlačítka programu na povrchu syntetizátoru a byla načtena oprava specifická pro tlačítko … veškerá vaše práce je pryč !). Pomocí tohoto tlačítka můžete odeslat všechny hodnoty, které si programátor pamatoval během posledního procesu opravy. Tento proces odvolání opravy nefunguje, pokud znovu stisknete randomizer (proces randomizace přepíše všechny parametry v paměti) a bude účinný pouze u parametrů, které jste alespoň jednou upravili. Nejnovější oprava není po vypnutí uložena v paměti.

Třetí je pro sekundární funkci: randomizer/patcher! Otočením plných knoflíků proti směru hodinových ručiček chcete parametr, na který působí, zablokovat na minimální hodnotu (tj. Oscilátor LFO, obálka oscilátoru atd.) Nebo otáčením zcela ve směru hodinových ručiček maximalizovat hodnotu (tj. Hlasitost mixu oscilátoru, hlasitost VCA atd.) A stiskněte tlačítko pro spuštění procesu randomizace pro všechny ostatní parametry.

Čtvrté tlačítko slouží k aktivaci velikonočního vajíčka (jakési…), které jsem vložil do kódu poté, co jsem si všiml, že rozložení bylo ideální pro … 16krokový MIDI sekvencer! Přesně: stiskněte čtvrté tlačítko (tlačítko MODE), ovladač vstoupí do „režimu sekvenceru“a budete moci spouštět poznámky podobným způsobem jako starý analogový sekvencer. Pěkně!

Opětovným stisknutím tlačítka MODE se vrátíte zpět do režimu ovladače/opravy.

A co ty LED diody?

Každé tlačítko obsahuje 4 LED diody (vpravo od každého tlačítka v mém rozložení); tyto LED diody mají více lišt:

1) řeknou vám, na které stránce s parametry jste (horní LED dioda svítí, když jste na stránce 1, dioda dole svítí, když je aktivní stránka 2, LED 3 svítí … na to jste přišli sami). Jsme omezeni na 3 stránky ATM, ale kód lze snadno vyladit, aby zvládl více stránek;

2) druhá LED dioda indikuje parametry stránky 2 A svítí, když mikrokontrolér odesílá předchozí opravu (vyvolání opravy);

3) třetí LED dioda indikuje parametry na straně 3 AND během procesu randomizace svítí.

Čtvrtá kontrolka LED v režimu MIDI kontroleru nedělá nic a slouží ke globální změně režimu.

Všechny tyto funkce jsou přenášeny jako MIDI zprávy, takže aby byl váš synth účinný, musí být schopen/povolen přijímat a interpretovat tento druh zpráv

Krok 2: „Skrytý“16krokový sekvencer

The
The

Jak již bylo řečeno, při testování ovladače jsem si uvědomil, že by bylo skvělé nechat posloupnost not běžet, abych mohl vyladit parametry syntezátoru a získat lepší představu o konečném účinku na tón. Mám softwarový sekvencer (seq24 mám tak rád!), Ale tento hardware je téměř PERFEKTNÍ 16krokový sekvencer! Pak už to byla jen otázka kódu k jeho implementaci.

Mezi režimem ovladače a režimem sekvenceru můžete přepínat stisknutím tlačítka #4 (tlačítko MODE).

V režimu sekvenceru tlačítka fungují odlišně a LED diody vám poskytují nové informace:

- první tlačítko (tlačítko SHIFT) po stisknutí umožňuje úpravu tempa, délky not, kanálů a oktáv; hodnota tempa je dána polohou prvního potenciometru, délka noty se počítá z druhé polohy potenciometru, MIDI kanály z pozic třetího a čtvrtého potenciometru a oktáva (-1 o až +2) z pátého potu. Tempo můžete ovládat od 40 BPM (otočte potenciometr č. 1 proti směru hodinových ručiček, zatímco držíte tlačítko #1 stisknuté) až po téměř 240 BPM (otáčejte potenciometr č. 1 ve směru hodinových ručiček, zatímco držíte tlačítko #1 stisknuté). Délku not můžete nastavit na poloviční notu, čtvrťovou notu, osmičkovou notu, šestnáctinovou notu otáčením potu #2 a podržením tlačítka SHIFT. Můžete nastavit MIDI kanály (primární kanál a sekundární kanál) od 1 do 16. Rozsah základních not (od C2 do F#4) lze snížit o jednu oktávu nebo zvýšit o jednu nebo dvě oktávy.

Ve výchozím nastavení je tempo nastaveno na 120 BPM a délka noty na čtvrtiny.

- druhé tlačítko spustí a zastaví sekvenci not. Jak již bylo řečeno, pokud změníte režim stisknutím tlačítka #4 (MODE) během běhu sekvence, přejdete do režimu ovladače, ale sekvence bude pokračovat.

- třetí tlačítko je PANIC! Jeho stisknutím se všechny poznámky vypnou.

- čtvrtý slouží k přepínání mezi globálními režimy (přechod nebo sekvencer), když není stisknuto tlačítko č. 1, nebo mezi sekvenčními režimy (viz dále), když je stisknuto č. 1.

Pokud v režimu sekvenceru stisknete tlačítko výběru režimu a současně podržíte tlačítko #1 (SHIFT), můžete přepínat mezi 3 různými režimy sekvence:

1 - 16 kroků mono sekvence

2 - 16 kroků poly posloupnosti: spustí se také noty o oktávu nižší, než jaké jsou definovány poty (to odčerpá 2 hlasy za úder)

Polysekvence 3 - 8 kroků, dvoukanálový: dvě paralelní 8krokové sekvence jsou odesílány do dvou různých kanálů (standardně CH1 a CH2); nastavením stejné hodnoty kanálu na primárním i sekundárním kanálu můžete mít dvě paralelní 8krokové sekvence přehrávané stejným (polyfonním) syntezátorem.

O diodách LED: jakmile vstoupíte do režimu sekvenceru, rozsvítí se všechna čtyři světla. Když spustíte sekvenci, diody LED budou sledovat sekvenci (nebo sekvence). Umístil jsem jednu LED každé čtyři potenciometry a je to pro mě dost. Bylo by snadné upravit skicu tak, aby zvládla 16 LED diod, jednu pro každý krok.

Chybějící funkce krokového sekvenceru:

Implementoval jsem hodiny OUT, ale je nějakým způsobem buggy. Zkoušel jsem pro to dva přístupy (jeden s a jeden bez přerušení časovače), ale oba jsou nedokonalé (nebo totální selhání). MIDI hodiny musí být striktně dokonalé, aby fungovaly dlouhodobě. Hodinový signál je přesto odeslán a můžete jej deaktivovat přímo na skice (podrobnosti viz dále).

Všimněte si, že tento krokový sekvencer je MIDI, nebo digitální, pokud dáváte přednost, takže aby fungoval, musí být připojen k syntezátoru povolenému pro příjem a interpretaci těchto zpráv

Krok 3: Potřebný hardware a budování

Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba
Potřebný hardware a stavba

Po všech těchto slovech si užijte zábavu!

Jdeme společnou cestou Arduino. Použil jsem Arduino MEGA kvůli vysokému množství analogových vstupů (chceme krabici plnou knoflíkových knoflíků, ne ?!:)).

Zejména Arduino MEGA zvládne 16 analogových vstupů (s určitým hardwarovým vyladěním, tj. Muxováním to můžete zvýšit, ale touto cestou nepůjdeme), takže budeme odesílat 48 MIDI zpráv přes 16 potenciometrů. Každý potenciometr pak bude ovládat tři parametry, jeden pro každou „stránku“; stránky se vybírají přepínačem.

Seznam hardwaru:

- 1x Arduino MEGA

- 16x lineární, jednootáčkové 10 K ohmové potenciometry

- 16x knoflíky hrnce

- 4x okamžitá tlačítka

- 4x LED

- 6x odpor 220 ohmů

- 1x MIDI konektor

- 1x box s projekty ABS

Nějaký kabel, pájecí drát a šest - osm hodin volného času.

Použil jsem perfboard a několik pinových hlaviček, abych si uvědomil jakýsi štít, na který jsem připájel odpory a nasměroval kabely. To má tu výhodu, že vám umožní vytáhnout Arduino a použít ho pro jiné projekty (všichni v určitém okamžiku docházejí na deskách Arduino!). Není to povinné a dalším dobrým přístupem by mohlo být odpájení pinrderů arduino MEGA a pájecích kabelů přímo na místě.

Místo 220 ohmových rezistorů jsem použil odpory 200 ohmů a stejně fungují perfektně; vsadil bych se, že i 150 ohmové odpory budou fungovat skvěle (jak pro MIDI komunikaci, tak pro LED diody).

Chcete -li tvarovat krabici, nejprve jsem na povrch krabice nanesl nějaký přilnavý papír, změřil jsem, kde by měly být vyvrtány otvory (měl jsem 3 cm od otvoru k otvoru, aby se všechny hrnce vešly), vytvořil vodicí otvory a poté zvětšil doprava velikost, aby nechaly nitě hrnců nebo knoflíků projít mini vrtačkou. Strávil jsem více než 2 hodiny dokončením krabice. Také jsem si uvědomil malé otvory a nalepil LED na místo.

Také jsem vyvrtal otvor pro konektor MIDI OUT a další pro napájecí konektor arduino (použil jsem přímo vestavěný napájecí konektor USB a pevně zaaretoval arduino MEGA na místě).

UPOZORNĚNÍ: při vrtání VŽDY VŽDY noste ochranu očí a rukou, jakýkoli materiál, na kterém pracujete (plast, dřevo, kovy, kompozity … na tom nezáleží: jste v ohrožení jak s ohledem na elektrické nářadí, tak i třísky materiálu erodované/pálené z pohybujícího se nástroje).

Poté jsem umístil všechny hrnce a knoflíky a připájel součásti podle přiloženého obrázku. Účinným způsobem, jak snížit hmotnost konečného objektu (a délku kabelů), je řetězit všechny hrnce jak na 5V vedení, tak na GND vedení.

A než se někdo zeptá: Vím, ta krabice, kterou jsem použil, je ošklivá! Ale bylo to zdarma a nic není zadarmo:)

Krok 4: Zapojení

Elektrické vedení
Elektrické vedení

Zapojení věcí je snadné, jako zapojení potenciometru (x16), tlačítka (x4) a LED (x4) na desku mikrokontroléru Arduino. Zde jsou popsány všechny základy Arduina:)

Připojeno je zapojení. Všimněte si, že:

- Jsou použity všechny analogové piny (od A0 do A15), jeden pro každý potenciometr;

- Jsou použity 4 digitální piny (vstupy) (od D51, D49, D47, D45), jeden pro každé tlačítko;

- pro LED diody jsou použity další 4 digitální piny (výstupy) (D43, D41, D39, D37);

- Připojení MIDI výstupu je velmi jednoduché a vyžaduje dva 220 ohmové odpory (ale fungovat bude až 150 ohmů)

- Tlačítka nepožadují roztažené odpory, protože skica aktivuje vnitřní výsuvné odpory Arduina.

- Každá LED požádá o proud omezující odpor (200-220 ohmů je v pořádku pro zelené LED).

Uvedené digitální piny jsem použil pro komoditu, ale nejedná se o „speciální“piny (zde nepoužíváme schopnost PWM některých pinů nebo jinou funkci specifickou pro pin): můžete nastavit své oblíbené digitální piny, ale nezapomeňte upravit podle toho kód nebo vaše tlačítka/LED nebudou fungovat!

Všimněte si prosím, že připojení MIDI OUT na obrázku je PŘEDNÍ pohled (ne zadní pohled).

Krok 5: Software - Nějaký odkaz na teorii

Nebudu vysvětlovat celou teorii zpráv o systémových výlukách nebo změnách řízení, protože existuje spousta dobrých článků a je hloupé přepisovat to, co již bylo napsáno.

Jen rychlý odkaz na implementaci 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 nějaký odkaz na MIDI obecně:

-

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

Krok 6: Software - skica

Zde přikládáme skicu, kterou byste měli nahrát do svého Arduino Mega.

Snažil jsem se udržet programátor co nejuniverzálnější, což znamená, že jsem se pokusil omezit části kódu specifické pro syntetizátory. Snažil jsem se udržet kód co nejjednodušší. Přidáním krokového sekvenceru se věci staly složitějšími a kód více chaotický, každopádně mi to za to stálo. Udržování kódu „univerzální“je důvodem, proč je uspořádání řadiče tak „náhodné“: řídí se pořadím parametrů implementace MIDI, kterou výrobce synth definoval v manuálu. Zpočátku to může být matoucí, ale budete si na to velmi rychle zvykat.

Výchozí kód/skica/firmware podporuje „pouze“48 parametrů (tři stránky po 16 knoflících), takže nebylo možné ovládat všechny MIDI zprávy podporované vaším syntezátorem (přemýšlejte o Access Virus nebo Novation Supernova: akceptují více nebo méně 110 MIDI kompatibilních parametrů). V případě potřeby můžete náčrt snadno změnit tak, aby podporoval více zpráv.

Ve skutečnosti jsou podporovány zprávy SysEx kompatibilní s Roland Alpha-Juno, JX8P, Korg DW8000 a Oberheim Matrix 6. Nechal jsem kód pro zprávy kompatibilní s Juno 106 pro případ, že byste to potřebovali.

U Matrixu 6 jsem musel vybrat parametry k ovládání. Vynechal jsem třetí obálku, druhou rampu a ještě něco. Matici stejně nelze ovládat přes MIDI, takže je také venku. Potřebujete aktualizovaný firmware (verze 2.14 nebo vyšší) a parametr „Master -> Sysex Enable“byste měli nastavit na „3“.

Clock out je nějakým způsobem buggy (hodiny musí být striktně dokonalé, aby fungovaly tak, jak by měly, a pravděpodobně dva přístupy, které jsem přijal, pokud nejsou účinné). Ve výchozím nastavení je vypnuto.

Kód obsahuje komentáře, takže zde není třeba dále komentovat.

Jako vždy: pamatujte, že nejsem kodér v reálném životě a určitě existují lepší způsoby, jak kódovat to, co zde potřebujeme. Pokud jste kodér a máte návrhy, jste vítáni! Zašlete mi prosím jakoukoli variantu, která může zvýšit účinnost/efektivitu kódu, a já ji zahrnu do hlavního náčrtu (samozřejmě s odkazem na přispěvatele!).

Vždy se něco nového naučím přečtením nějakého dobrého kodéru;)

Krok 7: Související projekty

Pokud vím, není tam MIDI parametrový řadič a sekvencer (možná starý Behringer BCR2000 s upraveným firmwarem?)

každopádně, pokud nejste náchylní realizovat takovýto box, ale velmi vás zajímají levné řešení pro vzdálené ovládání vašich parametrů synth, zvažte tyto další alternativy:

- CTRL MIDI editor: je to brilantní, bezplatný open source program běžící na win/Linux/mac, který dokáže z vašeho počítače udělat úplný ovladač pro syntezátory SysEx

- CC převodník „junosex“Davida Konsumera: tento projekt vyžaduje drobnou hardwarovou práci na vaší straně a nápad je skvělý - arduino konvertor CC na SysEx, který vám umožní použít běžný MIDI ovladač bez SysEx (tj. Hlavní klávesnice AKAI MPK) mluvit se svým syntezátorem připraveným pro SysEx

Doporučuje: