Obsah:

Sestavení MIDI ovladače Arduino: 9 kroků (s obrázky)
Sestavení MIDI ovladače Arduino: 9 kroků (s obrázky)

Video: Sestavení MIDI ovladače Arduino: 9 kroků (s obrázky)

Video: Sestavení MIDI ovladače Arduino: 9 kroků (s obrázky)
Video: Arduino Videotutoriál 9: Ovládání software v PC pomocí Arduina 2024, Červenec
Anonim

Tento návod byl původně publikován na mém blogu 28. června 2020

Baví mě stavět věci, které obsahují elektroniku, a vždy jsem chtěl něco postavit pomocí Arduina.

Jednou z nejběžnějších sestav pro začátečníky, kterou jsem našel, byl MIDI ovladač. MIDI kontrolér je jakýkoli hardware, který odesílá MIDI data (digitální rozhraní hudebního nástroje) do zařízení pro spouštění zvuků a vytváření hudby.

Zjistil jsem, že mnoho implementací je komplikovaných, dokonce i těch, které jsou pro začátečníky. Bylo velmi frustrující zjistit, že potřebuji použít stovky řádků nečitelného kódu. Nebo že mimo jiné musím v některých případech pájet odpor.

Projekt

Vybudováním vlastního MIDI ovladače Arduino jsem měl v úmyslu udělat zábavný projekt a udržet hluk na nejnižší úrovni. Něco, co by mohl sledovat každý začátečník. Abych toho dosáhl, použil jsem MIDI Fighter 3D jako základní inspiraci a odstranil všechny nepodstatné funkce.

Celkové náklady na můj projekt byly pod 30 $ a seznam materiálů byl opravdu krátký (odkazy na pobočky):

  • Arduino Leonardo (nebo klon): mezi 10 a 20 dolary.
  • 16 x tlačítka Sanwa 24 mm (nebo klon): mezi 1 $ a 2,50 $ za tlačítko.
  • Páječka
  • Elektrický vodič 22 AWG

Deska Arduino

Když jsem zahájil tento projekt, zjistil jsem, že existuje spousta nových modelů Arduino (bez stovek kompatibilních desek). A všechny nabízejí mírně odlišné možnosti.

Potřeboval jsem poslat MIDI signály do počítače a nejjednodušší způsob, jak to udělat, je přes USB. Jakákoli deska Arduino založená na mikrokontroléru ATmega32u4 má vestavěnou komunikaci USB.

Oficiální desky Arduino s nativní podporou USB jsou Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Tyto desky mají integrovanou podporu USB, což znamená, že mohou fungovat jako USB MIDI zařízení.

Rozhodl jsem se jít s klonem Arduina Leonarda. Má dostatek vstupů pro tento projekt a obsahuje také záhlaví, což usnadňuje připojení/odpojení vodičů.

První kroky

I když vysvětlím krok za krokem, jak jsem implementoval kód pro tento projekt, můžete si stáhnout konečnou verzi.

K nahrání kódu na desku musíte použít Arduino IDE. Mají také webový editor, který je velmi užitečný, ale mají omezenou kvótu na časy za den, kdy můžete kompilovat kód.

Krok 1: Blikání vestavěné LED

Je zábavné, jak „Hello World“ve světě hardwaru bliká LED diodou.

Bylo pro mě milým překvapením, když jsem zjistil, že Arduino Leonardo má vestavěnou LED diodu, na kterou můžete mrknout a otestovat svůj kód. Tímto způsobem nemusíte stavět externí obvod na prkénku s LED a odporem.

Kód:

Krok 2: Blikání LED na ručním vstupu

Dalším logickým krokem bylo blikat stejnou LED diodou, kdykoli odešlu signál. Odstranil jsem plastový kryt jednoho konce 2 vodičů Dupont a druhý konec jsem připojil k desce:

  • Pin číslo 2: Jeden z digitálních vstupů (kladný). Může to být jakýkoli digitální pin.
  • Pin GND: Jakýkoli zemnící pin (negativní).

Nyní pokaždé, když se připojím k odkrytým koncům vodičů, zavřu obvod, a tak mohu následně spustit kód

Každý z 20 digitálních pinů na Leonardu má interní odpor (ve výchozím nastavení odpojený), který lze aktivovat pomocí INPUT_PULLUP. Pamatujte, že pull-up vstup znamená, že stav tlačítka je invertován:

  • VYSOKÝ, když je obvod otevřený (tlačítko NENÍ stisknuto).
  • LOW, když je obvod uzavřen (tlačítko je stisknuto).

