reklama

Jako hudebník, který shromáždil sbírku hudebních nástrojů a hlukových krabic, je pokorný Arduino dokonalým nástrojem k vytvoření vlastního MIDI kontroleru. Zatímco Raspberry Pi možná vzal korunu Internet věcí (IoT) Internet věcí: 10 užitečných produktů, které musíte vyzkoušet v roce 2016Internet věcí roste v roce 2016, ale co to přesně znamená? Jak vy osobně těžíte z internetu věcí? Zde je několik užitečných produktů pro ilustraci. Přečtěte si více projekty, jednoduché Arduino Uno (jaké jsou různé typy Arduina? Průvodce nákupem Arduina: Kterou desku byste měli získat?Je tam tolik různých druhů desek Arduino, bylo by vám odpuštěno, že jste zmatení. Které byste si měli koupit pro svůj projekt? Pomozte nám s tímto průvodcem nákupem Arduino! Přečtěte si více ) má více než dostatek energie pro tento projekt.

Poprvé používáte Arduino? Žádný strach, máme kompletní Průvodce pro začátečníky Arduina Začínáme s Arduino: Příručka pro začátečníkyArduino je platforma s otevřeným zdrojovým kódem elektroniky založená na flexibilním, snadno použitelném hardwaru a softwaru. Je určen pro umělce, designéry, fandy a kohokoli, kdo má zájem o vytváření interaktivních objektů nebo prostředí.

instagram viewer
Přečtěte si více si přečtěte, než začnete tento projekt řešit.

Arduino-Midi-Controller-Breadboard

Co je MIDI?

MIDI znamená Musical Instrument Digital Interface. Nastiňuje standardní způsob vzájemné komunikace hudebních zařízení. Pokud vlastníte elektronickou klávesnici, pravděpodobně máte rozhraní MIDI. I když implementace MIDI zahrnuje několik technických detailů, je důležité si uvědomit, že MIDI není zvuk! MIDI data jsou jednoduchou sadou instrukcí (jedna instrukce se nazývá „zpráva“), kterou může implementovat jiné zařízení pro vytváření různých zvuků nebo řídicích parametrů.

MIDI podporuje 16 kanálů. To znamená, že každý kabel může podporovat 16 různých zařízení navzájem nezávisle komunikujících. Zařízení jsou připojena pomocí 5kolíkového kabelu DIN. DIN je zkratka pro „German Institute for Standardization“ a je to jednoduše kabel s pěti piny uvnitř konektoru. USB se často používá místo 5-pinového DIN nebo lze použít rozhraní USB-MIDI.

MIDI-kabel-samec

Změna kontroly a změna programu

Existují dva hlavní typy MIDI zpráv: Control Change a Program Change.

Zprávy Control Change (CC) obsahují číslo řadiče a hodnotu mezi 0 a 127. Zprávy CC se často používají ke změně nastavení, například hlasitosti nebo výšky tónu. Zařízení, která přijímají MIDI, by měla být dodávána s manuálem vysvětlujícím, jaké kanály a zprávy jsou ve výchozím nastavení nastaveny a jak je změnit (známé jako mapování MIDI).

Zprávy Program Change (PC) jsou jednodušší než zprávy CC. PC zprávy se skládají z jediného čísla a používají se ke změně předvolby nebo opravy na zařízení. Počítačové zprávy jsou někdy označovány jako „Patch Change“. Podobně jako u zpráv CC, výrobci by měli poskytnout dokument, který uvádí, jaké předvolby se mění konkrétní zprávou.

Co budete potřebovat

  • Arduino
  • 5kolíková zásuvka DIN
  • 2 x 220 ohmové rezistory
  • 2 x 10 k ohmové rezistory
  • 2 x krátkodobé spínače
  • Zapojené dráty
  • Prkénko
  • MIDI kabel
  • MIDI zařízení nebo USB rozhraní

Sestavte plán

Tento projekt bude docela jednoduchý. Můžete samozřejmě přidat další tlačítka nebo hardware, aby vyhovoval vašim potřebám. Bude vhodný téměř jakýkoli Arduino - pro tento příklad jsou potřeba pouze tři kolíky. Tento projekt se skládá ze dvou tlačítek pro ovládání programu, portu MIDI pro odesílání dat a zařízení pro příjem zpráv. Tento obvod byl postaven na a prkénko Elektronika pro začátečníky: 10 dovedností, které potřebujete vědětMnozí z nás se nikdy nedotkli páječky - ale výroba věcí může být neuvěřitelně prospěšná. Zde je deset nejzákladnějších DIY elektroniky, které vám pomohou začít. Přečtěte si více zde je však možné jej přenést do projektové krabice a pájených konektorů pro robustní řešení.

Sestava obvodů

Obvod Arduino-Midi-Controller

Připojení MIDI

MIDI-Pinout

Zapojte zdířku MIDI následujícím způsobem:

  • MIDI pin 5 na Arduino Transmit (TX) 1 přes odpor 220 ohmů
  • MIDI pin 4 na Arduino + 5V přes odpor 220 ohmů
  • MIDI pin 2 k Arduino zemi

Tlačítko připojení

Tlačítka fungují tak, že mění odpor, který Arduino „vidí“. Kolík Arduino prochází přepínačem přímo k zemi (NÍZKÝ) prostřednictvím 10k ohmového rezistoru („pull down“ rezistor, který zajistí, že hodnota zůstane nízká). Po stisknutí tlačítka se hodnota zobrazená v obvodu změní na + 5 V bez odporu (VYSOKÝ). Arduino dokáže tuto změnu zjistit pomocí digitalRead (pin) příkaz. Připojte tlačítka k pinům 6 a 7 digitálního vstupu / výstupu Arduino (I / O). Připojte obě tlačítka:

  • Levá strana tlačítka na + 5V
  • Pravá strana tlačítka k Arduino Ground přes odpor 10k ohm
  • Pravá strana tlačítka k Arduino pin (6 nebo 7)

Testování MIDI

Nyní, když je dokončen veškerý hardware, je čas to vyzkoušet. Budete potřebovat rozhraní USB-MIDI (mnoho zvukových rozhraní to dokáže) a kabel MIDI. Port MIDI zapojený na prkénku posílá data, takže jde o výstup. Váš počítač přijímá data, proto je to vstup. Tento projekt využívá vynikající Arduino Knihovna MIDI v4.2 od čtyřiceti sedmi efektů. Po nainstalování knihovny ji můžete zahrnout do svého kódu Skica> Zahrnout knihovnu> MIDI.

Budete také potřebovat program pro sledování příchozích MIDI dat:

  • Monitor MIDI pro OS X
  • MIDI-OX pro Windows
  • KMidimon pro Linux

Připojte Arduino Začínáme se sadou Arduino Starter Kit - Instalace ovladačů a nastavení desky a portuKoupili jste si tedy startovací soupravu Arduino a možná i nějaké další chladné komponenty - co teď? Jak vlastně začnete s programováním této věci Arduino? Jak to nastavíte ... Přečtěte si více do počítače a nahrajte následující testovací kód (Nezapomeňte vybrat správnou kartu a port z Nástroje> Deska a Nástroje> Port menu).

#zahrnout 
#zahrnout 
#zahrnout 
#zahrnout 
#zahrnout  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // vytvoří MIDI objekt nazvaný midiOut void setup () {Serial.begin (31250); // setup serial for MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // poslat MIDI CC - 56 = nota, 127 = rychlost, 1 = kanálové zpoždění (1000); // počkejte 1 sekundu midiOut.sendProgramChange (12,1); // poslat MIDI PC - 12 = hodnota, 1 = kanálové zpoždění (1000); // počkejte 1 sekundu. }

Tento kód odešle zprávu CC, počká 1 sekundu, odešle zprávu PC a poté počká 1 sekundu na neurčito. Pokud vše funguje správně, měla by se na monitoru MIDI objevit zpráva.

Pokud se nic nestane, nepropadejte panice! Zkuste řešení potíží:

  • Zkontrolujte, zda jsou všechna připojení správná
  • Zkontrolujte, zda je MIDI port správně zapojen - na vnějších hranách by měly být 2 náhradní kolíky
  • Znovu zkontrolujte správnost obvodu
  • Ověřte, zda je obvod připojen k rozhraní USB-MIDI pomocí kabelu MIDI
  • Zkontrolujte, zda je k MIDI kabelu připojen kabel MIDI vstup na vašem rozhraní USB-MIDI
  • Ujistěte se, že Arduino má sílu
  • Nainstalujte správný ovladač pro rozhraní USB-MIDI

Pokud jste ještě pořád mít problémy, že by stálo za to zkontrolovat prkénko. Levné desky mohou být někdy velmi nekonzistentní a nekvalitní - stalo se mi to při práci na tomto projektu.

Tlačítko Testování

Nyní je čas vyzkoušet, zda tlačítka fungují správně. Nahrajte následující testovací kód. Pro testování této části není nutné připojovat MIDI.

