Upload
truongkiet
View
224
Download
0
Embed Size (px)
Citation preview
Univerza v Ljubljani
Fakulteta za racunalnistvo in informatiko
David Koren
Aplikacija za ucenje igranja basov
diatonicne harmonike
DIPLOMSKO DELO
VISOKOSOLSKI STROKOVNI STUDIJSKI PROGRAM PRVE
STOPNJE RACUNALNISTVO IN INFORMATIKA
Mentor: vis. pred. dr. Borut Batagelj
Asistent: as. Bojan Klemenc
Ljubljana 2013
Rezultati diplomskega dela so intelektualna lastnina avtorja in Fakultete za ra-
cunalnistvo in informatiko Univerze v Ljubljani. Za objavljanje ali izkoriscanje
rezultatov diplomskega dela je potrebno pisno soglasje avtorja, Fakultete za racu-
nalnistvo in informatiko ter mentorja.
Besedilo je oblikovano z urejevalnikom besedil LATEX.
Izjava o avtorstvu diplomskega dela
Spodaj podpisani David Koren, z vpisno stevilko 63060131, sem avtor di-
plomskega dela z naslovom: Aplikacija za ucenje igranja basov diatonicne
harmonike
S svojim podpisom zagotavljam, da:
• sem diplomsko delo izdelal samostojno pod mentorstvom vis. pred. dr.
Boruta Batagelja,
• so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek
(slov., angl.) ter kljucne besede (slov., angl.) identicni s tiskano obliko
diplomskega dela
• soglasam z javno objavo elektronske oblike diplomskega dela v zbirki
”Dela FRI”.
V Ljubljani, dne 2. julija 2013 Podpis avtorja:
Kazalo
Povzetek
Abstract
1 Uvod 1
2 Pregled nacinov ucenja diatonicne harmonike 3
2.1 Klasicni nacini ucenja diatonicne harmonike . . . . . . . . . . 4
2.2 Racunalniski programi za ucenje diatonicne harmonike . . . . 7
3 Obogatena resnicnost 11
3.1 Uvod v obogateno resnicnost . . . . . . . . . . . . . . . . . . . 11
3.2 Uporaba obogatene resnicnosti . . . . . . . . . . . . . . . . . . 12
3.3 Ucenje igranja glasbenih instrumentov z uporabo obogatene
resnicnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Uporabljena orodja 23
4.1 Razvojno okolje Xcode in programski jezik Objective C . . . . 23
4.2 Orodje Cubase . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Virtualni instrument AUSampler . . . . . . . . . . . . . . . . 27
5 Analiza metod zaznave basne tipkovnice diatonicne harmo-
nike 29
5.1 Neprimerni nacini zaznave basne tipkovnice . . . . . . . . . . 29
KAZALO
5.2 Detekcija oznake z uporabo odprtokodne programske knjiznice
OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Predstavitev obogatene resnicnosti z uporabo vmesnika OpenGL 43
6.1 Smer stiskanja ali raztezanja harmonike . . . . . . . . . . . . . 45
6.2 Prijem ustrezne tipke . . . . . . . . . . . . . . . . . . . . . . . 45
6.3 Prijem naslednje tipke . . . . . . . . . . . . . . . . . . . . . . 47
7 Podatkovni del aplikacije 49
7.1 Zapis podatkov o prstnih prijemih v datoteki MIDI . . . . . . 50
7.2 Zapis podatkov o smeri stiskanja meha v datoteki MIDI . . . . 52
8 Virtualni instrument za predvajanje zvoka diatonicne har-
monike 53
8.1 Arhitektura virtualnega instrumenta za predvajanje datoteke
MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.2 Predstavitev datoteke MIDI v aplikaciji . . . . . . . . . . . . . 57
9 Sinhronizacija predvajane pesmi s prikazom obogatene re-
snicnosti 59
10 Aplikacija za ucenje igranja basov diatonicne harmonike 63
10.1 Glavno okno aplikacije . . . . . . . . . . . . . . . . . . . . . . 64
10.2 Nastavitve predvajanja skladbe . . . . . . . . . . . . . . . . . 65
10.3 Nastavitve prikaza obogatene resnicnosti . . . . . . . . . . . . 67
11 Moznosti izboljsav in razsiritev 71
11.1 Zaznavanje prstov s pomocjo barv ali oznak . . . . . . . . . . 71
12 Sklepne ugotovitve 73
Povzetek
Ucenja igranja glasbenega instrumenta se obicajno lotimo s pomocjo glas-
benega ucitelja. V kolikor tega ne storimo obstaja velika verjetnost, da se
naucimo napacnega igranja. Za ucenje igranja glasbenih instrumentov ob-
stajajo racunalniski programi ter aplikacije, ki na zaslon izrisujejo pravilne
prijeme tipk, vendar pa imajo velikokrat skupno pomanjkljivost, saj ne vse-
bujejo informacij pravilnega vrstnga reda igranja. V tej diplomski nalogi
je bila razvita aplikacija za tablicni racunalnik Apple iPad, ki s pomocjo
obogatene resnicnosti, nauci uporabnika pravilnega igranja basnega dela di-
atonicne harmonike. Najprej je predstavljena obogatena resnicnost s primeri
uporabe na razlicnih podrocjih. Sledi predstavitev uporabljenih orodij. V
nadaljevanju se osredotocimo na problem detekcije tipk oziroma basne tip-
kovnice diatonicne harmonike s pomocjo racunalniskega vida. Po raziskavi
obstojecih tehnologij, je bila uporabljena detekcija oznake z uporabo od-
prtokodne programske knjiznice za racunalniski vid OpenCV. Po detekciji
je predstavljen se izris obogatene resnicnosti. Posvetiti se je potrebno tudi
prednostim izbora pesmi v zapisu formata protokola MIDI. Proti koncu na-
loge je podrobno razlozen graficni vmesnik aplikacije. Pred zakljuckom so
izpostavljene moznosti izboljsave aplikacije.
Kljucne besede:obogatena resnicnost, virtualni instrument, ucenje igranja glasbila, diatonicna
harmonika, OpenCV, detekcija oznake, racunalnkiski vid
Abstract
Learning to play a musical instrument is usually tackle with the help of a
music teacher. For learning purposes there already exist computer programs
and applications that help the user in learning process. Many programs
have a disadvantage of not showing the correct finger order while playing
an instrument. In this thesis work we developed an application for an Ap-
ple iPad tablet, which teaches the user how to play the bass notes on the
diatonic accordion. The presented information is based on the techonolgy
called augmented reality. First are presented examples of augmented real-
ity applications in various fields of use. Followed by a presentation of the
programs and tools used in the development. In the following we focus on
the problem with detection of the keys on the diatonic accordion. Among
available technologies the marker detection algorithm based on open source
library for coumputer vision OpenCV is being used. Then the outline of
augmented reality is presented. Moving along the thesis work presents the
advantages of MIDI protocol for saving all the data needed in the applica-
tion. Before the completion of the thesis work reader will get to know the
possible improvements of final implemented application.
Key words:augmented reality, virtual instrument, music instructor, diatonic accordion,
OpenCV, marker detection, computer vision
Seznam uporabljenih kratic in
simbolov
• AR (Augmented Reality) – obogatena resnicnost
• CV (Computer Vision) – racunalniski vid
• IDE (Interface Development Environment) – razvojno okolje
• GUI (Graphic User Interface) – graficni uporabniski vmesnik
• MIDI (Musical Instrument Digital Interface) – digitalni vmesnik glas-
benega instrumenta
• CHT (Circle Hough Transform) – Houghova krozna transformacija
• PNG (Portable Network Graphics) – prenosljiva spletna grafika
• FPS (Frames Per Second) – stevilo slik na sekundo
• WAVE (Waveform Audio File Format) – format datoteke z zvocnim
zapisom
• RGBA (Red Green Blue Alpha) – rdeca zelena modra prosojnost
• HUD (Head Up Display) – prosojni ekran za prikaz obogatene resnicnosti
Poglavje 1
Uvod
Igranja diatonicne harmonike sem se naucil pri zasebnem ucitelju. Kot po-
znavalca instrumenta me velikokrat zmoti napacno igranje basov diatonicne
harmonike, kar tudi izda harmonikasa samouka, ki se je naucil napacnega
igranja. Zato smo v diplomski nalogi naredili aplikacijo, ki uporabnika nauci
pravilnega igranja basov diatonicne harmonike, s cimer harmonikas dodatno
popestri igrano pesem. Proces ucenja temelji na tehnologiji obogatene re-
snicnosti.
Pri razvoju aplikacije so bile preizkusene razlicne tehnologije za razpo-
znavo objektov s pomocjo racunalniskega vida, ki so se izkazale za nepri-
merne. Kot najprimernejso tehnologijo smo izbrali zaznavo oznake z uporabo
odprtokodne programske knjiznice OpenCV. Oznako kvadratne oblike, ki jo
aplikacija zazna, namestimo poleg basne tipkovnice harmonike. Pred samim
razvojem je bilo potrebno opraviti podrobno raziskavo obstojecih programov,
ki s pomocjo obogatene resnicnosti ucijo igranja razlicnih glasbil. Hkrati
smo predstavili vse razlicne nacine ucenja diatonicne harmonike. Poleg same
predstavitve obogatene resnicnosti aplikacijo dopolnimo tudi z implemen-
tacijo virtaulnega instrumenta sposobnega reprodukcije originalnega zvoka
diatonicne harmonike.
1
Poglavje 2
Pregled nacinov ucenja
diatonicne harmonike
Diatonicna harmonika se je razvila iz ustne harmonike leta 1821. Izumi-
telj obeh pa je Nemec Ludwig Buschmann [1]. Kmalu je postala ljudski
instrument in tak status uziva se danes.
V splosnem harmonike delimo na skupini diatonicnih ter kromaticnih har-
monik. Pomembna razlika med njima je v nacinu raztezanja meha, saj se pri
diatonicnih harmonikah zaigrani ton tipke spreminja glede na stiskanje ali
raztezanje meha, medtem ko pri kromaticnih harmonikah ostaja isti. Po-
membna razlika med tema dvema vrstama harmonik je ta, da kromaticna
harmonika pokrije vse tone ter lestvice, medtem ko pri diatonicni harmoniki
temu ni tako. Tako obstajajo razlicne uglasitve diatonicnih harmonik, pri
katerih se za isti nivo zvisa ali zniza intonacija vseh tipk. Igranje na razlicno
uglasenih diatnicnih harmonikah pa ostaja enako, le melodija zveni v drugih
durovskih visinah. Pri trivrstnih diatonicnih harmonikah so poznane sledece
durovske kombinacije: G-C-F, Gis-Cis–Fis, A-D-G, B-Es-As, H-E-A, C-F-B,
Cis-Fis-H ter D-G-C. Se enkrat ponovimo, da je pri razlicnih uglasitvah di-
atonicnih harmonik nacin igranja enak.
Danasnje diatonicne harmonike se v osnovi ne razlikujejo vec tako, kot so
se v preteklosti. V Sloveniji je trenutno najbolj priljubljen model trivrstne
3
4POGLAVJE 2. PREGLED NACINOV UCENJA DIATONICNE
HARMONIKE
diatonicne harmonike (slika 2.1), s priblizno 40 tipkami na melodicni desni
polovici ter 11 tipkami na levi basni polovici. Ta model je uporabljen tudi
v nasi nalogi. V praksi basno stran imenujemo leva stran ali leva polovica,
saj nanjo igramo z levo roko. Melodicno stran pa imenujemo desna stran ali
desna polovica.
Slika 2.1: Model trivrstne diatonicne harmonike.
2.1 Klasicni nacini ucenja diatonicne harmo-
nike
Sledi pregled klasicnih nacinov ucenja diatonicne harmonike brez racunalniskih
programov.
2.1. KLASICNI NACINI UCENJA DIATONICNE HARMONIKE 5
2.1.1 Ucenje diatonicne harmonike po posluhu
Pri ucenju igranja na diatonicno harmoniko po posluhu ni nobene potrebe
po poznavanju glasbene teorije. Ucenje igranja poteka tako, da ucitelj zaigra
pesem in nato ucencu razlozi prstne prijeme. Ucencu pri ucenju pomagajo
tudi posnetki ucene skladbe. Vecina harmonikasev se je igranja diatonicne
harmonike naucila na ta nacin, saj je v Sloveniji veliko harmonikasev, ki nu-
dijo instrukcije igranja diatonicne harmonike.
V Nemciji, kakor tudi pri nas, obstaja moznost ucenja diatonicne harmo-
nike s pomocjo gledanja video posnetkov. V Nemciji ter Avstriji je izdelek
poznan pod imenom �Musikschule zu Hause� [3], medtem ko se slovenska
razlicica imenuje �Glasbena sola na daljavo� [2]. Uporabniski vmesnik je
viden na sliki 2.2. Harmonikas se tu uci igranja harmonike po posluhu. Po-
snetek vsebuje zaigrano pesem ter razlago pravilnih prstnih prijemov. Ker
tu ne gre za racunalniski program, ampak le za video posnetek igranja z
razlozenimi prstnimi prijemi, smo ta nacin ucenja vkljucili v skupino nacina
ucenja po posluhu.
Slika 2.2: Glasbena sola na daljavo.
6POGLAVJE 2. PREGLED NACINOV UCENJA DIATONICNE
HARMONIKE
2.1.2 Ucenje po principu igre potapljanja ladjic
Ena izmed alternativ je tudi nacin ucenja po principu priljubljene igre pota-
pljanja ladjic. Basne tipke so glede na pozicijo ostevilcene s stevilkami od 1
navzgor. Tipke na melodicni strani pa so zapisane najprej z ustrezno vrsto
(A, B, C, D), kateri sledi se zaporedna stevilka tipke v dani vrsti. Legenda
tipk je vidna na sliki 2.3. Tako so sekvence prijemov zapisane kot �pritisni
tipki A3,A4 ter bas stevilka 3�. Hkrati pa je podana se informacija o stisku
in raztezanju meha. Obstaja vec razlicic taksnega nacina ucenja, saj so ne-
kateri ucitelji harmonike razvili tudi svoje razlicice, ki v osnovi temeljijo na
principu igre potapljanja ladjic.
Slika 2.3: Legenda oznacenih tipk za ucenje po principu potapljanja ladjic.
2.2. RACUNALNISKI PROGRAMI ZA UCENJE DIATONICNEHARMONIKE 7
2.1.3 Ucenje diatonicne harmonike s klasicnim notnim
sistemom
Prvi sistematicni notni zapis za diatonicno harmoniko je nastal komaj leta
1975 v Avstriji. Leta 1988 gospod Stanko Zagar predstavi prvi slovenski
ucbenik �Sola za diatonicno harmoniko�, v katerem je uporabljen prej ome-
njeni notni sistem [1]. Leta 2003 pa je diatonicna harmonika postala del
nizje glasbene sole. To je za diatonicno harmoniko velik dosezek, saj prej
ni obstajala nobena uradna ustanova, ki bi ucila igranja tega instrumenta.
Tu ucenje prvic poteka z uporabo klasicnega notnega sistema, s cimer se je
diatonicna harmonika popolnoma izenacila z ostalimi instrumenti.
2.2 Racunalniski programi za ucenje diatonicne
harmonike
Skladno z razsirjenostjo diatonicne harmonike so nastali tudi racunalniski
programi za ucenje tega instrumenta. Na svetovnem trgu dejansko obsta-
jajo le trije taksni primerki, ceprav aplikacija �Strasser harmonika� komaj
ustreza pogojem programa za ucenje diatonicne harmonike. Za potrebe raz-
iskave smo povprasali tudi lastnika obeh slovenskih programov �LTK har-
monika� in �VSLN harmonika�, ki potrdita, da tudi na svetovnem trgu ne
obstaja nobena druga razlicica racunalniskega programa za ucenje diatonicne
harmonike.
2.2.1 Racunalniska programa �VSLN� ter �LTK har-
monika�
G. Robert Goter, eden izmed najboljsih harmonikasev na svetu, je leta 2005
skupaj z g. Darkom Obretanom in sodelavci ustvaril racunalniski program
�Vsak se lahko nauci igrati harmoniko - VSLN� [4] (slika 2.5). Alterna-
tivo temu programu predstavlja racunalniski program �LTK harmonika� [6]
8POGLAVJE 2. PREGLED NACINOV UCENJA DIATONICNE
HARMONIKE
(slika 2.4), ki je bil izdelan leta 2004. Avtorja programa sta g. Tomaz in
Luka Knavs. V osnovi sta si programa zelo podobna, zato jih obravnavamo
v istem razdelku.
Slika 2.4: Glavni uporabniski vmesnik programa �LTK harmonika�.
Slika 2.5: Glavni uporabniski vmesnik programa �VSLN�.
2.2. RACUNALNISKI PROGRAMI ZA UCENJE DIATONICNEHARMONIKE 9
Pri obeh programih so na ekranu izrisane tipke, katere se ob predvaja-
nju pesmi obarvajo in tako podajo informacijo o pravilnem prstnem prijemu.
Prsti so doloceni z zaporedno stevilko od 1 do 5. Med predvajanjem pesmi
se na zaslonu izrisuje tudi informacija smeri raztezanja ali stiskanja meha
ter besedilo pesmi. Programa omogocata pomikanje po pesmi in nastavlja-
nje hitrosti predvajanja skladbe. Za taksno ucenje uporabnik ne potrebuje
nobenega znanja glasbene teorije, saj je tu dejansko uporabljen nacin ucenja
po posluhu, opisan v podpoglavju 2.1.1. Ena vecjih razlik programov je ta,
da program �LTK harmonika� ne prikazuje pravilnih prstnih prijemov ba-
sne strani harmonike. Hkrati pa so pri programu �VSLN� zaigrane pesmi
boljse kvalitete, saj jih je zasnoval g. Robert Goter [5]. Kot harmonikas je
namrec leta 1999 osvojil naslov absoultnega svetovnega prvaka v igranju na
diatonicno harmoniko. �VSLN� program je tako nekoliko boljsi od konku-
renta �LTK harmonika�. Oba racunalniska programa sta placljiva.
2.2.2 Aplikacija �Strasser Harmonika�
Ucenja diatonicne harmonike se je mogoce nauciti tudi s pomocjo aplikacije
�Strasser Harmonika� (slika 2.6). Izdelalo jo je nemsko podjetje Byte Po-
ets [44], le za uporabo na tablicnem racunalniku iPad. Aplikacija omogoca
ucenje le melodicne strani stirivrstne diatonicne harmonike. Ob predvajanju
pesmi se tipke ustrezno obarvajo. Pravilni prstni red igranja ni podan, kar je
velika pomanjkljivost programa, saj ima pravilni prstni red velik pomen pri
pravilnem igranju glasbila. Za namen ucenja aplikacija ponuja le 5 avstrijskih
pesmi. Omogoceno je snemanje lastnih skladb, katere lahko uporabnik tudi
deli z ostalimi uporabniki te iste aplikacije. S pritiski po zaslonu je omogoceno
tudi igranje harmonike tako, da za samo ucenje fizicna diatonicna harmonika
sploh ni potrebna. Aplikacija je brezplacna, kajti narejena je z namenom
reklamiranja proizvajalca harmonik.
10POGLAVJE 2. PREGLED NACINOV UCENJA DIATONICNE
HARMONIKE
Slika 2.6: Glavni uporabniski vmesnik mobilne aplikacije �Strasser Harmo-
nika�.
Po pregledu programskih resitev ucenja diatonicne harmonike ugotovimo,
da je racuanlniski program �VSLN�, opisan v podpoglavju 2.2.1, trenutno
najboljsi program za ucenje igranja diatonicne harmonike.
Poglavje 3
Obogatena resnicnost
Ker zelimo narediti aplikacijo, ki bo s pomocjo obogatene resnicnosti ucila
pravilnega igranja basov diatonicne harmonike, si poglejmo kaj obogotena re-
snicnost sploh je. Obravnavali bomo tudi programe, ki s pomocjo obogatene
resnicnosti ucijo igranja razlicnih glasbenih instrumentov.
3.1 Uvod v obogateno resnicnost
Ideja obogatene resnicnosti je prvic omenjena ze v letu 1901, kjer je gospod
L. Frank Baum v svojem literarnem delu [25] predstavil misel o elektron-
skih ocalih, ki preko lec podajo informacijo o znacaju videne osebe. Infor-
macija je bila s pomocjo predstavitve posebnih ocal predstavljena na celu
glave videne osebe. Ta ideja pa danes predstavlja osnovo tehnologije oboga-
tene resnicnosti (angl. Augmented Reality – AR) [7]. S pomocjo zmogljivih
racunalnikov je sedaj mogoce predstaviti kombinacijo realnega sveta oboga-
tenega z racunalnisko obdelanimi ucinki. Pojem obogatene resnicnosti pa
ne zajema le vizualnih ucinkov, temvec tudi ostala podrocja multimedije.
Ronald Azum je postavil sledece pogoje, ki morajo biti izpolnjeni, da lahko
govorimo o dejanski obogateni resnicnosti [8]. Potrebno je prepletanje real-
nega sveta z navideznimi elementi. Zagotovljena mora biti tridimenzionalna
umestitev objekta v sliki. Da ugodimo se nacelu resnicnosti, je obvezna in-
11
12 POGLAVJE 3. OBOGATENA RESNICNOST
teraktivnost v realnem casu.
3.2 Uporaba obogatene resnicnosti
Trenutno se nahajamo v obdobju razcveta aplikacij z obogateno resnicnostjo.
Pojavljajo se nove tehnicne resitve, kakor tudi nove ideje z novimi podrocji
uporabe. Spoznajmo najbolj razsirjene.
Med popularnejsimi je podrocje arhitekture ter notranjega opremljanja
prostorov, kjer s pomocjo obogatene resnicnosti razporejamo pohistvo po
prostoru ali celo stavbe v okolju. Slika 3.1 prikazuje uporabo mobilne apli-
kacije �Augment – 3D� [15], s katero lahko uporabnik s pomocjo obogatene
resnicnosti razporeja pohistvo po prostoru.
Slika 3.1: Mobilna aplikacija �Augment – 3D�.
Medicina predstavlja eno izmed vecjih potencialnih podrocij za uporabo
obogatene resnicnosti. Aplikacije ponujajo tridimenzionalen vpogled v clovesko
telo, kar omogoca lazje razumevanje delovanja telesa kot celote ter tudi po-
sameznih organov. Hkrati pa sem vkljucujemo tudi podrocje rehabilitacije
bolnikov ter podrocje uporabe obogatene resnicnosti v izobrazevanju. Slika
3.2 prikazuje uporabo mobilne aplikacije �Anatomy - 4D� [12] s funkcijo
vpogleda v tridimenzionalni objekt cloveskega telesa.
3.2. UPORABA OBOGATENE RESNICNOSTI 13
Slika 3.2: Mobilna aplikacija �Anatomy 4D�.
Obogateno resnicnost uporabljajo tudi v proizvodnji oziroma v indu-
striji [9]. Dobrodosla je pri razvoju novih izdelkov ter tudi pri postavitvah
delovnih strojev ali proizvodnih linij v tovarni. Primer taksnega programa
je viden na sliki 3.3.
Slika 3.3: Razporeditev delovnega stroja v tovarni s pomocjo obogatene re-
snicnosti.
Besedo racunalnik marsikdo poveze s pojmom racunalniskih iger, tako
tudi to podrocje ne zaostaja v uporabi obogatene resnicnosti. Na trgu je ze
veliko iger s to tehnologijo. Na sliki 3.4 vidimo primer ene izmed tehnolosko
14 POGLAVJE 3. OBOGATENA RESNICNOST
bolje razvitih iger na trgu, imenovano �ar.drone� [11]. Helikopter fizicne
narave, ki se nahaja na desni strani slike 3.4, je mogoce kontrolirati s pame-
tnim telefonom preko brezzicnega omrezja. Ker pa ima helikopter na prednji
strani tudi kamero, se slika posilja na pametni telefon, kjer je nalozena apli-
kacija, v kateri se je potrebno bojevati z nasprotniki prikazanimi z obogateno
resnicnostjo. Izgled aplikacije je viden na na levi polovici slike 3.4.
Slika 3.4: Graficni vmesnik aplikacije z obogateno resnicnostjo ter helikopter
s stirimi propelerji.
Tehnologija obogatene resnicnosti se uporablja tudi pri reklamiranju ter
prodaji izdelkov podjetij. Potencialnemu kupcu se predstavi 3D model pro-
dukta. Posledicno se uporabnik lazje odloci za nakup nekega izdelka. Na
sliki 3.5 vidimo primer, kjer si uporabnica nadene izbrano oblacilo s pomocjo
obogatene resnicnosti in posledicno lazje odloci za nakup [10].
3.2. UPORABA OBOGATENE RESNICNOSTI 15
Slika 3.5: Program �The Webcam Social Shopper�.
Eno izmed starejsih podrocij uporabe predstavlja uporaba v vojski. Sis-
tem �HUD� (angl. Head Up Display – HUD) na sliki 3.6 pilotu prikazuje
podatke na prosojnem zaslonu. Sistem zazna tudi ostala letala v zraku,
tako da jim lahko pilot lazje sledi. Sistem podrobneje opisan v poglavju 3.2
clanka [8].
Slika 3.6: Delovanje �HUD� sistema v letalu.
Na podrocju turizma se obogatena resnicnost uporablja za podajanje tu-
ristu uporabnih informacij. Aplikacija �Musem of London� (slika 3.7) pred-
stavlja dober primer, kjer obogatena resnicnost dopolni fotografirano stavbo
ali objekt z zgodovinsko sliko ter informacijo o tej stavbi [13]. Aplikacija je
dozivela velik uspeh ter s tem pripomogla k vecji obiskanosti muzejev mesta
London.
16 POGLAVJE 3. OBOGATENA RESNICNOST
Slika 3.7: Aplikacija �Museum of London�.
3.3 Ucenje igranja glasbenih instrumentov z
uporabo obogatene resnicnosti
Podrocje ucenja glasbenih instrumentov s pomocjo obogatene resnicnosti
ostaja dokaj neraziskano. Poglejmo si dosedanji razvoj.
3.3.1 Primer aplikacije, ki uci igranja klavirja
Spoznajmo zanimiv primerek aplikacije, ki s pomocjo obogatene resnicnosti
uci igranja lestvic ter prijema akordov na klavirju [14]. Uporabnik ima na
glavi celado z namesceno kamero. Za zaznavo tipkovnice klavirja sistem
uporablja algoritem, ki detektira oznako namesceno na klaviaturi. Program
z modro barvo obarva tipko. Obarvano tipko mora uporabnik nato priti-
snit. Z zeleno obarva pravilno pritisnjeno tipko, napacno pritisnjeno pa z
rdeco. Kontrola pritisnjene tipke se izvaja s pomocjo protokola MIDI. Klavi-
atura je povezana z racunalnikom preko MIDI kabla, preko katerega sporoca
racunalniku informacijo o pritisnjeni tipki. Slika 3.8 prikazuje pravilno pri-
tisnjeno tipko, saj je obarvana z zeleno barvo. Sistema s taksnim nadzorom
pravilnega igranja ni mogoce uporabiti pri ucenju diatonicne harmonike. Po-
znane so harmonike z vgrajenim modulom MIDI, katerega lahko povezemo
na racunalnik. Zaradi nacina sestave diatonicne harmonike pa to ni mogoce.
3.3. UCENJE IGRANJA GLASBENIH INSTRUMENTOV Z UPORABOOBOGATENE RESNICNOSTI 17
Pri diatonicni harmoniki se namrec s spremembo premikanja meha spremeni
tudi ton pritisnjene tipke in tako v programu pritisnjene tipke ne moremo
preverjati. To bi bilo mogoce le z posebej programiranim MIDI sistemom,
ki bi preko enega kanala MIDI posiljal informacije o pritisnjeni tipki glede
na to ali harmonikas stiska ali razteza meh. Tak sistem bi lahko uporabili
na klavirski harmoniki, saj se pri menjavi smeri stiskanja meha igrani ton ne
spremeni.
Program ne podaja nobenih informacij pravilnega prstnega reda igranja,
kar predstavlja veliko pomankljivost. Za pravilno igranje klavirja je, kakor
pri ostalih glasbilih, pomemben pravilen prstni red igranja.
Slika 3.8: Program za ucenje igranja klavirja z uporabo obogatene resnicnosti.
3.3.2 Primer aplikacije, ki uci igranja bas kitare
Sedaj si poglejmo primer implementacije ucenja bas kitare s pomocjo obo-
gatene resnicnosti [16]. Tipicna bas kitara ima le stiri strune, medtem ko jih
ima standardna kitara sest. Strune na bas kitari so debelejse kot pri navadni
kitari. Razdalje med preckami na vratu kitare so na bas kitari vecje kot pri
standardni kitari.
18 POGLAVJE 3. OBOGATENA RESNICNOST
Algoritem uporablja dve oznaki, eno vecjo za detekcijo kitare ter drugo,
manjso za detekcijo glasbenikovega prsta. Sistem deluje tako, da najprej za-
zna oznake, nato pa oznaci lokacijo na struni kitare, katero mora uporabnik
zaigrati. Pravilna postavitev oznak je vidna na sliki 3.9. Ko sistem zazna, da
oznaka na glasbenikovem prstu prekrije lokacijo na struni, oznaci naslednjo
lokacijo na eni izmed strun bas kitare. Program je brez zvoka. Algoritem
ima doloceno le zaporedje lokacij na strunah. Uporabniku ni podana nobena
informacija o ritmu ter trajanju prijema strune. Program ne vsebuje nobene
informacije o pravilnem prstnem redu igranja, saj je implementacija narejena
le za igranje z enim prstom. Zaradi vseh pomanjkljivosti trenutna razlicica
programa ni primerna za ucenje igranja bas kitare.
Slika 3.9: Program za ucenje igranja bas kitare z uporabo obogatene re-
snicnosti.
3.3.3 Primer aplikacije, ki s pomocjo obogatene re-
snicnosti uci igranja klasicne kitare
Na sliki 3.10 je vidna uporaba programa za ucenje kitare s pomocjo oboga-
tene resnicnosti [18]. Pri razvoju programa so uporabili izsledke raziskave
programa predstavljenega v prejsnjem podpoglavju 3.3.2. Za zaznavo kitare
je tudi tu uporabljena detekcija oznake programske knjiznice ARToolKit [19].
Ker pa se zaradi majhnih razdalij med preckami in strunami sama detekcija
3.3. UCENJE IGRANJA GLASBENIH INSTRUMENTOV Z UPORABOOBOGATENE RESNICNOSTI 19
oznake ni izkazala dovolj dobro, je algoritem podkrepljen se z detekcijo ro-
bov vratu kitare. Program uporabnika uci pravilnega prijema akordov v
predvajani pesmi. Prikaz obogatene resnicnosti prijema akordov je narejen
s tridimenzionalno sliko prstov, ki prikazuje pravilni prstni polozaj prijema
akordov na kitari. Na ta nacin se uporabnik nauci pravilnega prstnega pri-
jema akordov ter tudi pravilnega igranja predvajane skladbe.
Slika 3.10: Program za ucenje igranja kitare z uporabo obogatene resnicnosti.
V clanku [20] smo spoznali se eno podobno implementacijo programa
namenjeno ucenju igranja kitare. Oznaka za detekcijo kitare je postavljena
na vrh vratu kitare kot je vidno na sliki 3.11. Ta sistem uporablja le detekcijo
oznake, medtem ko je v prejsnjem opisanem programu [18] detekcija oznake
podkrepljena z detekcijo samega vratu kitare. Prikaz obogatene resnicnosti
je opravljen s krogci, ki dolocajo polozaj pritisnjene strune. Informacija o
pravilnem prstnem prijemu akordov ni podana. Sistem uporablja vec oznak,
saj vsaka oznaka doloca svoj akord. Ko se uporabnik zeli nauciti prijema
naslednjega akorda, mora fizicno zamenjati oznako na kitari, kar je nerodno
za uporabo. Boljso razlicico predstavlja prejsnji program, viden na sliki 3.10.
20 POGLAVJE 3. OBOGATENA RESNICNOST
Slika 3.11: Program za ucenje pravilnih prijemov akordov na klasicni kitari
z uporabo obogatene resnicnosti.
3.3.4 Primer programa za rehabilitacijo bolnika s pomocjo
ucenja igranja klavirja
Kap bolnika prizadene na razlicne nacine. Med pogostejsemi posledicami se
pojavlja okvarjena motorika okoncin, vecinoma rok. V clanku [17] je opisan
program, ki s pomocjo detekcij dveh oznak ter robotske rokavice s senzorji,
pomaga bolniku pri uspesnejsi rehabilitaciji (slika 3.12). Program detektira
prvo oznako postavljeno na mizo pred uporabnika, na podlagi katere se na
zaslonu izrise virtualna tipkovnica klavirja. Nato program poisce se drugo
oznako, s katero algoritem dobi informacijo o polozaju roke v prostoru. Druga
oznaka je namrec namescena na robotski rokavici, katero si bolnik nadene na
roko. Rokavica ima namescene senzorje, ki programu sporocaju informacijo
o skrcenosti prstov. Na podlagi informacij o polozaju roke in skrcenosti pr-
stov algoritem doloci katera tipka je bila pritisnjena. Mozno je tudi dvorocno
igranje ter izbira skladb razlicnih zahtevnosti. Kljub temu, da je osnovni na-
men programa rehabilitacija bolnika, ponuja povsem nov nacin ucenja igranja
instrumenta z uporabo obogatene resnicnosti. Z zdruzitvijo tega programa
s programom opisanim v podpoglavju 3.3.1 se lahko nadejamo aplikacije za
kvalitetno ucenje igranja na klavir.
3.3. UCENJE IGRANJA GLASBENIH INSTRUMENTOV Z UPORABOOBOGATENE RESNICNOSTI 21
Slika 3.12: Program za ucenje igranja klavirja, ki je prvotno namenjen reha-
bilitaciji bolnikov.
Spoznali smo pet programov, ki s pomocjo obogatene resnicnosti ucijo
igranja razlicnih glasbenih instrumentov. Zaradi njihove razlicne namemb-
nosti ima vsak program svoje posebnosti. Vsem predstavljenim pa je skupna
implementacija detekcije oznake, katera predstavlja glavno pomoc pri izrisu
obogatene resnicnosti.
Poglavje 4
Uporabljena orodja
Pri razvoju aplikacije, kot osrednje teme te diplomske naloge, so bila upora-
bljena razlicna orodja. Ker je aplikacija namenjena za uporabo na tablicnem
racunalniku iPad, je odlocitev o razvojnem okolju trivialna. Aplikacije za
tablicni racunalnik iPad je mogoce izdelati le z orodjem Xcode. Orodje je
mogoce namestiti le na racunalnike z operacijskim sistemom Mac OS X.
Operacijski sistem je last podjetja Apple. Pri tem smo uporabili se profesi-
onalno orodje za zvocno produkcijo Cubase. Za implementacijo virtualnega
instrumenta pa je bilo uporabljeno orodje AUSampler.
4.1 Razvojno okolje Xcode in programski je-
zik Objective C
Razvojno okolje Xcode (angl. Interface development environment - IDE) [21]
je razvilo podjetje Apple. Xcode IDE je vidno na sliki 4.1. S tem orodjem
je mogoce izdelovati aplikacije za uporabo na strojni opremi podjetja Apple.
Namestitev razvojnega okolja Xcode je brezplacna, vendar ima svoje omeji-
tve. Brez zakupljene licence aplikacije ni mogoce testirati na fizicni napravi.
Licenco potrebujemo tudi za objavo aplikacije na portalu �App Store�, s
katerega si lahko uporabniki prenesejo aplikacijo na svojo napravo. Pri ra-
zvoju je bila uporabljena licenca Fakultete za racunalnistvo in informatiko.
23
24 POGLAVJE 4. UPORABLJENA ORODJA
Okolje Xcode ima implementirana vsa orodja, ki jih razvijalec potrebuje pri
programiranju aplikacij. V istem oknu je mogoc dostop do datotek z izvorno
programsko kodo ter urejanje graficnega uporabniskega vmesnika GUI (angl.
Graphic User Interface). Tu je mogoce aplikacijo tudi testirati na simulatorju
ali mobilni napravi iPad, iPhone ali iPod. Pri razvoju je bila uporabljena
razlicica orodja Xcode 4.6.
Slika 4.1: Zaslon razvojnega okolja Xcode.
Pomemben del okolja Xcode IDE imenovan �Instruments� (slika 4.2),
nam pomaga zagnati aplikacijo ter spremljati dogajanje in stanje zasedenosti
virov med samim izvjanjem na napravi [22]. S pridobljenimi podatki je moc
izlociti ozka grla ter sibkosti aplikacij, ki povzrocajo pocasnejse odzivanje ter
celo samodejno zapiranje aplikacije.
4.2. ORODJE CUBASE 25
Slika 4.2: Graficni uporabniski vmesnik orodja �Instruments�.
Razvojno okolje Xcode uporablja lasten objektno usmerjen programski
jezik Objective C [23]. Zasnovan je po vzoru starejsega programskega jezika
C. Za sam zacetek programiranja v programskem jeziku Objective C je bilo
potrebnega kar nekaj truda. Pozneje pa sta se razvojno okolje ter sam pro-
gramski jezik izkazala kot dokaj preprosta za uporabo. Podjetje Apple vsako
leto priredi konferenco, kjer predstavijo novosti svojega razvoja ter jezika
Objective C. Na podlagi konstantega razvoja programskega jezika Objective
C in programskih knjiznic menimo, da se bosta uporaba ter ucenje program-
skega jezika Objective C se poenostavila.
4.2 Orodje Cubase
Z vecanjem zmogljivosti racunalnikov se je povecevala tudi zmogljivost pro-
gramov za urejanje zvocnih posnetkov. Nemsko podjetje Steinberg je na
podrocju racunalniskih zvocnih sekvencerjev eden izmed pionirjev ter gonil-
nih sil samega razvoja. Njihov paradni konj se imenuje orodje Cubase [38],
katerega smo tudi mi uporabili za izdelavo datotek pesmi uporabljenih v apli-
kaciji. Uporabljena je bila trenutno najnovejsa razlicica programa Cubase 7.0
(slika 4.3). Program ni brezplacne narave, ampak to ni predstavljalo pro-
blema, saj sem lastnik licence za uporabo. Omeniti velja, da so bili s tem
26 POGLAVJE 4. UPORABLJENA ORODJA
programom posneti tudi vsi zvoki harmonike uporabljeni za reprodukcijo
zvoka harmonike v sami aplikaciji.
Slika 4.3: Zaslon programa za avdio produkcijo, imenovan Cubase, razlicice
7.0.
4.2.1 Protokol MIDI
Specifikacija protokola MIDI (angl. Musical Instrument Digital Interface)
je bila izdana avgusta leta 1983 [24]. Osnovna ideja protokola je nadzor vec
medseboj povezanih klaviatur oziroma modulov sintetizatorjev zvoka z le eno
klaviaturo. Na podlagi protokola MIDI so nastale tudi standardne datoteke
MIDI, ki omogocajo standardiziran zapis glasbenih sekvenc v formatu proto-
kola MIDI. Zaradi njihove majhne velikosti so bile v zacetku zelo prikladne
za uporabo. Sama datoteka ne vsebuje nobenega zvocnega zapisa, ampak le
kontrole sekvenc pesmi. Nepoznavalcu bi lahko razlozili, da je to le notni za-
pis pesmi v digitalni obliki, ceprav je vec kot to. Najpomembnejsi parametri
protokola MIDI so:
• �NOTE ON� (pritisk tipke),
• �NOTE OFF� (spust tipke),
• �NOTE NUMBER� (stevilka tipke),
4.3. VIRTUALNI INSTRUMENT AUSAMPLER 27
• �VELOCITY� (hitrost pritisnjene tipke),
• �PROGRAM NUMBER� (stevilka programa MIDI),
• �MIDI CHANNEL� (kanal MIDI).
Pri razvoju nas zanimajo le parametri �NOTE ON�, �NOTE OFF�, �VE-
LOCITY� ter �MIDI CHANNEL�, saj z njimi poskusimo predstaviti vse
informacije potrebne za implementacijo aplikacije.
4.3 Virtualni instrument AUSampler
AULab [39] je zastonjsko orodje podjetja Apple, ki deluje po principu ana-
logne zvocne mesalne mize. Uporabnik lahko uporabi vec kanalov, katerim
tudi doloci razlicne avdio-zvocne vhode. Na te kanale se lahko vkljuci tudi
razlicne digitalne procesorje zvocnega signala. Tipicen primer taksnega pro-
cesorja zvoka je efekt odmeva. Na mesalno mizo lahko vkljucimo tudi po-
sebne kanale brez zvocnih vhodov. Zvocni izvor teh posebnih kanalov pred-
stavljajo virtualni instrumenti. V nasi implementaciji je uporabljen virtualni
instrument AUSampler (slika 4.4). V ta virtualni instrument je mozno vsta-
viti zvocne datoteke formata WAVE (angl. Waveform Audio File Format)
ter jih razporediti tako, da vsaki zvocni datoteki dodelimo svojo tipko na
tipkovnici klaviature. S pritiskom dolocene tipke klaviature pricnemo s pred-
vajanjem zvocne datoteke dodeljene tej isti tipki. Podatke o razporejenosti
zvocnih posnetkov glede na polozaj tipk na klaviaturi izvozimo v posebno
datoteko formata �aupreset�, katero skupaj z vsemi zvocnimi datotekami
ponovno uporabimo pri programiranju novega virtualnega instrumenta nase
aplikacije.
28 POGLAVJE 4. UPORABLJENA ORODJA
Slika 4.4: Virtualni instrument AUSampler.
Poglavje 5
Analiza metod zaznave basne
tipkovnice diatonicne
harmonike
Cilj te naloge je izdelana aplikacija za ucenje basov diatonicne harmonike s
pomocjo obogatene resnicnosti, zato se osredotocimo na detekcijo basne polo-
vice harmonike, natancneje basnih tipk (slika 5.1). V slovenskem standardu
je le teh 11, 6 v prvi in 5 v drugi vrsti. Najprej bomo predstavili nacine
detekcije, ki so se izkazali kot neprimerni za uporabo.
5.1 Neprimerni nacini zaznave basne tipkov-
nice
Pregledani so bili razlicni nacini implementacije same detekcije harmonike.
V tem podpoglavju so opisani neprimerni nacini zaznave basne polovice har-
monike.
29
30POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
Slika 5.1: Basna tipkovnica diatonicne harmonike.
5.1.1 Zaznava regije barv
Pri detekciji s pomocjo zaznave regije barv (angl. Blob detection) [27] imamo
model, ki detektira obmocja oziroma regije obarvane z enako ali podobno
barvo. Namesto barve se lahko uporabi tudi podatek o osvetlenosti podrocja.
V osnovi se ideja zdi zelo primerna za zaznavo tipk diatonicne harmonike.
Na levi strani je 11 tipk, ki so skoraj vedno razlicne barve kot harmonika,
kar ponuja dober barvni kontrast pri zaznavi tipk. Vendar pa se kmalu po-
javijo sledeci problemi. Pod tipkami se nahaja kovinski nosilec zrcalne krom
barve, ki je viden tudi na sliki 5.2. Tudi tipke so vedno svetlece, medtem
ko obstajajo tudi v krom kovinski barvi. Da pa svetlikanja in odsevov se ni
dovolj, je ohisje harmonike zasciteno z visokosijocim lakom. To pomeni, da
se na povrsini harmonike pojavljajo odsevi razlicnih barv, kar je neprikladno
za trenutno obravnavano detekcijo. Omenimo se problem prekrivanja tipk s
prsti, kar dodatno onemogoci ucinkovito detekcijo s pomocjo barv. Za detek-
cijo je potrebno uporabiti zaznavo, ki tudi med samim igranjem harmonike
dobro deluje. Zaznava tipk s pomocjo barv je v primeru harmonike nepri-
merna. Vsi nasteti problemi so prevelik zalogaj za uspesno implementacijo s
taksnim nacinom zaznave.
5.1. NEPRIMERNI NACINI ZAZNAVE BASNE TIPKOVNICE 31
Slika 5.2: Basna tipkovnica diatonicne harmonike z vidnimi odsevi.
5.1.2 Zaznavanje okroglih tipk s pomocjo Houghove
transformacije
Krogi so v aplikacijah racunalniskega vida pogosta geometricna telesa. Za
iskanje teh teles je zelo poznana metoda iskanja s pomocjo Houghove trans-
formacije CHT (angl. Circle Hough Tranform) [28]. Predstavlja zanesljiv
nacin iskanja krogov, vendar je metoda tudi casovno zahtevna, saj za vsako
tocko na sliki izracuna vse mozne kroznice. Za pohitritev racunanja lahko
metodo omejimo z najvecjim ter najmanjsim moznim radijem, katerega me-
toda se isce na sliki. Hkrati operacijo pohitrimo tudi z glajenjem robov ter
odstranjevanjem suma iz slike. Vse nasteto posledicno vpliva na manjso na-
tancnost algoritma.
Programska odprtokodna knjiznica OpenCV ponuja naslednjo implemen-
tirano funkcijo HoughCircles, ki v crnobeli sliki poisce kroge s pomocjo
CHT [29]. Funkcija se je izkazala neprimerna za uporabo. Poleg ze nastetih
problemov z odsevi ter prekrivanjem tipk s prsti, se tu pojavijo novi. Basna
tipkovnica diatonicne harmonike je sestavljena iz 11-ih okroglih tipk. Za-
radi nacina igranja so tipke v prvi vrsti postavljene globlje kot tipke druge
vrste. Ta razlika znasa po standardnih merilih okrog 13 milimetrov. Pri
igranju harmonike druga vrsta tipk malo prekrije prvo vrsto, kar dodatno
otezuje zaznavo tipk. Algoritem na harmoniki zazna tudi okrogle oblike pod
in nad tipkami, tako imenovane trobentice, kar pa ne predstavlja razloga, ki
32POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
bi nas odvrnil od uporabe te metode. Detekcija trobentic je vidna na sliki
5.3. Glavni problem nastane pri igranju in premikanju harmonike, ko zaradi
spreminjanja perspektive glede na kamero okrogle tipke izgubljajo okroglo
obliko. Med samim igranjem pa tudi s prsti prekrijemo tipke, tako da za-
znava le teh ni mogoca. Zaradi vseh omenjenjih problemov zaznavo tipk s
pomocjo Houghove transformacije oznacimo kot neprimerno za naso uporabo.
Slika 5.3: Detekcija okrogle trobentice na basnem delu diatonicne harmonike.
5.1.3 Zaznavanje basne tipkovnice s pomocjo ujemanja
slikovnega vzorca
Pri pregledu programske knjiznice za racunalniski vid OpenCV smo naleteli
na se eno zanimivo funkcijo matchTemplate [30]. Njeno delovanje preveri,
ali se del slike, imenovan slikovni vzorec, pojavi v neznani sliki (slika 5.4).
Po nadalnji analizi se ideja o uporabi te funkcije kmalu opusti. Tako se
odlocimo na podlagi njenega nefleksibilno okornega iskanja. Zavedati se je
potrebno, da potrebujemo detekcijo, ki omogoca normalno igranje ter premi-
kanje harmonike, cesar nam funkcija matchTemplate ne omogoca.
5.1. NEPRIMERNI NACINI ZAZNAVE BASNE TIPKOVNICE 33
Slika 5.4: Prikaz delovanja funkcije matchTemplate.
5.1.4 Zaznavanje basne tipkovnice z uporabo kaska-
dnega Haarovega klasifikatorja
Zaznava objektov je v racunalniskem vidu opravljena na razlicne nacine.
Eden obstojecih je uporaba razreda CascadeClassifier [31], ki se upora-
blja tudi za detekcijo obrazov. Razred je del programske knjiznice OpenCV.
Aplikacija z uporabo le tega hitro detektira obraz. Princip delovanja algo-
ritma je sledec. Razred CascadeClassifier vsebuje objekt tipa klasifikator,
na podlagi katerega algoritem zazna clovekov obraz. Sestava klasifikatorja
pa ni tako enostavna. Potrebno ga je nauciti, kaj je in kaj ni obraz oziroma
iskani objekt v sliki. Za to potrebujemo veliko stevilo slik (nekaj sto) iste
velikosti, ki predstavljajo iskani objekt. Te slike se imenujejo �pozitivni pri-
meri�. Na drugi strani pa so potrebni tudi �negativni primeri�, predstavljeni
z ravno tako cimvecjim stevilom slik iste velikosti. Kot primer negativnih slik
bi lahko uporablili slike dreves, stavb, roz, skratka vsega, kar ne predstavlja
iskanega objekta.
Algoritem za razpoznavo obraza deluje v redu, vendar je nenatancen pri
pozicioniranju objekta. Pri detekciji harmonike pa je potrebno tudi natancno
pozicioniranje tipk. Po dodatni analizi algoritma se odlocimo da nadaljnji
razvoj z uporabo razreda CascadeClassifier ni primeren. Sama postavi-
tev baze pozitivnih in negativnih primerov je neprimerna, kajti potreben je
algoritem ki ne bo detektiral harmonike kot celote.
34POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
5.2 Detekcija oznake z uporabo odprtokodne
programske knjiznice OpenCV
Pogost nacin zaznave predstavlja detekcija oznake. Vse implementacije pro-
gramov za ucenje igranja glasbil s pomocjo obogatene resnicnosti, katere
smo spoznali v podpoglavju stevilka 3.3, se posluzujejo uporabe te tehnolo-
gije. Oznaka, vidna na sliki 5.5, je predstavljena z vnaprej doloceno obliko,
ki jo mora algoritem najti v podani sliki. Kvadratna oznaka je sestavljena
iz vnaprej dolocenih 49 manjsih crnobelih kvadratkov. Pogoj za uporabo
algoritma je obarvanost obrobnih kvadratkov s crno barvo. Podroben opis
postopka zaznave oznake z uporabo knjiznice OpenCV skupaj z izvorno kodo
se nahajata v knjigi [41].
Slika 5.5: Algoritem detektira na sliki vidno oznako.
Diatonicne harmonike imajo poleg basnih tipk dovolj prostora za posta-
vitev oznake. Postavitev oznake je vidna na sliki 5.6.
5.2. DETEKCIJA OZNAKE Z UPORABO ODPRTOKODNEPROGRAMSKE KNJIZNICE OPENCV 35
Slika 5.6: Zacetna slika, na kateri se zacne detekcija oznake.
Zaradi poznane omejitve oznake je iskanje le te dokaj preprosto opravilo.
V osnovi je zaznava sestavljena iz naslednjih korakov:
• pretvorba RGB (angl. Red Green Blue) barvne vhodne slike v sivinsko
sliko formata cv::Mat,
• uporaba filtra binarizacije sivinske slike,
• detektcija obrisov shem,
• iskanje moznih oznak,
• dekodiranje mozne oznake,
• postavitev oznake v prostoru glede na lokacijo kamere.
Pretvorba vhodne RGB barvne slike v sivinsko (slika 5.7) je potrebna za-
radi pohitritve ter same arhitekture algoritma zaznave oznake. Ze vnaprej je
znano, da je oznaka sestavljena le iz crne ter bele barve, zato procesiranje z
barvami predstavlja dodatno obremenitev ter upocasnitev algoritma iskanja
36POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
oznake. V programski knjiznici OpenCV se pretvorba RGB barvne slike v
sivinsko opravi s klicem funkcije cv::cvtColor.
Slika 5.7: Sivinska slika.
Za nadalnje procesiranje je potrebno sivinsko sliko pretvoriti v binarno
crnobelo [32], kjer ima vsaka slikovna tocka na voljo le dve mozni vredno-
sti (slika 5.8). Vrednost 255 predstavlja belo barvo, vrednost 0 pa crno.
V tem primeru potrebujemo za predstavitev ene slikovne tocke le en bit
informacije, 0 ali 1. Ta postopek mora biti opravljen pred pregledom obri-
sov objektov v sliki. V danem algoritmu za zaznavo oznake je uporabljena
funkcija cv::adaptiveThreshold. Nove vrednosti so dolocene na podlagi
svetlosti sosednjih tock v izbranem radiju. Taksen nacin procesiranja bina-
rizacije daje algoritmu vecjo robustnost, saj izracun nove vrednosti opravi
glede na vrednost sosednjih tock. Z vecanjem radija sosednjih tock se veca
tudi casovna zahtevnost funkcije. Ob izbiri radija vecjega od 10 slikovnih
pik se procesiranje slik upocasnjuje, tako da aplikacija postane prepocasna
za normalno uporabo. Da je aplikacija se primerna za uporabo potrebujemo
hitrost prikazovanja vecjo od 15 slik na sekundo FPS (angl. Frames Per Se-
5.2. DETEKCIJA OZNAKE Z UPORABO ODPRTOKODNEPROGRAMSKE KNJIZNICE OPENCV 37
cond). Zaradi pohitritve algoritma uporabimo manjso locljivost zajema in
procesiranja slik, ki meri 352 slikovnih tock v sirino ter 288 slikovnih tock v
visino.
Slika 5.8: Binarizacija sivinske slike s funkcijo cv::adaptiveThreshold.
Uporabljena funkcija cv::findContours najde obrise shem v binarni
crnobeli sliki. Funkcija vrne seznam zaznanih obrisov v binarni sliki. Kot
vhodni argument funkcija zahteva tudi najmanjso mozno velikost obrisa.
Tako se izognemo shemam, ki so premajhne za nadaljnjo detekcijo. Vsak
obris je dolocen kot seznam vogalnih tock obrisa. Stevilo dobljenih tock, ki
dolocajo dobljene obrise, zmanjsamo z uporabo funkcije cv::approxPolyDP.
Le ta s pomocjo priblizkov zmanjsa stevilo vogalnih tock. Naslednja upora-
bljena funkcija cv::isContourConvex pa preveri, da dobljene tocke predsta-
vljajo zaprto konveksno shemo.
V seznamu so sedaj shranjene vogalne tocke obrisov, ki mogoce pred-
stavljajo oznako. Perspektiva pogleda na mozne oznake se s premikanjem
oznake glede na kamero stalno spreminja. Frontalni pogled na premikajoco
oznako v prostoru dobimo s klicem funkcij cv::getPerspectiveTransform
ter cv::warpPerspective (slika 5.9). Prva funkcija izracuna perspektivo,
38POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
druga pa le to izracunano vrednost uporabi za spremembo perspektive mozne
oznake.
Slika 5.9: Pretvorba perspektive slike oznake na frontalni pogled.
Oznaka je razdeljena na kvadratno mrezo 49-ih kvadratkov (slika 5.10).
Zunanji crni kvadratki dolocajo obrobo oznake. Znotraj oznake tako ostane le
se mreza 25-ih kvadratkov. S kombinirano postavitvijo notranjih kvadratkov
lahko sistem zaznava do 1024 razlicnih oznak. Ali je kvadratek bele ali crne
barve preverimo s pomocjo funkcije cv::countNonZero, ki preveri ali ima
posamezna slikovna tocka razlicno vrednost od vrednosti 0.
Slika 5.10: Oznaka, sestavljena iz mreze 7x7 manjsih crno belih kvadratkov.
Sedaj vemo, da je algoritem zaznal oznako in si shranil koordinate nje-
nih kotov. Potrebna je se ocenitev pozicije oznake iz dvodimenzionalnega v
tridimenzionalni prostor glede na lokacijo kamere. Uporabljena je funkcija
cv::solvePnP.
5.2. DETEKCIJA OZNAKE Z UPORABO ODPRTOKODNEPROGRAMSKE KNJIZNICE OPENCV 39
5.2.1 Poskus izboljsave binarizacije sivinske slike
Spoznali smo proces binarizacije slike, ki vsaki slikovni tocki dodeli le eno
izmed dveh moznih vrednosti. Ta postopek je v podanem algoritmu opra-
vila funkcija cv::adaptiveThreshold. Sedaj poskusimo isti postopek opra-
viti s funkcijama cv::threshold ali cv::Canny. Obe sta del odprtokodne
knjiznice OpenCV.
Binarizacijo sivinske slike najprej opravimo s funkcijo cv:threshold. Re-
zultat funkcije je viden na sliki 5.11. Locnica, ki doloca mejo med dvema
moznima vrednostima, je fiksno dolocena, kar pomeni da je med samim iz-
vajanjem ni mogoce dinamicno spreminjati. Posledicno nastane binarizirana
slika, ki pa ni vedno dovolj dobre kvalitete za nadaljnjo obdelavo. Ob premi-
kanju harmonike se zaradi odsevov v prostoru vcasih zabrise meja oznake, kar
privede do nemogoce detekcije. V kolikor bi bila intenzivnost svetlobe vnaprej
dolocena, bi bilo smotrno izbrati funkcijo cv::threshold. Na racun njene
enostavnosti je hitrejsa od ze uporabljene funkcje cv::adaptiveThreshold.
Slika 5.11: Binarizacija sivinske slike s funkcijo cv::threshold.
Binarizacijo slike omogoca tudi funkcija cv::Canny, ki na vhodni sivinski
sliki najde obrobe in obrise elementov. Implementacija funkcije sloni na
40POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
teoriji zaznave robov v sliki, katero leta 1986 predstavi g. John F. Canny [34].
Oznaka, katero zelimo detektirati, je dobro vidna na sliki 5.12. Vidni so le
obrisi shem, izrisani z belo barvo. Algoritem je z uporabo funkcije cv::Canny
sposoben zaznave oznake, vendar se ob premikanju oznake obnasa slabse od
funkcije cv::adaptiveThreshold.
Slika 5.12: Slika po procesu iskanja robov s funkcijo cv::Canny.
Po preizkusu treh funkcij za binarizacijo sivinske slike nadaljujemo detek-
cijo z ze v zacetku podano funkcijo cv::adaptiveThreshold. Le ta najbolj
ugodi potrebam in zahtevam zaznave oznake. Algoritem z uporabo izbrane
funkcije postane dovolj robusten za zaznavo oznake tudi v tezjih pogojih,
kot sta menjavanje nivojev svetlobe ter premikanje harmonike z oznako po
prostoru.
5.2.2 Problem algoritma za detekcijo oznake
Ob direktnem frontalnem pogledu na oznako, se ob premikanju kamere pojavi
napaka aproksimacije oznake v tridimenzionalnem prostoru. V tem primeru
opazimo manjse nekontrolirano obnasanje izrisa obogatene resnicnosti. Po te-
5.2. DETEKCIJA OZNAKE Z UPORABO ODPRTOKODNEPROGRAMSKE KNJIZNICE OPENCV 41
stiranju sklepamo, da napako najverjetneje povzroca funkcija cv::solvePnP,
ki skrbi za izracun postavitve oznake v tridimenzionalen prostor.
Testiranih je bilo vec aplikacij s podobno implementacijo detekcije oznak,
pri katerih opazimo podoben problem. Primer taksne aplikacije je tudi apli-
kacija �AR Basketball� [40], kjer se ob frontalnem pogledu na oznako pojavi
napaka, ki privede do nenormalnega premikanja kosa oziroma obogatene re-
snicnosti. V aplikiciji to ne predstavlja ovire, saj z vrha nikoli ne mecemo na
kos, temvec od spredaj ali od strani.
Pojav te napake izvira iz omejitve uporabljenega koordinatnega sistema,
kjer ob poravnavi dveh osi prihaja do problema imenovanega �Gimbal Lock�,
ko nadalnje premikanje v tej smeri ni mogoce. Problem je viden na sliki 5.13.
Na levi strani je prikazano normalno premikanje vseh treh osi. Ob poravnavi
dveh osi, pa se na desni strani slike 5.13 pojavi problem, imenovan �Gim-
bal Lock�. V tem primeru lahko letalo premikamo le se v smeri dveh osi,
namesto v smeri vseh treh.
Slika 5.13: Geometrijski problem, imenovan �Gimbal Lock�.
Nekontrolirano premikanje za nekatere aplikacije ni motece, saj pri de-
lovanju ne uporabljajo celnega frontalnega pogleda pri zaznavi oznake. V
nasem primeru pa se zanasamo na frontalni pogled, saj smo s harmoniko
postavljeni direktno pred kamero tablicnega racunalnika iPad.
Kot resitev problema smo uporabili enostavno resitev, ki se je v uporabi
izkazala za zelo dobro. Sami oznaki smo zamaknili perspektivo, kot je vidno
42POGLAVJE 5. ANALIZA METOD ZAZNAVE BASNE TIPKOVNICE
DIATONICNE HARMONIKE
na sliki 5.14, s cimer se izognemo detekciji iz direktnega frontalnega pogleda.
Spremembo perspektive oznake upostevamo pri izrisu obogatene resnicnosti.
Slika 5.14: Prirejena oznaka z zamaknjeno perspektivo.
Poglavje 6
Predstavitev obogatene
resnicnosti z uporabo vmesnika
OpenGL
Aplikacija z obogateno resnicnostjo postane uporabna sele s pravilno pred-
stavitvijo informacije uporabniku. Informacije, ki jih potrebuje ucenec dia-
tonicne harmonike, so:
• informacija o pritisnjeni tipki,
• informacija o uporabljenem prstu,
• informacija o smeri raztezanja ali stiskanja meha harmonike.
Za izris obogatene resnicnosti na zaslon je uporabljen vmesnik OpenGL
(ang. Open Graphics Library), ki vsebuje funkcije za izris zahtevnih tridi-
menzionalnih ter tudi enostavnejsih objektov. Leta 1992 ga razvije podjetje
Silicon Graphics. V uporabljenem algoritmu zaznave oznake iz knjige [41] je
prikaz obogatene resnicnosti viden na sliki 6.1. Vmesnik OpenGL v okvir za-
znane oznake izrise barvni kvadrat ter vse tri osi koordinatnega sistema. Osi
so obarvane z rdeco, modro ter zeleno barvo. Za dejanski izris je uporabljen
vektorski zapis vidnih elementov. Za nas izris smo podano implementacijo
43
44POGLAVJE 6. PREDSTAVITEV OBOGATENE RESNICNOSTI Z
UPORABO VMESNIKA OPENGL
prikaza obogatene resnicnosti modificirali z uporabo tekstur.
Slika 6.1: Prikaz obogatene resnicnosti uporabljenega algoritma za zaznavo
oznake.
Za nas izris obogatene resnicnosti ne potrebujemo zahtevnih tri dimen-
zionalnih objektov, ampak enostavnejse tri dimenzionalno izrisovanje slik
shranjenih v formatu PNG (angl. Portable Network Graphics). Za ta format
se odlocimo na podlagi moznosti brezbarvnega prosojnega ozadja slike.
Za uvoz slik v aplikacijo uporabimo razred GLKTextureLoader.h, ki je del
knjiznice GLKit. Za izris slik uporabimo objekt tipa GLKTextureInfo [42],
ki se uporablja za dejansko nalaganje slik v pomnilnik. S klicem OpenGL
funkcije glBindTexture se slika dejansko izrise na zaslon. Sledi predstavitev
slik in nacina prikazovanja obogatene resnicnosti.
Vse uporabljene knjiznice so del osnovnega okolja Xcode. V projekt je
bilo potrebno posebej namestiti le programsko knjiznico OpenCV.
6.1. SMER STISKANJA ALI RAZTEZANJA HARMONIKE 45
6.1 Smer stiskanja ali raztezanja harmonike
Informacija o stiskanju ali raztezanju harmonike je podana s sliko formata
PNG, ki se vedno izrisuje nad oznako, postavljeno na basnem delu harmonike.
Puscici sta vidni na sliki 6.2. V kolikor je potrebno stiskanje meha harmonike,
se na ekranu izrise desno usmerjena puscica zelene barve. Ce je potrebno
raztezanje meha harmonike, se na ekranu izrise levo usmerjena puscica rdece
barve.
Slika 6.2: Puscici, ki podajata informacijo o stiskanju ali raztezanju meha.
Ob spremembi smeri raztezanja ali stiskanja meha se eno glasbeno dobo
pred samo spremembo na zaslonu izrise puscica (slika 6.3) z manjso puscico,
ki naznanja spremembo smeri stiskanja.
Slika 6.3: Puscici, ki podajata informacijo o spremembi stiskanja meha.
6.2 Prijem ustrezne tipke
Za pravilno igranje diatonicne harmonike je potrebno izrisati tudi informacijo
o igrani tipki. Tipko je potrebno pritisniti, ko le to prekrije krogec dolocene
barve (slika 6.4).
46POGLAVJE 6. PREDSTAVITEV OBOGATENE RESNICNOSTI Z
UPORABO VMESNIKA OPENGL
Slika 6.4: Mozni obarvani krogci na pritisnjeni tipki.
Pri glasbenem instrumentu, na katerega igramo s prsti, je zaradi eno-
stavnejsega igranja ter tudi hitrejsih prijemov pomemben pravilni prstni red
igranja. Za napacne prstne prijeme obstaja zelo dober izraz, da si igralec med
igranjem �lomi prste�. Pravilen prstni prijem je v aplikaciji predstavljen z
barvami na naslednji nacin (slika 6.5):
• mezinec doloca rumena barva,
• prstanec doloca modra barva,
• sredinec doloca zelena barva,
• kazalec doloca rdeca barva,
• palca ne upostevamo, saj z njim ni mogoce doseci tipk basne polovice
harmonike.
Slika 6.5: Predstavitev prstov leve roke z barvami.
6.3. PRIJEM NASLEDNJE TIPKE 47
Obarvani krog, ki se izrise na ekranu je dejansko shranjen v nevtralni beli
barvi. Obarvamo ga le med izrisom s klicem funkcije glColor4f, ki je del
vmesnika OpenGL.
6.3 Prijem naslednje tipke
Pri igranju glasbila s pomocjo branja not igralec vedno sledi informaciji o
naslednjem dogodku, to je noti. Ce igralec v notnem zapisu ne bi iskal te
informacije, njegovo igranje ne bi zvenelo tekoce. Zato smo tudi mi imple-
mentirali podajanje predinformacije o naslednji zaigrani tipki. Naslednja
tipka, ki jo moramo pritisniti, pocasi pridobiva na barvi, dokler ob pritisku
ne zasveti z eno izmed dolocenih barv. Nacin pridobivanja gostote barv je
viden na sliki 6.6. S to dodatno informacijo je proces ucenja pospesen, kajti
igralec je pripravljen na naslednji pritisk tipke.
Slika 6.6: Nacin predstavitve informacije o naslednji pritisnjeni tipke.
Tudi tu so obarvani krogi dejansko shranjeni v nevtralno beli barvi v
formatu PNG. V aplikaciji pa so predstavljeni kot tekstura. Barvo in prosoj-
nost teksture dolocamo s klicem funkcije glColor4f, kjer z visanjem cetrtega
argumenta v funkciji znizujemo prosojnost. Tipka se tako postopoma obarva.
Poglavje 7
Podatkovni del aplikacije
Predstavitev vseh potrebnih podatkov smo shranili v datoteko MIDI [26].
Datoteka MIDI omogoca zapis dogodkov, kot so �NOTE ON�, �NOTE
OFF� ter �VELOCITY� . �NOTE ON� nastopi ob pritisku tipke, medtem
ko �NOTE OFF� predstavlja konec pritiska dolocene tipke. Obe kontroli
vsebujeta tudi podatek o hitrosti udarca (angl. Velocity). Pomembno je
seveda tudi to, da so vsi dogodki doloceni s kanalom MIDI (angl. MIDI
channel), na katerem igrajo.
Standard protokola MIDI doloca da kanal stevilka 10 predstavlja zapis
igranja bobnov. V primeru krsitve pravila bomo namesto zvokov dolocenega
instrumenta slisali zvoke bobnov. V implementaciji aplikacije smo definirali
svoj sistem, kjer pa je izpuscen kanal stevilka 10, ceprav bi ga lahko uporabili.
Ustvarjene datoteke MIDI so namrec namenjene izkljucno nasi aplikaciji, kjer
smo neodvisni od kakrsnihkoli standardov in pravil protokola MIDI. Neod-
visni smo pa zato, ker bomo uporabljali le za to aplikacijo zgrajen virtualni
instrument, s katerim bomo predvajali datoteke MIDI. V kolikor bi datoteke
MIDI uporabljali se v drugih programih ter klaviaturah, si cesa takega ne bi
mogli dovoliti.
49
50 POGLAVJE 7. PODATKOVNI DEL APLIKACIJE
7.1 Zapis podatkov o prstnih prijemih v da-
toteki MIDI
Podatki o pravilnem pritisku tipk so v datoteki MIDI shranjeni na kanalu
stevilka 9. Ker pritisnjena tipka potrebuje tudi informacijo o uporabljenem
prstu, nam protokol MIDI ponudi zelo dobro resitev problema. �NOTE
ON� tako doloca pritisnjeno tipko (slika 7.1), �VELOCITY� pa uporabimo
za predstavitev prsta, s katerim pritisnemo tipko. Implementacija bi lahko
bila tudi obratna, vendar je ta nacin bolj naraven.
Slika 7.1: Stevilcenje tipk basne tipkovnice.
Informacjie o pritisnjeni tipki so shranjene na naslednji nacin:
• �NOTE ON� stevilka 1 predstavlja tipko stevilka 1,
• �NOTE ON� stevilka 2 predstavlja tipko stevilka 2,
• �NOTE ON� stevilka 3 predstavlja tipko stevilka 3,
• �NOTE ON� stevilka 4 predstavlja tipko stevilka 4,
• �NOTE ON� stevilka 5 predstavlja tipko stevilka 5,
• �NOTE ON� stevilka 6 predstavlja tipko stevilka 6,
• �NOTE ON� stevilka 7 predstavlja tipko stevilka 7,
7.1. ZAPIS PODATKOV O PRSTNIH PRIJEMIH V DATOTEKI MIDI51
• �NOTE ON� stevilka 8 predstavlja tipko stevilka 8,
• �NOTE ON� stevilka 9 predstavlja tipko stevilka 9,
• �NOTE ON� stevilka 10 predstavlja tipko stevilka 10,
• �NOTE ON� stevilka 11 predstavlja tipko stevilka 11.
Uporabljen prst pa je predstavljen s podatkom �VELOCITY�, ki je del
podatka �NOTE ON�, na naslednji nacin:
• mezinec je predstavljen z �VELOCITY� vrednostjo 100,
• prstanec je predstavljen z �VELOCITY� vrednostjo 80,
• sredinec je predstavljen z �VELOCITY� vrednostjo 60,
• kazalec je predstavljen z �VELOCITY� vrednostjo 40,
• palec pa ne potrebuje te informacije, saj z njim ni mogoce doseci tipk.
Na sliki 7.2 je vidna vizualna predstavitev kanala MIDI stevilka 9 v pro-
gramu Cubase. Podolgovati lezeci pravokotniki predstavljajo podatka MIDI
�NOTE ON� ter �NOTE OFF�, medtem ko pokoncni stolpci na spodnji
polovici slike predstavljajo kontrolo �VELOCITY�.
Slika 7.2: Kanal MIDI stevilka 9 v programu Cubase.
52 POGLAVJE 7. PODATKOVNI DEL APLIKACIJE
7.2 Zapis podatkov o smeri stiskanja meha v
datoteki MIDI
Podatki o mehu so postavljeni na zadnji kanal MIDI stevilka 16. Podatek je,
enako kot pri pravilnem prstnem prijemu, shranjen kot tip �NOTE ON� na
nacin kjer:
• �NOTE ON� stevilka 1 pomeni stiskanje meha,
• �NOTE ON� stevilka 2 pomeni raztezanje meha,
• �NOTE ON� stevilka 3 pomeni, da v naslednji glasbeni dobi sledi
prehod iz stiskanja na raztezanje meha,
• �NOTE ON� stevilka 4 pomeni, da v naslednji glasbeni dobi sledi
prehod iz raztezanja na stiskanje meha,
• �NOTE ON� stevilka 0 pa uporabimo za oznacitev konca pesmi.
Ker so pri mehu dejansko potrebne le te informacije, je podatek o hitrosti
�VELOCITY� nepomemben.
Poglavje 8
Virtualni instrument za
predvajanje zvoka diatonicne
harmonike
V datoteki MIDI niso shranjeni le podatki o pritisnjenih tipkah ter smeri
raztezanja meha. Za samo predvajanje melodije diatonicne harmonike v
aplikaciji potrebujemo tri kanale MIDI. Tako bo uporabniku omogoceno tudi
poslusanje pravilno zaigrane pesmi.
Protokol MIDI smo predstavili v podpoglavju 4.2.1. Najvecja prednost
uporabe formata MIDI je v neodvisnosti kvalitete zvoka od hitrosti predva-
janja pesmi. Z uporabo standardnih zvocnih datotek bi se s spreminjanjem
hitrosti zmanjsevala kvaliteta zvoka. Ob pohitritvi pesmi bi se tako tudi
intonacija zvisala ter obratno. Ker pa za predvajanje uporabimo virtualni
instrument s posebej posnetimi zvoki vsakega tona harmonike, se le to ne
zgodi. Tako si lahko vsak uporabnik nastavi hitrost predvajanja pesmi, glede
na svojo spretnost igranja.
V tem poglavju si poglejmo zgradbo virtualnega instrumenta, ki skrbi za
zvocni del aplikacije. V osnovi je arhitektura zvocnega dela aplikacij zgra-
jena iz manjsih avdio enot, ki skupaj predstavljajo celoto imenovano zvocni
graf razreda AUGraph (angl. Audio Graph) (slika 8.1). Apple nam za upo-
53
54POGLAVJE 8. VIRTUALNI INSTRUMENT ZA PREDVAJANJE
ZVOKA DIATONICNE HARMONIKE
rabo ponuja sledece avdio enote: �Effects�, �Instruments�, �Generators�,
�Panners�, �Converters�, �Mixers�, �Offline effects� in �Output units�.
Izmed vseh izberemo le nam nujne za implementacijo. Te so �Instrumets�,
�Mixer� ter �Output unit�.
Slika 8.1: Shema razlicnih avdio enot, prikljucenih na mesalno mizo v pro-
gramskem jeziku Objective C.
8.1 Arhitektura virtualnega instrumenta za
predvajanje datoteke MIDI
Protokol MIDI se zaradi svoje uporabnosti uporablja tudi pri diatonicnih
harmonikah. Poznane so harmonike z vgrajeno elektroniko protokola MIDI,
katere se z MIDI kablom poveze na sintetizatorje ali vzorcnike zvoka. V glasbi
pojem vzorcnik (angl. Sampler) predstavlja glasbeni instrument (slika 8.2),
ki je sposoben snemanja zvokov iz okolja, recimo zvena enega udarca bobna
ter le tega pozicionirati na tipkovnici virtualnega instrumenta. Ce se ta
zvok nahaja na tipki 60, ga s signalom MIDI �NOTE ON 60� ponovno zai-
gramo. Na ta isti nacin z igranjem elektricnih bobnov vzorcnik reproducira
zvok originalnih analognih bobnov. Svetovna glasbena industrija sloni na
tej tehnologiji, saj poveca in izboljsa moznosti reprodukcije zvoka analognih
8.1. ARHITEKTURA VIRTUALNEGA INSTRUMENTA ZAPREDVAJANJE DATOTEKE MIDI 55
glasbil. Ta princip je najveckrat uporabljen za reproduciranje zvoka pra-
vega analognega klavirja z igranjem na cenejso elektricno klaviaturo MIDI.
Komunikacija med MIDI klaviaturo ter virtualnim instrumentom poteka po
pravilih protokola MIDI.
Slika 8.2: Primer vzorcnika zvoka (angl. Sampler), ki deluje po principu
virtualnega instrumenta.
S pritiski na tipke basne tipkovnice diatonicne harmonike lahko igramo
base ali sestavljene akorde. Razporeditev basov in akordov na basni tipkov-
nici je vidna na sliki 8.3, kjer crka A predstavlja akorde, crka B pa base. V
standardu MIDI sistema se diatonicna harmonika zaradi njene sestave po-
sluzuje naslednje razporeditve MIDI kanalov, katero uporabimo tudi mi:
• MIDI kanal st. 1 predstavlja desno melodicno stran harmonike,
• MIDI kanal st. 2 predstavlja akorde leve basne strani harmonike,
• MIDI kanal st. 3 predstavlja base leve basne strani harmonike.
56POGLAVJE 8. VIRTUALNI INSTRUMENT ZA PREDVAJANJE
ZVOKA DIATONICNE HARMONIKE
Slika 8.3: Razporeditev basov in akordov na basni tipkovnici diatonicne har-
monike.
Za predvajanje MIDI datoteke potrebujemo virtualni instrument, ki bo
znal predvajati zvok diatonicne harmonike. Sestavimo ga iz treh avdio enot
�Sampler unit�.
• �Sampler unit� st. 1 reproducira zvok melodije desne melodicne strani,
ki se nahaja na MIDI kanalu st. 1,
• �Sampler unit� st. 2 reproducira zvok akordov leve basne polovice, ki
se nahajajo na MIDI kanalu st. 2,
• �Sampler unit� st. 3 reproducira zvok basov leve basne plovice, ki se
nahajajo na MIDI kanalu st. 3.
Zgoraj navedene avdio enote so prikljucene na zvocne vhode mesalne
mize, objekta razreda Mixer, ki vse dobljene signale zdruzi v en sam zvocni
signal. Shema povezav je vidna na sliki 8.4. Mesalna miza omogoca spre-
minjanje jakosti zvocnih vhodnih signalov ter mesanje le teh. Uporabnik
bo s pomocjo drsnikov nadziral nivo glasnosti posameznih zvocnih kana-
lov. Za spreminjanje jakosti zvoka v mesalni mizi je uporabljena funk-
cija AudioUnitSetParameter.
8.2. PREDSTAVITEV DATOTEKE MIDI V APLIKACIJI 57
Slika 8.4: Avdio graf aplikacije.
8.2 Predstavitev datoteke MIDI v aplikaciji
Za uvoz MIDI datoteke v aplikacijo je uporabljen razred MusicSequence [35],
ki datoteko MIDI predstavi kot sekvenco oziroma zaporedje. Objektu ra-
zreda MusicSequence je potrebno nastaviti se ustrezni objekt razreda AUGraph
s klicem funkcije MusicSequenceSetAUGraph. Celotna shema predstavitve
MIDI datoteke v aplikaciji je vidna na sliki 8.5. MIDI kanali so v objektu ra-
zreda MusicSequence postavljeni po istem narascajocem vrstnem redu kot v
datoteki MIDI. Sedaj pa ne govorimo vec o MIDI kanalnih, ampak o objektih
razreda MusicTrack [36]. S funkcijo MusicSequenceGetIndTrack razdelimo
elemente objekte razreda MusicSequence na objekte razreda MusicTrack,
kjer vsak vsebuje podatke MIDI svojega MIDI kanala uvozene datoteke
MIDI. Sledi le se klic funkcije MusicTrackSetDestNode, ki poslje objekt
tipa MusicTrack na ustrezno enoto razreda SamplerUnit nasega virtual-
nega instrumenta. V implementaciji nastavimo izhode prvih treh objektov
tipa MusicTrack na virtualni instrument, medtem ko zadnja dva uporabimo
za kontrolo predstavitve obogatene resnicnosti meha ter pritisnjenih tipk.
58POGLAVJE 8. VIRTUALNI INSTRUMENT ZA PREDVAJANJE
ZVOKA DIATONICNE HARMONIKE
Slika 8.5: Shema uvozene datoteke MIDI v aplikacijo.
Poglavje 9
Sinhronizacija predvajane
pesmi s prikazom obogatene
resnicnosti
Seznanjeni smo s podatkovnim delom aplikacije, MIDI datoteko ter uvozom le
te v aplikacijo. MIDI kanali so razporejeni po objetkih razreda MusicTrack,
ki pa med samim predvajanjem pesmi ne omogocajo direktnega sinhronega
vpogleda v svoje elemente. Omenjenemu objektu razreda MusicTrack je
mogoce le dolociti koncno lokacijo elementov. To so avdio enote SamplerUnit,
ki predstavljajo dejanski izvor zvocnega signala aplikacije.
Med samim predvajanjem pesmi moramo izlusciti podatke potrebne za
prikazovanje obogatene resnicnosti, shranjene v objektu tipa MusicTrack.
Edini dostop do elementov objekta razreda MusicTrack predstavlja objekt
razreda MusicEventIterator [37]. V osnovi je to objekt iterator, s kate-
rim se je moc sprehoditi preko vseh elementov objekta razreda MusicTrack.
Funkcija, ki bi omogocala sinhron dostop do podatkov med predvajanjem
pesmi, ne obstaja. Tako implementiramo svoj algoritem, ki bo poskrbel za
sinhronizacijo predvajane pesmi s podatki, potrebnimi za prikaz obogatene
resnicnosti.
V aplikaciji je uporabljena casovna enota tipa MusicTimeStamp. Do
59
60POGLAVJE 9. SINHRONIZACIJA PREDVAJANE PESMI S
PRIKAZOM OBOGATENE RESNICNOSTI
trenutnega casa med samim predvajanjem pesmi pridemo s klicem funk-
cije MusicPlayerGetTime. Z uporabo trenutnega casa v predvajani skladbi
ter s klicem funkcije MusicEventIteratorSeek poiscemo naslednji dogodek
v objektu tipa MusicTrack. Funkcija MusicEventIteratorNextEvent po-
makne izbrani iterator na naslednji dogodek v seznamu. S klicem funk-
cije MusicEventIteratorGetEventInfo pa pridobimo vse podatke trenu-
tnega objekta shranjenega v iteratorju. Sedaj je potrebna le se sinhronizacija
objekta tipa MusicEventIterator s trenutnim casom v predvajani skladbi.
Vse navedeno je implementirano v funkciji synchronizeTime na naslednji
nacin:
1 (void ) synchronizeTime
{3 MusicTimeStamp timestampInSong ;
MusicPlayerGetTime ( myPlayer , ×tampInSong ) ;
5 //imamo l o k a c i j o v pesmi
Mus icEventIterator i t e rTipkaKontro la ; // i t e r a t o r
7 NewMusicEventItarator ( t rackBasPrst i , &i te rTipkaKontro la ) ;
Mus icEventIteratorSeek ( i terTipkaKontro la , timestampInSong ) ;
9 MusicEventType eventTypeKontrolaTipka = 0 ;
Const void ∗ eventDataKontrolaTipka = NULL;
11 Uint32 eventDataSizeKontrolaTipka = 0 ;
MusicTimeStamp durat ionKontrolaTipka = 0 ;
13 Int noteKontrolaTipka = 0 ;
Int ve loc i tyKontro laTipka = 0 ;
15 MusicTimeStamp timestampKontrolaTipka ;
MusicEventIteratorGetEventInfo ( i terTipkaKontro la , &
timestampKontrolaTipka , &eventTypeKontrolaTipka , &
eventDataKontrolaTipka , &eventDataSizeKontrolaTipka ) ;
17 // podatki i t e r a t o r j a
NSSTring ∗ Str ingCasPlayer ;
19 NSString ∗ t imestampTipkaString ;
t imestampTipkaString = [ NSSTring stringWithFormat : @”%.1 f ” ,
timestampKontrolaTipka ] ;
21 Str ingCasPlayer = [ NSSTring stringWithFormat : @”%.1 f ” ,
61
timestampInSong ] ;
Boolean i s P l a y i n g = 0 ;
23 MusicPlayer I sPlay ing ( myPlayer , &i s P l a y i n g ) ;
While ( i s P l a y i n g )
25 // zanka se i z v a j a dok l e r se skladba predvaja
{27 I f ( [ s t r ingCasPlayer i sEqualToStr ing : t imestampTipkaString ] )
{29 I f ( eventTypeKontrolaTipka ==
kMusicEventType MIDINoteMessage )
{31 MIDINoteMessage ∗noteMessageKontrolaTipka = (
MIDINoteMeassage ∗) eventDataKontrolaTipka ;
noteKontrolaTipka = noteMessageKontrolaTipka −> note
;
33 ve loc i tyKontro laTipka = noteMessageKontrolaTipka −>v e l o c i t y ;
durat ionKontrolaTipka = noteMessageKontrolaTipka −>durat ion ;
35 MusicEventIteratorNextEvent ( i t e rTipkaKontro la ) ;
MusicEventIteratorGetEventInfo ( i terTipkaKontro la , &
timestampKontrolaTipka , &eventTypeKontrolaTipka , &
eventDataKontrolaTipka , &eventDataSizeKontrolaTipka ) ;
37 g loba lNote = noteKontrolaTipka ;
g l o b a l V e l o c i t y = ve loc i tyKontro laTipka ;
39 [ s e l f performSelectorOnMainThread : @selector (
updateLabelFinger ) withObject : n i l waitUnti lDone :NO] ;
t imestampTipkaString = [ NSSTring stringWithFormat : @
”%.1 f ” , timestampKontrolaTipka ] ;
41 }}
43 MusicPlayerGetTime ( myPlayer , ×tampInSong ) ;
Str ingCasPlayer = [ NSSTring stringWithFormat : @”%.1 f ” ,
timestampInSong ] ;
45 MusicPlayer I sPlay ing ( myPlayer , &i s P l a y i n g ) ;
// a l i s e pesem predvaja
47 }}
62POGLAVJE 9. SINHRONIZACIJA PREDVAJANE PESMI S
PRIKAZOM OBOGATENE RESNICNOSTI
Preverjanje sinhronizacije poteka zanki, ki se med predvajanjem skladbe
stalno ponavlja. V kolikor se zanka izvaja na glavni niti aplikacije, se pojavi
problem neodzivanja graficnega vmesnika aplikacije. Objective C omogoca
vecnitno programiranje [43], kar v nasi implementaciji tudi uporabimo. Funk-
cijo, ki skrbi za sinhronizacijo predvajane skladbe s prikazom obogatene
resnicnosti, tako izvajamo v lastni niti objekta razreda NSThread, s cimer
graficni vmesnik aplikacije postane normalno odziven. Med pocasnejsim
predvajanjem skladbe pa izvajanje zanke upocasnimo s klici funkcije usleep,
ki izvajanje niti ustavi za doloceno stevilo milisekund. Tako prihranimo pro-
cesorsko moc tablicnega racunalnika.
Poglavje 10
Aplikacija za ucenje igranja
basov diatonicne harmonike
Aplikacija je izdelana samo za uporabo na tablicnem racunalniku iPad. Ker
je za delovanje aplikacije potrebna tudi kamera, aplikacija ne bo delovala na
iPadu prve generacije. Postavitev harmonike ter tablicnega racuanlnika je
vidna na sliki 10.1.
Graficni vmesnik je zasnovan na nacin, da je uporabniku cimbolj razu-
mljiv. Aplikacija uporablja vodoravni nacin prikaza (angl. Landscape mode).
Tako se odlocimo zaradi nacina igranja harmonike, kjer je potrebno razte-
zanje in stiskanje meha v sirino. V primeru da uporabnik z basnim delom
harmonike zaide iz vidnega polja kamere, lahko svoj polozaj popravi s pri-
tiskom na tipko imenovano sapnik. Le ta se nahaja na zunanji strani leve
polovice harmonike. Vsaka harmonika jo ima, saj je nujno potrebna pri
sproscanju ter zajemanju zraka v meh harmonike.
63
64POGLAVJE 10. APLIKACIJA ZA UCENJE IGRANJA BASOV
DIATONICNE HARMONIKE
Slika 10.1: Uporaba aplikacije v praksi.
10.1 Glavno okno aplikacije
Bistvo aplikacije predstavlja cim boljsa predstavitev obogatene resnicnosti
na zaslonu (slika 10.2), zato je potrebno prostorsko omejiti stevilo prikazanih
kontrol na zaslonu. Prva kontrola je tipka za zacetek predvajanja pesmi. Ob
naslednjem pritisku na ta isti gumb pa se predvajanje pesmi ustavi. V pri-
meru da se je pesem odvrtela do konca, se s ponovnim pritiskom na to isto
tipko zacne predvajati od zacetka. Kontrola predvajanja je implementirana
podobno kot pri ostalih predvajalnikih video ter avdio vsebin. Sama tipka
je razmeroma majhne velikosti, kar za uporabnika med igranjem predstavlja
problem. Za lazji pritisk nanjo je implementacija tipke razsirjena na celotni
zaslon pod drsnikom. Tako uporabnik z enim dotikom na zaslon pricne pred-
vajati izbrano skladbo.
Edina drsna kontrola na glavnem oknu podaja informacijo o trenutni lo-
kaciji v pesmi. Ob pritsku nanjo ter drsenju s prstom po njej spreminjamo
10.2. NASTAVITVE PREDVAJANJA SKLADBE 65
trenutno lokacijo v pesmi. Uporabnik se tako lahko hitro osredotoci in po-
stavi na izbrani del pesmi.
V spodnjem desnem robu sta se dve tipki za prikaz dveh razlicnih menujev
nastavitev aplikacije. Do nastavitev je mogoc dostop med samim predvaja-
njem skladbe.
Slika 10.2: Glavno uporabnisko okno koncane aplikacije.
10.2 Nastavitve predvajanja skladbe
Ob pritisku tipke z napisom �Nastavitve� aplikacija prikaze kontrole, ki
sluzijo nastavitvam predvajanja pesmi (slika 10.3). Na vrh zaslona je po-
stavljena tipka za izhod iz menija. Pod njo se nahaja drsnik za nastavljenje
hitrosti predvajanja. Uporabnik doloci hitrost predvajanja glede na svojo
sposobnost igranja. S klicem funkcije MusicPlayerSetPlayRateScalar spre-
66POGLAVJE 10. APLIKACIJA ZA UCENJE IGRANJA BASOV
DIATONICNE HARMONIKE
minjamo hitrost predvajanja skladbe. Sledijo stiri tipke za izbiro pesmi.
Nizje so postavljeni se trije drsniki, povezani z mesalno mizo nasega vir-
tualnega instrumenta. Prvi drsnik kontrolira nivo glasnosti prvega kanala
mesalne mize, na katerem se predvaja melodicna stran harmonike. Drugi
drsnik kontrolira jakost drugega kanala, skozi katerega potuje zvok akordov
basnega dela harmonike. Zadnji, tretji drsnik pa kontrolira jakost basov har-
monike. Uporabnik si tako sam nastavi nivoje glasnosti harmonike. Dober
primer uporabe je, ko uporabnik utisa nivo glasnosti akordov ter basov in
jih poskusi nadomestiti z lastnim igranjem. Medtem se predvaja samo zvok
melodicne polovice diatonicne harmonike.
Diatonicne harmonike so uglasene v razlicnih durovskih kombinacijah.
Uporabniku je tako omogocena izbira ustreznega durovskega nacina glede
na njegovo harmoniko. Igranje se pri razlicnih uglasitvah harmonike ne
spreminja, edino, kar se spremeni je visina intonacije skladbe. Tako mo-
ramo spremeniti le intonacijo predvajane skladbe, medtem ko se prikazana
obogatena resnicnost ne spremeni. Spreminjanje intonacije se v glasbenem
zargonu imenuje transponiranje za doloceno stevilo poltonov. Transponi-
ranje opravimo na sami avdio enoti razreda samplerUnit, kjer s klicem
funkcije AudioUnitSetParameter na zeljeno vrednost nastavimo parame-
ter kAUSamplerParamCoarseTuning.
10.3. NASTAVITVE PRIKAZA OBOGATENE RESNICNOSTI 67
Slika 10.3: Prikaz nastavitev predvajanja pesmi.
10.3 Nastavitve prikaza obogatene resnicnosti
Uporabnik si poleg basnih tipk namesti oznako vidno na sliki 5.14. Polozaj
in razmaki tipk se na levi basni strani harmonike razlikujejo glede na izdelo-
valca harmonik. Gre za majhna odstopanja, vendar dovolj velika za omembo
ter da omogocimo uporabniku samostojno nastavitev polozaja ter velikosti
prikaza obogatene resnicnosti glede na zaznano oznako (slika 10.4). Tocna
lokacija in velikost oznake tako nista nujno potrebna. Ob pritisku na gumb
�Oznaka� na glavnem uporabniskem oknu se na zaslon izrisejo drsne kontrole
za nastavitev. Vse tipke, ki predstavljajo obogateno resnicnost aplikacije, se-
daj zasvetijo z nevtralno belo barvo. Uporabnik z drsniki dodatno nastavi
prikaz obogatene resnicnosti, tako da tipke obogatene resnicnosti prekrijejo
basne tipke diatonicne harmonike. Pravilna nastavitev je vidna na sliki 10.4.
Drsniki si sledijo po sledecem vrstem redu:
68POGLAVJE 10. APLIKACIJA ZA UCENJE IGRANJA BASOV
DIATONICNE HARMONIKE
• drsnik za povecavo navzgor,
• drsnik za povecavo navzdol,
• drsnik za povecavo v levo,
• drsnik za povecavo v desno,
• drsnik za globino prve vrste (kjer je 6 tipk),
• drsnik za globino druge vrste (kjer je 5 tipk).
Basne tipke diatonicne harmonike so postavljene v dveh vrstah. Da lahko
igralec normalno doseze vse tipke, so tipke prve vrste postavljene priblizno
13 milimetrov globlje glede na tipke druge vrste. Pri nekaterih harmonikah
obstajajo majhna odstopanja. Za dolocanje globine prikaza sta uporabljena
spodnja dva drsnika vidna na sliki 10.4.
Slika 10.4: Natancna nastavitev polozaja prikaza obogatene resnicnosti glede
na oznako.
10.3. NASTAVITVE PRIKAZA OBOGATENE RESNICNOSTI 69
Ob uporabi kvalitetno natisnjene oznake in cvrsti pritrditvi le te na har-
moniko je potrebna samo prva nastavitev oznake v aplikaciji. Vse nastavitve
se shranijo v pomnilnik aplikacije z uporabo razreda NSUserDefaults, tako
da jih ob vsakem ponovnem zagonu aplikacije ni potrebno vec nastavljati. To
velja tudi za nastavitve predstavljene v prejsnjem podpoglavju 10.2. V pro-
gramski kodi funkcije saveData, saveDataMixer, loadData in loadDataMixer
opravijo shranjevanje ter nastavljanje shranjenih vrednosti aplikacije. Vse te
funkcije so implementirane v razredu MusicViewCotroller.m.
Poglavje 11
Moznosti izboljsav in razsiritev
V diplomskem delu smo realizirali aplikacijo, ki uporabnika s pomocjo oboga-
tene resnicnosti nauci pravilnega igranja basov diatonicne harmonike. Sama
implementacija predstavlja izziv za vec podrocij racunalnistva, glasbenega
znanja ter celo pedagogike. V razvoju je uporabljenih veliko stevilo razlicnih
tehnologij, za katere obstajajo izboljsave in razsiritve.
11.1 Zaznavanje prstov s pomocjo barv ali
oznak
Delo glasbenega pedagoga ni samo ucenje pravilnega igranja instrumenta.
Poleg pravilnega ucenja mora biti tudi dober pedagog, ki zna ucenca mo-
tivirati ter pohvaliti ob dosezenih rezultatih. Tega aplikacija seveda ne zna
storiti in tako v pedagoskem pogledu ne bo nikoli uspela nadomestiti dobrega
ucitelja. Z moznostjo detekcije prstov, bi aplikacija lahko sledila igranju
uporabnika. Algoritem bi tako sesteval pravilne pritiske tipk, ter na koncu
igranja izpisal dosezeni rezultat. Uporabnik bi tako dobil povratno oceno
pravilnega igranja.
Sama implementacija algoritma zaznave oznake, prikaza obogatene re-
snicnosti ter predvajanja skladbe preko virtualnega instrumenta aplikacije
je za tablicni racunalnik iPad tretje generacije velik zalogaj. Ob dodatnem
71
72 POGLAVJE 11. MOZNOSTI IZBOLJSAV IN RAZSIRITEV
procesiranju detekcije prstov bi se tako soocili s se pocasnejsim izrisovanjem
slike na ekran.
Poglavje 12
Sklepne ugotovitve
Rezultat diplomske naloge nam ponudi nov nacin ucenja pravilnega igranja
basov diatonicne harmonike. Uporabnik na zaslonu tablicnega racunalnika
iPad takoj vidi in slisi ali je njegovo igranje pravilno. Aplikacija je primerna
za uporabo na vseh trivrstnih diatonicnih harmonikah z enajstimi basnimi
tipkami. Omogocen je izbor vseh moznih durovskih kombinacij trivrstnih
diatonicnih harmonik. Polozaj oznake in izris obogatene resnicnosti se doda-
tno nastavi v sami aplikaciji. Algoritem ucenja je bil izboljsan s predhodno
informacijo naslednje pritisnjene tipke ter raztezanja meha. Ta izboljsava je
pripomogla k uporabniku prijaznejsi metodi ucenja, saj se tako lahko pri-
pravi za naslednji pritisk tipke.
Ideja ucenja instrumenta s pomocjo obogatene resnicnosti bi bila upo-
rabna tudi pri ostalih instrumentih, ceprav ne pri vseh. Za samo detekcijo
harmonike smo izbrali najbolj primeren nacin z uporabo detekcije oznake,
ceprav obstajajo alternative, ki pa se zaenkrat niso izkazale kot najbolj pri-
merne. Z dodatnim razvojem na podrocju racunalniskega vida ter odprtoko-
dne knjiznice OpenCV se to seveda lahko tudi spremeni. Uporaba MIDI pro-
tokola za predstavitev pesmi ponudi aplikaciji dodano vrednost spreminjanja
hitrosti igranja, visoke kvalitete zvoka ter podajanja informacij o pravilnem
igranju basov diatonicne harmonike.
Uporaba obogatene resnicnosti v aplikacijah trenutno predstavlja novo
73
74 POGLAVJE 12. SKLEPNE UGOTOVITVE
smer razvoja aplikacij in programske opreme. Odpirajo se nove moznosti tudi
v povezavi obogatene resnicnosti z ucenjem igranja glasbenih instrumentov.
Literatura
[1] M. Debevec, �Nadgradnja tradicionalnega pristopa v igranju na dia-
tonicno harmoniko�, diplomsko delo, Rakitna 2003, str. 3-10, str. 43-47
[2] Glasbena sola na daljavo. Dostopno na:
http://www.glasbena-sola.com
[3] Glasbena sola na daljavo, Nemcija. Dostopno na:
http://www.musikschule-zuhause.de
[4] Racunalniski program �VSLN�. Dostopno na:
http://www.sola-harmonike.si/demo/demo-vsln-program-za-ucenje-
diatonicne-harmonike.html
[5] Robert Goter. Dostopno na:
http://www.robertgoter.com/
[6] Racunalniski program �LTK�. Dostopno na:
https://sites.google.com/site/ltkharmonik/home
[7] Definicija obogatene resnicnosti. Dostopno na:
http://en.wikipedia.org/wiki/Augmented reality
[8] R. T. Azum, �A survey of augmented reality�, objavljeno v:�Teleope-
rators and Virtual Environments 6�, 1997, str. 2, str. 10-12
[9] Uporaba obogatene resnicnosti v nacrtovanju proizvodnje, pogl. 2.
Dostopno na:
75
76 LITERATURA
http://www.intechopen.com/books/augmented-reality/using-
augmented-reality-to-cognitively-facilitate-product-assembly-process
[10] Uporaba obogatene resnicnosti v marketingu. Dostopno na:
http://weareorganizedchaos.com/index.php/2009/10/15/3-questions-
to-ask-yourself-before-using-augmented-reality-in-marketing-and-
advertising/
[11] Primer uporabe obogatene resnicnosti �ar.drone�. Dostopno na:
http://ardrone2.parrot.com/
[12] Mobilna aplikacija �Anatomy 4D�. Dostopno na:
http://4danatomy.com/
[13] Mobilna aplikacija �Musems Of London�. Dostopno na:
http://chief.uc.pt/blog/index.php/streetmuseum-a-successful-
partnership-between-technology-and-cultural-heritage/
[14] I. Barakonyi, D. Schmalstieg, �Augmented reality agents in the deve-
lopment pipeline of computer entertainment�, pogl. 6. Dostopno na:
http://barakonyi.net/papers/arpuppet icec05.pdf
[15] Aplikacija �Augment 3D�. Dostopno na:
http://augmentedev.com/#home
[16] O. Cakmakci, F. Berard, J. Coutaz, �An Augmented Reality Based Le-
arning Assistant for Electric Bass Guitar�, na konferenci:�10th Inter-
national Conference on Human Computer Interaction�, Kreta, (2003)
[17] D. Zhang, Y. Shen, S.K. Ong, �An Affordable Augmented Reality based
Rehabilitation System for Hand Motions�, na konferenci:�International
Conference on Cyberworlds�, Singapur, 2010
[18] Y. Motokawa, H. Saito, �Support System for Guitar Playing using Au-
gmented reality Display�, Yokohama, 2006
LITERATURA 77
[19] Programska knjiznica ARToolKit. Dostopno na:
http://www.hitl.washington.edu/artoolkit/
[20] F. Liarokapis, �Augmented reality scenarios for guitar learning�, obja-
vljeno v:�EG UK Theory and Practice Of Computer Graphics�, Lon-
don, 2005.
[21] Orodje Xcode. Dostopno na:
https://developer.apple.com/technologies/tools/
[22] Orodje Instruments. Dostopno na:
https://developer.apple.com/technologies/tools/features.html
[23] Programski jezik Objective C. Dostopno na:
https://developer.apple.com/library/ios/#referencelibrary/GettingSt
arted/Learning Objective-C A Primer/
[24] Protokol MIDI. Dostopno na:
http://sl.wikipedia.org/wiki/MIDI
[25] Johnson, Joel. “The Master Key”: L. Frank Baum envisions augmented
reality glasses in 1901 Mote & Beam, 2012.
[26] Datoteka MIDI. Dostopno na:
http://en.wikipedia.org/wiki/MIDI#Standard MIDI files
[27] Detekcija s pomocjo iskanja barv. Dostopno na:
http://www.v3ga.net/processing/BlobDetection/
[28] Houghova krozna transformacija. Dostopno na:
http://www.cis.rit.edu/class/simg782/lectures/lecture 10/lec782 05 1
0.pdf
[29] Primer Houghove krozne transformacije v knjiznici OpenCV. Dostopno
na:
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/houghq circle
/hough circle.html#hough-circle
78 LITERATURA
[30] Iskanje objekta v sliki s funkcijo �matchTemplate�. Dostopno na:
http://docs.opencv.org/doc/tutorials/imgproc/histograms/temp
late matching/template matching.html#template-matching
[31] Detekcija obrazov v knjiznici OpenCV. Dostopno na:
http://docs.opencv.org/doc/tutorials/objdetect/cascade classifier/casc
ade classifier.html#cascade-classifier
[32] Binarna slika. Dostopno na:
http://en.wikipedia.org/wiki/Binary image
[33] Funkcija Canny v knjiznici OpenCV. Dostopno na:
http://docs.opencv.org/modules/imgproc/doc/feature detection.html
?highlight=canny#cv.Canny
[34] Algoritem �Canny�. Dostopno na:
http://en.wikipedia.org/wiki/Canny edge detector
[35] Music Sequence referenca. Dostopno na:
http://developer.apple.com/library/mac/#documentation/AudioTool
box/Reference/MusicSequence Reference/Reference/reference.html
[36] Music Track referenca. Dostopno na:
http://developer.apple.com/library/mac/#documentation/AudioTool
box/Reference/MusicTrack Reference/Reference/reference.html#//ap
ple ref/doc/uid/TP40009332
[37] Music Event Iterator referenca.Dostopno na:
http://developer.apple.com/library/mac/#documentation/AudioTool
box/Reference/MusicEventIterator Reference/Reference/reference.
html#//apple ref/doc/uid/TP40009333
[38] Orodje Cubase 7.0. Dostopno na:
http://www.steinberg.net/en/products/cubase/start.html
LITERATURA 79
[39] Orodje AULab. Dostopno na:
http://www.apple.com/itunes/mastered-for-itunes/
[40] Igra AR Basketball. Dostopno na:
https://itunes.apple.com/us/app/arbasketball-augmented-
reality/id393333529
[41] D. L. Baggio, S. Emami, D. M. Escriva, K. Ievgen, N. Mahmood, J. Sa-
ragih, R. Shilkrot, �Mastering OpenCV with Practical Computer Vision
Projects�, pog. 2, Birmingham, 2012.
[42] OpenGL teksture. Dostopno na:
http://open.gl/textures
[43] Nitenje v Objective C. Dostopno na:
http://developer.apple.com/library/ios/#Documentation/Cocoa/Con
ptual/Multithreading/Introduction/Introduction.html
[44] Aplikacija Strasser harmonika. Dostopno na:
https://itunes.apple.com/us/app/strasser-harmonika/id474198229