Kód:

Krok 3: Instalace knihovny MIDIUSB

Tato knihovna umožňuje desce Arduino s možností USB fungovat jako MIDI nástroj přes USB. Další informace naleznete v oficiální dokumentaci.

Pomocí Arduino IDE můžete nainstalovat další knihovny Arduino pomocí Správce knihoven:

  1. Otevřete IDE a klikněte na nabídku „Skica“, poté „Zahrnout knihovnu“a poté „Spravovat knihovny“.
  2. Vyhledejte MIDIUSB a klikněte na Instalovat.
  3. Jakmile bude hotový, měl by se vedle knihovny MIDIUSB objevit nainstalovaný tag.
  4. Zavřete Správce knihovny.

Nyní může Leonardo posílat MIDI zprávy přes USB! Nejprve je však potřeba nějaký přehled o tom, jak MIDI funguje.

Jak MIDI funguje

„MIDI (Musical Instrument Digital Interface) je standardní komunikační protokol, který spojuje elektronické hudební nástroje, počítače a související zvuková zařízení pro přehrávání hudby.“- Wikipedie

Mimo jiné zpracovává zprávy o událostech s údaji o výšce a rychlosti zahrané noty

V tomto konkrétním projektu vstup ze 16 tlačítek odesílá různé zprávy přes USB. Tyto zprávy lze převést na zvuk v počítači pomocí jakéhokoli vhodného softwaru, jako je GarageBand nebo Ableton Live.

Anatomie MIDI zprávy

K odeslání zprávy MIDI jsem použil metodu sendMIDI () z knihovny MIDIUSB, kterou jsem nainstaloval v kroku 3.

Tato metoda může přijímat 4 parametry:

  • Typ události: Může to být 0x09 pro notu zapnutou (přehrát notu) nebo 0x08 pro notu vypnutou (přestat hrát notu).
  • Poznámka Zapnuto/Vypnuto: Typ události kombinovaný s MIDI kanálem (1-16). Používám pouze kanál 1, takže je to buď 0x90 pro poznámku zapnuto, nebo 0x80 pro poznámku vypnuto.
  • Číslo poznámky: Každá poznámka má přiřazenou číselnou výšku (frekvenční stupnici).
  • Rychlost: Od 0 (žádná rychlost) do 127 (nejrychlejší).

Krok 4: Odeslání MIDI zprávy

Zahrnul jsem knihovnu MIDIUSB a místo blikání vestavěné LED jsem poslal poznámku.

Kód:

⚠ Důležité: Od tohoto kroku se Arduino změní na MIDI USB kontrolér a přestane přijímat kód přes USB.

Když uvíznete v poloze, kde již nelze Arduino naprogramovat, postupujte takto:

  1. Podržte zaoblené tlačítko reset na desce Arduino.
  2. Klikněte na Nahrát v Arduino IDE.
  3. Uvolněte resetovací tlačítko.
  4. Aktualizovaný kód bude nahrán na tabuli.

Krok 5: Odeslání MIDI zprávy z každého tlačítka

Odeslání MIDI zprávy z každého tlačítka
Odeslání MIDI zprávy z každého tlačítka

Posledním krokem bylo zmapovat každé hřiště na tlačítko. Pro 16 tlačítek jsem definoval měřítko od C2 do E3b, což jsou rozteče od 36 do 51 v pořadí zdola nahoru a zleva doprava. Podívejte se na tento soubor z Arduino Tutorials a zjistěte, jaká výška odpovídá každé notě.

Použil jsem digitální piny od 2 do 12 a analogové piny (používající je jako digitály) od A0 do A4.

A takto vypadá konečný kód

Krok 6: Nastavení kanálů nebo bank (volitelně)

Nastavení kanálů nebo bank (volitelně)
Nastavení kanálů nebo bank (volitelně)

V případě, že chcete přidat další tlačítka se schopností přepínat kanály nebo banky, jako v MIDI Fighter 3D (viz obrázek), Arduino Leonardo má další čtyři piny, které můžete použít. Arduino Leonardo má 20 digitálních vstupních/výstupních pinů, z nichž pouze 16 se používá pro přehrávání not.

