Pred pár rokmi som objavil MIDI Fighter. MIDI kontrolér s arkádovými tlačidlami namiesto tradičných padov. Výborný nápad. Na začiatku to bolo DIY riešenie a to bolo aj mojou inšpiráciou. Arkádové tlačidlá sú ideálne na finger drummming alebo ako je to v mojom prípade na ovládanie Cue Points (s viacfarebnými LED diódami je to perfektná kombinácia) v akomkoľvek softvéri pre DJing (ako NI TRAKTOR alebo Mixxx). Skvelý nápad, ako rozšíriť možnosti zostavu pre Djing.

  1. Funkcie
  2. Návrh
  3. Hardware
  4. Firmware
  5. Downloads

Funkcie

4x4 matica Arcade tlačidiel:

dyi arcade buttons usb midi controller detailed view

Matica arkádových tlačidiel 4x4 má celkom jednoduchú funkciu. Odoslanie správy Note On pri stlačení tlačidla a správy Note Off po uvoľnení tlačidla.

Bajty takejto MIDI správy (message) sa delia na dva typy. Stavové alebo dátové. Stavové bajty hovoria príjemcovi správy o akú správu sa jedná a na akom kanáli pôjde (k dispozícii je 16 kanálov). Teda v tomto prípade je to správa note On - teda že treba zahrať určitú notu

 Dátové bajty potom (jeden prípadne dva) určujú hodnotu, v tomto prípade (pre správu note On) je to výška tónu.

To či je daný bajt stavový alebo dátovy určuje jeho 1.bit, takže ak dátový bajt používa 1.bit na to aby oznámil, že je dátový ostáva na definovanie hodnoty zvyšných 7 bitov. MIDI protokol preto umožňuje zasielať 128 roznych hodnôt (0-127) čo je najvyššia možná kombinácia pre 7bitov v dvojkovej sústave.

Kontrolér je naprogramovaní tak že posielaná hodnota pre hranú notu závisí od arcade tlačidla (1-16) a tiež od výberu banky (1-8). 16 hodnot v každej z 8mich bánk dáva výsledných 128 možností.

Výber banky sa dá prepínať jedným zo štyroch malých tlačidiel umiestnených nad Arcade tlačidlami (nastavenia).

MIDI správa NoteOn obsahuje aj informácie o kanáli (podľa špecifikácie je 16 MIDI kanálov). MIDI kanál je určený 4 bitmi 1. bajtu (stavový tkz. statu byte). Kánál je možné meniť druhým tlačítkom určením pre nastavenie.

 

Tu je výcuc zo špecifikácie MIDI protokolu, ktorý ma na starosti tieto správy (midi.org)

Status
D7----D0
Data Bajt(y)
D7----D0
Popis

Channel Voice Messages [nnnn = 0-15 (MIDI číslo kanála 1-16)] 
1000nnnn 0kkkkkkk
0vvvvvvv
Note Off správa.
Správa posielaná pri uvolnení klávesy (ukončenie). (kkkkkkk) je hodnota noty. (vvvvvvv) je sila úderu.
1001nnnn 0kkkkkkk
0vvvvvvv
Note On správa.
Správa posielaná pri zatlačení klávesy (start). (kkkkkkk) je hodnota noty. (vvvvvvv) je sila úderu.

 

4 tlačítka pre nastavenia:

 

dyi arcade buttons midi controller system buttons in detail with letter marks

 

B1 - Zmena banky

B2 - Zmena kanála

B3 - Reserve (aktuálne pre firmware v 1.0.1)

B4 - Nastavenie farby tlačidla (pri zatlačení)

 

Návrh

Pre návrh DPS základnej dosky ako aj dosky systémových tlačidiel pre nastavenie bol použitý Eagle CAD v.9. Celkový dizajn je vytvorený v programe Sketchup s pluginom "eagleup" na export a import DPS s Eaglu do Sketchupu.

dyi arcade buttons midi controller entire design sketchup export

Hardware

Základová doska

Za logiku a spracovanie všetkých signálov a MIDI dát a komunikáciu s počítačom je zodpovedný 8-bitový mikrokontrolér PIC18F4550 s možnosťou pripojenia cez USB. Hlavná doska pozostáva z mikrokontroléra a dvoch 8-bitových statických posuvných registrov (4021) na spracovanie signálov tlačidiel, LED diód (SK9822 v sériovom zapojení) a konektorov pre arkádové tlačidlá.

dyi arcade buttons midi controller main board pcb in detail

konentory pre montáž do DPS (musí byť odstrihnutá jedna noha, aby lepšie zapadla do základnej dosky)

dyi arcade buttons midi controller plug spring holders for arcade buttons on the main board

Všetko schémy sú k dispozícii download sekcii.

Tlačítka pre nastavenia

Velmi jednoduchá. 4 tactile tlačítka z pullup rezistormi a konektor.

dyi arcade buttons midi controller buttons board pcb

Spojenie so základnou doskou je zabezpečené štandardným 6-žilovým plochým káblom cez 6-pinové konektory IDC.

dyi arcade buttons midi controller ribbon cable nad odc 6 pin connector

Arkádové tlačidlá

Použité tlačidlá sú OEM 30mm transparent push buttons as a replacement for Arcade Sanwa buttons.

RGB LEDky - SK9822

Na podsvietenie tlačidiel sú použité LEDky SK9822. Na ich ovládanie som nepoužil som žiadnu špecifickú knižnicu, protokol je pomerne jednoduchý, takže som naprogramoval len niekoľko funkcií na odosielanie údajov na výstupy LED.

dyi arcade buttons midi controller view of particular colors on pressed button

dyi arcade buttons midi controller rgb led SK9822 pinout details

Telo (plastické) kontroléra

Puzdro je vyrobené z extrudovaného PVC vyrezaním jednotlivých dielov na CNC fréze X-CARVE. Fréza má ovládač GRBL, takže potrebuje štandardný G-code. Rezný nástroj je 2-drážkový tkz. upcut bit. Ako vreteno je použitá fréza Makita RC0700. Možnosť RMP bola nastavená na 3. úroveň (cca 12 000 RPM). 

Časti boli zlepené dohromady a ručne brúsené, aby sa zarovnali okraje.

dyi arcade buttons midi controller plastic body parts glued together

Potom nastriekané bežnými sprejmi - medzi vrstvami som to zľahka prebrúsil brúsnym papierom zrnitosti 1000 - 2 vrstvy základného náteru a 2 vrstvy vrchného náteru.

dyi arcade buttons midi controller plastic body painted by black mat

Firmware

Základom celého kontroléra zodpovedného za spracovanie signálov a odosielanie MIDI dát cez USB do počítača je PIC micro-controller 18F4550 od Microchipu. Na vývoj firmvéru používam MPLAB X IDE (v tom čase v5.05) a základný C kompilátor pre 8bitové mikrokontroléry rodiny XC8. Na ladenie a programovanie čipu PIC bol použitý programátor PICKIT3. USB MIDI rozhranie je vytvorené knižnicami Microchip pre aplikácie pre USB MIDI komunikáciu. Súvisiace súbory boli vytiahnuté z knižníc a zahrnuté do projektu, aby projekt prenosny v rozsahu jedného priečinka, takže nie je potrebné mať nainštalovanú MLA (knižnice). Stiahnutie projektu MPLAB je k dispozícii v sekcii na stiahnutie nižšie.

Downloads

Google Sketchup fileGoogle Sketchup (Design)

Eagle CAD softwareEagle CAD File (schematic + PCB)

Microchip MplabX IDE projectFirmware - Microchip MPLABX IDE