V prejšnjem prispevku sem že omenil ta projekt, nato pa smo malo bolj podrobno spoznali MIDI protokol, ki se uporablja za komunikacijo med glasbenimi inštrumenti. Tokrat bomo podrobno spoznali sam projekt.
V svojem glasbenem studiu sem potreboval majhno napravo, s katero bi upravljal običajne snemalne funkcije (PLAY, RECORD, STOP in nazaj, itd) in katera bi mi med urejanjem pesmi omogočala hitro premikanje na katerikoli del pesmi ali hiter skok na začetek, oziroma na točno določeno časovno znamko v pesmi. Dolga leta sem uporabljal ShuttlePro napravo, ki je prikazana na Fotografiji 1. To je USB naprava, ki jo dobite skupaj z gonilnikom, ki ga je napisal proizvajalec. Že ko sem ga kupil, sem za pravilno delovanje z mojo Sonar Digital Audio Workstation programsko opremo (pozneje skrajšano DAW) potreboval gonilnik nekega tretjega proizvajalca. No, po nekaj letih je bilo več nadgradenj moje programske opreme Sonar DAW in obenem še prehod na OS Windows 7, zato je ShuttlePro z gonilniki, ki jih je še mogoče najti, dokončno prenehal delovati.
Odločil sem se torej, da izdelam svoj lasten MIDI krmilnik v upanju, da mi bo to uspelo na tak način, da ne bi potrebovali posebnih gonilnikov niti za OS Windows niti za mojo Sonar DAW programsko opremo. Kot sem že v uvodu omenil, obstajata dva načina prenosa MIDI podatkov: skozi izvirno vezavo MIDI prek vtičnic s kabli ali z uporabo USB povezave. Medtem ko novejša glasbena oprema teži predvsem k uporabi USB vodila za prenos MIDI podatkov, se izvirne rešitve in oprema, ki ustreza osnovnim zahtevam MIDI protokola, (strojna, programska oprema in kabli), še vedno masovno uporabljajo (tudi v mojem domačem studiu).
Če bi lahko izbiral način izvedbe USB vodila, bi moral izbrati mikrokontroler z vgrajenimi USB vrati in nato v vgrajeno programsko opremo vključiti še sklad USB-MIDI protokolov. Ker sem se odločil dosledno uporabljati Atmelove AVR mikrokontrolerje, je bila moja izbira zelo omejena. Ena izmed privlačnejših možnosti bi bila, da uporabimo Arduino Uno REV3, ki uporablja dobro znana mikrokontrolerja ATmega328 in ATmega16U2. ATmega16U2 ima že naložen program, da deluje kot navidezni COM port na USB vodilu, podobno kot ima to rešeno proizvajalec FTDI na USB-UART mostu, ki je bil uporabljen v prejšnjih različicah Arduino Uno.
Obstajajo celo programerji, ki so napisali svoj lastni USB-MIDI gonilnik in ga v ATmega16U2 vpisali namesto tovarniško vpisanega in mnogo datotek s temi gonilniki lahko najdete na spletu. Tudi sam se preprogramiral ATmega16U2 na Arduino Uno R3 s takšnim gonilnikom in ugotovil, da medtem, ko je pošiljal MIDI note in podobno, ni znal pravilno obdelati in posredovati ekskluzivnih sistemskih sporočil (če jih sploh je?), kar pa je bilo v mojem primeru za obstoječo aplikacijo nesprejemljivo.
Zato sem se odločil, da na svojem krmilniku uporabim prvotno obliko MIDI vrat, kot smo jo spoznali v prejšnjem članku.