const int buttonOne = 6; // přiřazení kolíku tlačítka k proměnné. const int buttonTwo = 7; // přiřazení kolíku tlačítka k nastavení proměnné void () {Serial.begin (9600); // setup serial for text pinMode (buttonOne, INPUT); // tlačítko nastavení jako vstupní pinMode (buttonTwo, INPUT); // tlačítko nastavení jako vstup. } void loop () {if (digitalRead (buttonOne) == HIGH) {// zpoždění stavu tlačítka (10); // odskok softwaru, pokud (digitalRead (buttonOne) == HIGH) {// znovu zkontrolovat stav tlačítka Serial.println ("Button One Works!"); // zpoždění výsledku záznamu (250); }} if (digitalRead (buttonTwo) == HIGH) {// kontrola stavu zpoždění tlačítka (10); // software de-bounce if (digitalRead (buttonTwo) == HIGH) {// znovu zkontroluje stav tlačítka Serial.println ("Button Two Works!"); // zpoždění výsledku záznamu (250); } } }

Spusťte tento kód (ale ponechte USB kabel připojen) a spusťte Serial Monitor (Vpravo nahoře> Sériový monitor). Když stisknete tlačítko, mělo by se zobrazit „Button One Works!“ nebo „Button Two Works!“ v závislosti na stisknutém tlačítku.

Z tohoto příkladu je třeba vzít jednu důležitou poznámku - odskok softwaru. Toto je jednoduché 10 milisekundové (ms) zpoždění mezi kontrolou tlačítka a opětovným zkontrolováním tlačítka. Tím se zvyšuje přesnost stisknutí tlačítka a zabraňuje se tomu, aby Arduino spustilo šum. Nemusíte to dělat, i když je to doporučeno.

Vytvoření řadiče

Nyní, když je vše zapojeno a funguje, je čas sestavit plný ovladač.

Tento příklad odešle jinou zprávu CC pro každé stisknuté tlačítko. Používám to k ovládání Ableton Live 9.6 v OS X. Kód je podobný oběma výše uvedeným zkušebním vzorkům.

#zahrnout 
#zahrnout 
#zahrnout 
#zahrnout 
#zahrnout const int buttonOne = 6; // přiřazení kolíku tlačítka k proměnné. const int buttonTwo = 7; // přiřazení kolíku tlačítka k proměnné MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // vytvoří MIDI objekt nazvaný midiOut void setup () {pinMode (buttonOne, INPUT); // tlačítko nastavení jako vstupní pinMode (buttonTwo, INPUT); // tlačítko nastavení jako vstup Serial.begin (31250); // nastavení MIDI výstupu. } void loop () {if (digitalRead (buttonOne) == HIGH) {// zpoždění stavu tlačítka (10); // odskok softwaru, pokud (digitalRead (buttonOne) == HIGH) {// znovu zkontrolovat stav tlačítka midiOut.sendControlChange (56,127,1); // poslat MIDI CC - 56 = nota, 127 = rychlost, 1 = kanálové zpoždění (250); }} if (digitalRead (buttonTwo) == HIGH) {// kontrola stavu zpoždění tlačítka (10); // odskok softwaru, pokud (digitalRead (buttonTwo) == HIGH) {// znovu zkontroluje stav tlačítka midiOut.sendControlChange (42,127,1); // poslat MIDI CC - 42 = nota, 127 = rychlost, 1 = kanálové zpoždění (250); } } }

Poznámka - nebudete moci používat Serial.println () s výstupem MIDI.
Pokud jste chtěli poslat PC zprávu místo CC jednoduše nahraďte:

midiOut.sendControlChange (42,127,1);

S:

midiOut.sendProgramChange (hodnota, kanál); 

V akci

Níže je ukázka jako ovladač pro Ableton Live (Nejlepší DJ software pro každý rozpočet Nejlepší DJ software pro každý rozpočetKvalitní míchací software může změnit váš výkon. Ať už používáte Mac, Windows nebo Linux, každá úroveň dovedností a rozpočtu je zajištěna, pokud chcete začít s DJingem. Přečtěte si více ). Vpravo nahoře jsou zvukoměry a v prostředním horním rohu jsou zobrazeny příchozí zprávy midi (prostřednictvím Monitor MIDI v OS X).

Vytvořili jste MIDI kontrolér?

Pro vlastní MIDI řadič existuje mnoho praktických využití. Mohli byste postavit obrovskou nohou ovládanou jednotku nebo elegantní studiový ovladač. A pokud máte zájem o koupi, tady je nejlepší USB MIDI řadiče 9 nejlepších USB MIDI ovladačů pro hudebníkyHledáte USB MIDI řadič? Zde jsou nejlepší MIDI řadiče, které si můžete koupit hned teď, bez ohledu na rozpočet. Přečtěte si více můžeš koupit.

Obrázek Kredit: Keith Gentry přes Shutterstock.com

Joe je absolventem informatiky na University of Lincoln ve Velké Británii. Je to profesionální softwarový vývojář, a když nelétá dronů nebo píše hudbu, často ho najde, když fotografuje nebo produkuje videa.