Tato další tlačítka můžete použít k aktualizaci proměnné v kódu a odeslání její hodnoty jako parametru metodě MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Krok 7: Případ

Pouzdro
Pouzdro
Pouzdro
Pouzdro

Aby byl tento projekt jednoduchý, byl jsem extrémně vybíravý při výběru, které funkce obsahují.

  • Pouze tlačítka: 16 arkádových tlačítek podobných Sanwě, v mřížce 4x4. Žádné knoflíky, žádné posuvníky, žádné fadery ani žádný jiný analogový vstup.
  • Pouzdro Unibody: K pouzdru nebo k držení desky Arduino nepoužívejte žádné šrouby, matice, šrouby ani lepidlo.
  • Každodenní nástroje: Například jsem připájel dráty místo toho, abych si koupil konkrétní zastřihovač drátu pro arkádová tlačítka.

Unibody design

Jednou z výzev, se kterými jsem se potýkal, bylo navrhnout dostatečně jednoduché pouzdro, které nevyžaduje montáž a lze jej vytisknout 3D v jediném běhu.

Abych se vyhnul použití šroubů nebo lepidla, potřeboval jsem navrhnout skříň, která poskytuje nejmenší přístup k elektronice. Mojí největší inspirací pro kryt byl Mac Mini, který má ve spodní části kruhový otvor. Chtěl jsem k tomu také navrhnout šroubovací víko, ale rozhodl jsem se to nechat otevřít, aby se odhalila elektronika.

Stáhněte si 3d tisknutelné pouzdro (322 KB). Doporučené nastavení: PLA, 0,15 mm vrstvy, 20% výplň, podpůrné vymahače alespoň pro zaoblený spodní otvor, držáky Arduino a micro USB.

Držím Arduino bez šroubů

Leonardo má 4 otvory pro zašroubování desky do jakéhokoli vhodného pouzdra, ale mojí myšlenkou bylo usnadnit přidávání a vyjímání desky z pouzdra.

Nalezení držáku klipu pro Arduino na Thingiverse bylo snadné a trvalo mi 5 iterací, než jsem tento držák integroval do návrhu unibody. Nejtěžší bylo udělat nohy tak, aby se vyhnuly otvorům pro tlačítka, a aby byl mikro USB zarovnán na střed s pouzdrem.

Krok 8: Shromáždění

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Po vložení všech tlačítek na místo jsem připájel krátké černé dráty spojující všechny negativní nohy tlačítek mezi nimi.

Poté jsem z každé kladné nohy připájel dlouhé červené dráty, abych se připojil přímo k desce.

Abych připojil vodiče k Arduinu, uřízl jsem a připájel některé konce Dupontu a zakryl je teplem smrštitelnou bužírkou.

Připojil jsem dráty k desce ve stejném pořadí jako v MIDI Fighteru. Zespodu nahoru a zleva doprava

Krok 9: Použití MIDI ovladače

Pomocí MIDI ovladače
Pomocí MIDI ovladače

Pro příjem MIDI a tvorbu hudby lze použít jakýkoli hudební software (nebo vhodný hardware). Nejvíce doporučované jsou Garage Band, Ableton Live a vím, že do telefonu lze nainstalovat spoustu aplikací.

Všechny tyto nástroje jsou užitečné pro načítání předdefinovaných zvuků pro bubnování prstem, ale byly vytvořeny pro větší účely. Tyto nástroje mohou být pro začátečníky náročné nastavit.

MIDI ve webovém prohlížeči

Abych něco sladil s tímto projektem a jeho jednoduchostí, vytvořil jsem webový nástroj zcela zaměřený na MIDI kontrolery.

Punchy: Implementace WebMIDI a WebAudio pro MIDI kontrolery.

Může číst zprávy MIDI v libovolném prohlížeči, který podporuje rozhraní API WebMIDI JavaScript. Poté přehraje zvuky v syntetizátoru (pomocí rozhraní WebAudio API) nebo ve vzorkovači a načte vlastní zvuky z jakéhokoli zvukového balíčku.

Nastavte Ableton Live

Aby MIDI ovladač fungoval s Ableton Live, postupujte podle těchto jednoduchých kroků z jejich oficiální dokumentace.

Přejděte na Předvolby → Propojit MIDI a ujistěte se, že „Vstup“má „Track“a „Remote“ZAPNUTO a výstup má „Dálkové“ZAPNUTO, jak je uvedeno v příručce:

Doporučuje: