kpi

Magazín KPI

№ 7 / júl 2019

Virtuálny hudobný nástroj

Hudba je nepopierateľnou súčasťou každodenného života človeka. Väčšina ľudí ju ale vníma predovšetkým pasívne, napríklad počúvaním vopred vytvorených skladieb. Málokto má privilégium hudbu prežívať aj aktívne, takpovediac z opačného konca, teda komponovaním a hraním. Pre takýto zážitok je potrebné dlhoročné štúdium a cvičenie. Úlohou virtuálneho hudobného nástroja je sprostredkovať možnosť voľného komponovania a hrania hudby bežným ľuďom a zároveň obohatiť jej auditívnu stránku o vizualizáciu, pohybový aparát a prípadne iné komponenty.

Funkcie nástroja

Na úvod je potrebné spomenúť, že aj keď sa systém formálne nazýva hudobným nástrojom a tiež spĺňa formálne požiadavky na to aby ním bol, vymyká sa konvenčnej predstave o nástrojoch. Nejedná sa o žiadne fyzické zariadenie, ale o systém pracujúci s generovaním hudby a obrazu v závislosti od pohybov používateľa, či tzv. performera. Tieto pohyby sú spracované v reálnom čase a ich audiovizuálny výsledok je prezentovaný v systéme Lirkis Cave, pre ktorý je nástroj primárne navrhnutý. Jeho značnou prednosťou je ale multiplatformovosť a modulárnosť, vďaka čomu vie byť spustený takmer z akékohoľvek dostupného zariadenia, pokiaľ spĺňa technické a systémové požiadavky.

Tu je vhodné uvedomiť si, že tento nástroj nemá slúžiť ako plnohodnotný hudobný nástroj na voľné komponovanie hudby. To nebola nikdy jeho primárna funkcia. Jeho hlavnou stránkou je poskytnúť umelecký zážitok performerovi, či už hudobníkovi alebo bežnému človeku, ktorý je schopný plne sa zanietiť do daného momentu a užívať si tvorbu hudby podfarbenú obrazom.

Zvolené technológie a nástroje

Oblasť programovania hudby je v súčasnosti celkom pestrá, takže pri zvažovaní vhodného prostriedku či jazyka bolo porovnávaných mnoho možností. Po zvážení dostupných možností sa výber zúžil na tri programovacie jazyky - CMusic, ChucK a Sonic Pi. Kým prvé dva spomínané majú pestrú históriu a ohromné množstvo možností a prvkov, neponúkajú úplne dostatočnú multiplatformovosť a ich komplexnosť trochu prevyšuje cieľ tohto nástroja. Preto rozhodnutie padlo na jazyk Sonic Pi, ktorý je založený na jazyku Ruby a má preto dynamické typovanie a flexibilnú syntax, čo podporuje jednoduchosť jeho používania. Rovnako je natívne podporovaný na systémoch Windows, MacOS, a aj na viacerých distribúciach GNU/Linux.

Čo sa týka výberu vhodného vizuálneho nástroja, tam bola voľba jednoznačná už od počiatku práce — Cave laboratória Lirkis. Ide o „virtuálnu jaskyňa“ — priestor v ktorom je človek obklopený 3D zobrazovacími zariadeniami. Cave ponúka úžasné možnosti zážitku vo virtuálnej realite, zatiaľ čo nezakrýva skutočný svet vlastnou vizualizáciou. Je totiž dôležité, aby performer videl na vlastné oči pohyb svojich končatín, aby sa mu kognitívne jednoduchšie prepojili súvislosti medzi pohybom a výsledkom. Taktiež je v tomto systéme virtuálnej reality možné postaviť si pred seba akékoľvek pomôcky, či už rozpis akordov konkrétnych skladieb, ťahák pre pohybový aparát, a podobne. V neposlednom rade to tiež ponúka možnosť experimentovania s viac ako jedným performerom súčasne.

Vo veci rozpoznávania pohybu sa naskytlo viac možností, od individuálnych pohybových ovladačov až po senzory na snímanie svalovej aktivity. Nakoniec je systém navrhnutý primárne pre zariadenie Microsoft Kinect, keďže poskytuje možnosť pohybového ovládania bez nutnosti fyzických snímačov pripnutých na tele alebo držaných v rukách, čo do veľkej miery zlepšuje zážitok a uvoľnenie používania. Jeho programové použitie je tiež veľmi jednoduché a nevyžaduje komplikovanú starostlivosť či údržbu, výmenu batérií, sieťové pripojenia a podobné záležitosti. Taktiež je pomerne cenovo nenáročný, čo zlepšuje dostupnosť celého nástroja, v prípade spustenia na úplne inom systéme.

Kompromis použiteľnosti

Prvým a asi najkritickejším krokom k vytvoreniu takéhoto nástroja je čo najvhodnejší návrh interakcie v pohybovom aparáte. Po obšírnych návrhoch a experimentoch vznikol diagram tzv. kompromisu použiteľnosti, ktorý vyjadruje závislosť príjemnosti používania nástroja na dvoch faktoroch — možností ovládania a determinizmu výsledku. Bolo potrebné dosiahnuť systém interakcií, pri ktorom bude dostatočný počet možností ovládania, aby bol nástroj použiteľný, ale možností nesmie byť priveľa, aby nebol performer ohurený a zmätený. Hudobný a vizuálny výsledok by mal byť dostatočne zjavný, resp. deterministický, aby performer pociťoval pozitívny zážitok z používania a vedel si priradiť to čo počuje a vidí svojim pohybom, ale je taktiež potrebné docieliť maličkú mieru náhodnosti a nedeterminizmu, aby bolo používanie okorenené drobným pocitom prekvapenia či neočakávanosti. Keď hovoríme o ideálnej implementácii pohybového aparátu v tomto nástroji, máme na mysli práve stred tohto dvojrozmerného spektra použiteľnosti.

Diagram kompromisu použiteľnosti
Diagram kompromisu použiteľnosti

Technická stránka nástroja

Programovo je nástroj rozdelený do dvoch základných komponentov: jadro systému a koncové generátory. Jadro spracováva vstup v podobe rozpoznania pohybov a ich spracovania, vygeneruje z neho príslušné hodnoty a tie posiela koncovým generátorom. Generátory sa starajú o samotné generovanie hudby a videa na základe impulzov s údajmi prijatých od jadra. Pritom systém je veľmi jednoducho rozšíriteľný o nové koncové generátory.

Jadro systému je rozdelené na štyri kľúčové moduly:

  • InReaM (Input Reading Module — modul čítania vstupov),
  • ComMod (Communication Module — komunikačný modul),
  • MuGeM (Music Generating Module — modul generovania hudby) a
  • ImGeM (Image Generating Module — modul generovania obrazu).

Tieto moduly spolupracujú a navzájom komunikujú za účelom cyklického rozpoznávania pohybu a posielania impulzov generátorom. Prvým krokom je rozpoznanie a identifikovanie kĺbovej kostry performera a následné snímanie a spracovanie polôh jeho končatín. Z týchto údajov sa následne podľa preddefinovaného algoritmu vygenerujú špecifické údaje, ktoré sa znormalizujú a pošlú vo forme impulzu konkrétnym generátorom.

Schéma architektúry nástroja
Schéma architektúry nástroja

Pohybový aparát

Pohyb samotný je v tomto nástroji riešený pomerne jednoducho, aby nedošlo k zmäteniu a prílišnému ohromeniu performera a aby bolo použitie čo najjednoduchšie, ale zároveň plne praktické. Polohou oboch rúk sa určí konkrétny akord, ktorý sa má hrať, zatiaľčo nohy ovládajú individuálne jednorázové efekty. Pohyb rúk je vnímaný v krúživom spektre hitboxov, kde konkrétna poloha v abstraktnom kruhu odpovedá konkrétnemu preddefinovanému hitboxu. Akord v sebe nesie dve základné informácie: koreňový tón a typ akordu. Typ akordu určuje ktoré špecifické tóny v ňom budú znieť a koreň určuje hlavný tón akordu, od ktorého sa následne odsadia ostatné tóny. Pravá ruka teda určuje koreňový tón a ľavá konkrétny typ akordu. Možností je ale v oboch prípadoch veľa, tak sa musel aparát trochu prispôsobiť jednoduchšiemu použitiu.

Z trinástich možných koreňových tónov sa zvolilo osem najčastejšie používaných a ich poloha v kruhu bola inšpirovaná tzv. kvintovým kruhom tónov z hudobnej teórie, kvôli jednoduchosti použitia a zapamätania. Typov akordov je hrozne veľa a implementovanie progresívnejších by bolo pre účely tohto nástroja kontraproduktívne, preto sa zvolilo päť najčastejších, ktoré bohato stačia na performovanie bežnej hudby mimo progresívnych hudobných žánrov ako napríklad jazz.

Schéma rozdelenia koreňových tónov a typov akordov do konkrétnych polôh v kruhoch
Schéma rozdelenia koreňových tónov a typov akordov do konkrétnych polôh v kruhoch
Ukážka komponovania tónov akordu pomocou koreňového tónu a typu
Ukážka komponovania tónov akordu pomocou koreňového tónu a typu

Na videu je prezentované fungovanie generovania obrazu a zvuku ovplyvňované pohybom v reálnom čase. Zobrazená kostra je reprezentácia rozpoznaného použivateľa zariadením Kinect. Performovaná skladba je jednoduchšia verzia piesne Milovanie v daždi.

Rozšíriteľnosť a škálovateľnosť

Prednosťou architektúry nástroja je to, že jadro a generátory môžu bežať na odlišných zariadeniach, keďže komunikujú sieťovo. Je teda odporúčané generátory spúšťať na dedikovaných zariadeniach vybavených vhodnými prostriedkami pre čo najlepšiu podporu zvuku či obrazu, a jadro na samostatnom zariadení bez náročnejších parametrov. V prípade, že by sa LAN sieť nafingovala prostredníctvom tunelov, napríklad nástrojom Hamachi a jemu podobnými, bolo by možné spúšťať jadro a generátory dokonca na vzdialených zariadeniach, napríklad pokojne aj cez internet pomocou nejakej komunikačnej služby.

Nástroj taktiež poskytuje veľmi prijateľnú možnosť rozšírení. Keďže celá komunikácia jadra s generátormi je riešená sieťovo, je veľmi jednoduché pridať napríklad prídavný generátor. Tento generátor by skrátka len čakal na impulz a v jadre by pribudol modul obstarávajúci posielanie impulzov s údajmi na špecifickú adresu na sieti. Takýmto spôsobom je možné nástroj obohatiť o ďalšie zmyslové vnemy, napríklad o haptický vnem prostredníctvom vesty, špeciálnych rukavíc, alebo hoci aj ovládačov, alebo napríklad o čuchový vnem prostredníctvom rôznych zariadení generujúcich základné pachy na chemickej báze. Taktiež je možné pridať ďalší zvukový alebo obrazový generátor s iným zameraním, napríklad by sa generovaný obraz mohol premietať v Cave a zároveň na monitore či mobilnom zariadení. Rovnako aj zvuk by sa mohol generovať v dvoch prúdoch, napríklad primárne cez spomínaný Sonic Pi a sekundárne napríklad syntetizátorom či iným zariadením.

Záver

Výsledkom celej tejto práce je plne funkčný hudobný nástroj poskytujúci možnosť generovania hudby a vizuálneho obrazu na základe pohybov performera. Nástroj je navrhnutý na čo najintenzívnejšie a najpohlcujúcejšie používanie a umelecké prežívanie. Okrem toho bol kladený veľký dôraz na jednoduchú a bezproblémvú rozšíriteľnosť a škálovateľnosť nástroja o nové komponenty a moduly a rovnako na zmenu už existujúcich. Detaily o návrhu a implementácii nástroja môžete nájsť v diplomovej práci Virtuálny hudobný nástroj.