Jak vytvořit MIDI ovladač s Arduinem

Jak vytvořit MIDI ovladač s Arduinem

Jako hudebník, který shromáždil sbírku hudebních nástrojů a hlukových boxů, je pokorný Arduino dokonalým nástrojem pro vytvoření vlastního MIDI ovladače. Zatímco Raspberry Pi možná získalo korunu pro projekty internetu věcí (IoT), jednoduché Arduino Uno (jaké jsou různé typy Arduina?) Má pro tento projekt více než dostatečnou sílu.





Používáte Arduino poprvé? Žádný strach, máme kompletní Průvodce pro začátečníky Arduina si přečtěte, než se pustíte do tohoto projektu.





Co je MIDI?

MIDI je zkratka pro Musical Instrument Digital Interface. Načrtává standardní způsob vzájemné komunikace hudebních zařízení. Pokud vlastníte elektronickou klávesnici, pravděpodobně máte MIDI rozhraní. Přestože implementace MIDI obsahuje několik technických podrobností, je důležité si uvědomit, že MIDI není zvuk! MIDI data jsou jednoduchá sada instrukcí (jedna instrukce se nazývá 'zpráva'), kterou může jiné zařízení implementovat k vytváření různých zvuků nebo ovládacích parametrů.





MIDI podporuje 16 kanálů. To znamená, že každý kabel může podporovat 16 různých zařízení, která spolu navzájem komunikují. Zařízení se připojují pomocí 5kolíkového kabelu DIN. DIN znamená „Německý institut pro normalizaci“ a je to jednoduše kabel s pěti piny uvnitř konektoru. Místo 5kolíkového DIN se často používá USB nebo lze použít rozhraní USB-MIDI.

MIDI kabel-samec



Ovládejte změnu a změnu programu

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

Zprávy Control Change (CC) obsahují číslo ovladače a hodnotu mezi 0 a 127. Zprávy CC se často používají ke změně nastavení, jako je hlasitost nebo výška tónu. K zařízením, která přijímají MIDI, by měl být přiložen manuál s vysvětlení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. Zprávy z počítače se skládají z jednoho čísla a slouží ke změně předvolby nebo opravy v zařízení. Zprávám na počítači se někdy říká „Patch Change“. Podobně jako u zpráv CC by měli výrobci poskytnout dokument popisující, jaké předvolby jsou konkrétní zprávou změněny.

Co budete potřebovat

  • Arduino
  • 5pinová zásuvka DIN
  • 2 x 220 ohmové odpory
  • 2 x 10k ohmové odpory
  • 2 x momentální spínače
  • Propojovací dráty
  • Prkénko
  • MIDI kabel
  • MIDI zařízení nebo USB rozhraní
Voda a dřevo 5 ks DIN 5 pinových montážních zásuvek na PCB pro PC klávesnici KOUPIT HNED NA AMAZONU

Plán stavby

Tento projekt bude celkem jednoduchý. Samozřejmě můžete 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 piny. Tento projekt se skládá ze dvou tlačítek pro ovládání programu, MIDI portu pro odesílání dat a zařízení pro příjem zpráv. Tento obvod zde byl postaven na prkénku, nicméně pro robustní řešení je možné jej přenést do projektové krabice a pájených konektorů.





Obvodová sestava

Obvod Arduino-Midi-Controller

MIDI připojení

MIDI pinout

Zapojte MIDI zásuvku následujícím způsobem:

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

Tlačítko připojení

Tlačítka fungují tak, že mění odpor, který Arduino „vidí“. Pin Arduino prochází přepínačem přímo na zem ( NÍZKÝ ) přes odpor 10 kOhm (odpor „stáhni“, aby byla zajištěna nízká hodnota). Když je tlačítko stisknuto, hodnota viděná obvodem se změní na +5v bez odporu ( VYSOKÝ ). Arduino dokáže tuto změnu detekovat pomocí digitalRead (pin) příkaz. Připojte tlačítka k pinům 6 a 7 na digitálním vstupu/výstupu Arduino (I/O). Připojte obě tlačítka:

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

MIDI testování

Nyní, když je veškerý hardware hotový, je čas jej otestovat. Budete potřebovat rozhraní USB-MIDI (mnoho zvukových rozhraní to dokáže) a kabel MIDI. MIDI port zapojený na prkénku odesílá data, takže je to výstup. Váš počítač přijímá data, proto je to vstup. Tento projekt využívá vynikající Arduino MIDI Library v4.2 od Forty Seven Effects. Jakmile knihovnu nainstalujete, můžete ji zahrnout do kódu tak, že přejdete na Skica> Zahrnout knihovnu> MIDI .

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

Připojte Arduino k počítači a nahrajte následující testovací kód (nezapomeňte vybrat správnou desku a port z Nástroje> Deska a Nástroje> Port nabídky).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Tento kód odešle zprávu CC, počkejte 1 sekundu, odešlete zprávu z počítače a počkejte 1 sekundu na neurčito. Pokud vše funguje správně, měla by se na vašem MIDI monitoru zobrazit zpráva.

Pokud se nic nestane, nepanikařte! Zkuste řešení potíží:

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

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

Testování tlačítek

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

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Spusťte tento kód (ale ponechte připojený kabel USB) a otevřete Serial Monitor ( Vpravo nahoře> Sériový monitor ). Když stisknete tlačítko, zobrazí se „Tlačítko One Works!“ nebo 'Button Two Works!' v závislosti na tlačítku, které jste stiskli.

Z tohoto příkladu je třeba vzít jednu důležitou poznámku-de-bounce softwaru. Jedná se o jednoduchou prodlevu 10 milisekund (ms) mezi kontrolou tlačítka a následnou kontrolou tlačítka. To zvyšuje přesnost stisknutí tlačítka a pomáhá předcházet hluku, který spouští Arduino. Nemusíte to dělat, přestože se to doporučuje.

Vytvoření ovladače

Nyní, když je vše zapojeno a funguje, je čas sestavit celý 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 na OS X. Kód je podobný jak výše uvedeným testovacím vzorkům.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Poznámka - nebudete moci používat Serial.println () s MIDI výstupem.

Pokud chcete místo CC odeslat PC zprávu, jednoduše nahraďte:

midiOut.sendControlChange(42,127,1);

S:

midiOut.sendProgramChange(value, channel);

V akci

Níže je ukázka jako ovladač pro Ableton živě ( Nejlepší DJ software pro každý rozpočet ). Vpravo nahoře jsou zobrazeny měřiče zvuku a uprostřed jsou příchozí zprávy midi (prostřednictvím MIDI monitor na OS X).

jak uvolnit místo ve Windows 10

Vyrobili jste MIDI ovladač?

Existuje mnoho praktických použití pro vlastní MIDI kontrolér. Můžete postavit obrovskou nožní jednotku nebo elegantní studiový ovladač. A pokud máte zájem o koupi jednoho, zde jsou nejlepší USB MIDI ovladače, které si můžete koupit.

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

Doufáme, že se vám budou líbit položky, které doporučujeme a diskutujeme! Společnost MUO má partnerská a sponzorovaná partnerství, takže dostáváme část příjmů z některých vašich nákupů. To neovlivní cenu, kterou zaplatíte, a pomůže nám to nabídnout nejlepší doporučení produktů.

Podíl Podíl tweet E-mailem Vyplatí se upgradovat na Windows 11?

Windows byl přepracován. Ale stačí to k tomu, abyste vás přesvědčili o přechodu z Windows 10 na Windows 11?

Číst dále
Související témata
  • DIY
  • DJ software
  • Arduino
  • Elektronika
  • POLEDNÍ
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když zrovna neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru
Kategorie Diy