histogram - nsk

53
Histogram Tarakčija, Dinko Master's thesis / Diplomski rad 2020 Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: Josip Juraj Strossmayer University of Osijek, Faculty of Electrical Engineering, Computer Science and Information Technology Osijek / Sveučilište Josipa Jurja Strossmayera u Osijeku, Fakultet elektrotehnike, računarstva i informacijskih tehnologija Osijek Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:200:337481 Rights / Prava: In copyright Download date / Datum preuzimanja: 2022-03-13 Repository / Repozitorij: Faculty of Electrical Engineering, Computer Science and Information Technology Osijek

Upload: others

Post on 13-Mar-2022

17 views

Category:

Documents


0 download

TRANSCRIPT

Histogram

Tarakčija, Dinko

Master's thesis / Diplomski rad

2020

Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: Josip Juraj Strossmayer University of Osijek, Faculty of Electrical Engineering, Computer Science and Information Technology Osijek / Sveučilište Josipa Jurja Strossmayera u Osijeku, Fakultet elektrotehnike, računarstva i informacijskih tehnologija Osijek

Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:200:337481

Rights / Prava: In copyright

Download date / Datum preuzimanja: 2022-03-13

Repository / Repozitorij:

Faculty of Electrical Engineering, Computer Science and Information Technology Osijek

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU

FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA

Sveučilišni studij

HISTOGRAM

Diplomski rad

Dinko Tarakčija

Osijek, 2020.

SADRŽAJ

1. UVOD .................................................................................................................................................. 1

2. PREGLED PODRUČJA RADA .......................................................................................................... 2

3. HISTOGRAM I NJEGOVA UPOTREBA .......................................................................................... 4

3.1. Vrste histograma........................................................................................................................... 7

4. ANALIZA PODATAKA POMOĆU HISTOGRAMA ...................................................................... 16

4.1. Glazbeno - teoretska podloga ..................................................................................................... 16

4.2. Fourierova transformacija .......................................................................................................... 20

4.3. Prikupljanje podataka pomoću Pythona ..................................................................................... 24

4.4. Prikaz prikupljenih podataka u obliku histograma ..................................................................... 30

5. ZAKLJUČAK .................................................................................................................................... 40

LITERATURA ........................................................................................................................................... 41

SAŽETAK .................................................................................................................................................. 43

ABSTRACT ............................................................................................................................................... 44

ŽIVOTOPIS ............................................................................................................................................... 45

PRILOZI ..................................................................................................................................................... 46

1

1. UVOD

Histogram pripada grani statistike i grafički prikazuje zadane podatke u obliku pravokutnika ili

košarica (eng. bins, buckets). U radu će se prikazati razne vrste histograma, njihove

karakteristike te matematička podloga iza njih. Pozornost će se usmjeriti na stvaranju histograma

iz odsviranih tonova na električnoj gitari, odnosno, koliko točno računalo može prepoznati

odsvirane tonove na gitari i prikazati ih u obliku histograma.

U ovom radu bit će opisana teorija histograma, njegove glavne karakteristike i klasifikacija vrsta.

Prikazat će se osnove glazbene teorije, frekvencije žica i Fourierove transformacije. Pojasnit će

se kako se podaci uz pomoć Python programskog jezika prikupljaju u računalo te na šest

primjera napraviti histograme, izvršiti analizu i razlike između njih. Pažnja će se usmjeriti na

karakteristike histograma ovisno o točnosti programa i glazbenoj podlozi primjera.

U prvom poglavlju bit će opisani histogrami, za kakve podatke su korišteni te prednosti i

nedostatci histograma. Nakon toga, prikazat će se neke vrste histograma i za svaku od navedenih

vrsta histograma matematički će se obraditi. Za prikazivanje različitih vrsta histograma bit će

korištene Googleove skripte. U drugom poglavlju bit će objašnjena osnova glazbene teorije, u

kojoj će naglasak biti na povišenim i sniženim tonovima. Pojasnit će se kako se osnove glazbene

teorije prenose na električnu gitaru. Nakon toga bit će opisana analiza frekvencija žice gitare,

Fourierovi redovi i Fourierove transformacije (diskretna Fourierova transformacija i brza

Fourierova transformacija), frekvencijska analiza zvuka pomoću Fourierove transformacije i

Hannovi prozori. Slijedi pojašnjenje kako se s Pythonom prikupljaju podaci u računalo. Zadnje

potpoglavlje rada prikazuje šest različitih histograma koji su dobiveni provođenjem Python

skripte na šest različitih primjera u .wav formatu te se uspoređuju njihovi oblici. Prva četiri

primjera prikazuju kako računalo prepoznaje podatke kad se unose zasebno, a peti i šesti

pokazuju unošenje više podataka u isto vrijeme. Prikazano je kako računalo izbacuje histograme

iz kojih se lakše određuju primjeri ako se podaci unose zasebno, a ne u isto vrijeme.

.

2

2. PREGLED PODRUČJA RADA

Histogrami ne moraju nužno biti korišteni samo u glazbi kao što su korišteni u ovom radu,

korišteni su za sve vrste podataka te ima raznih vrsta histograma. Neki su kompliciraniji i

korišteni su u, primjerice, obradi slika. Jedan od problema koji je obrađen spektralnim

histogramima je klasifikacija tekstura.

Sl. 2.1. Spektralni histogram u analizi slika [1]

Moguće je prikazivati Fourierovu transformaciju kao spektrograme1 koji se dobiju iz histograma

te na taj način analizirati tonove i glasnoću kojom su odsvirani. [2]

1 Vizualni način prikaza jačine signala, tj. glasnoće

3

Sl. 2.2. Spektrogram frekvencijskog histograma

Ako se uzme u obzir analiza akorda [3], računalo je sposobno na osnovu analize par tonova

izračunati o kojim se akordima radi, no potrebno je poznavati glazbenu teoriju i zadati računalu

pravila po kojima će znati kako odrediti koji su akordi u pitanju, tj. kako zanemariti šumove.

Također, kad bi računalo moglo s određenom točnošću pokazivati koje se note sviraju, postoji

opcija u kojoj bi se automatski mogli stvarati notni zapisi ili tablature2. [4]

Histogram prikazuje frekvencijsku distribuciju što bi, ako bi postojala aplikacija koja prepoznaje

tonove i izbacuje vizualnu reprezentaciju odsviranih tonova, bilo korisno glazbenicima za

vježbanje glazbene teorije (određivanje tonaliteta, provjera točnosti skale i slično).

2 Notni zapis za gitaru gdje se brojevima označava koji prst ide na koje polje određene žice gitare

4

3. HISTOGRAM I NJEGOVA UPOTREBA

Histogram označava prikaz frekvencijske raspodjele preko pravokutnika čije širine prikazuju

razredne intervale i čije su površine proporcionalne odgovarajućim frekvencijama. Izgledom je

sličan stupčastim dijagramima, ali se razlikuje u načinu grupiranja podataka. U histogramu se

podaci grupiraju u košarice (eng. bins, buckets) koje predstavljaju učestalost pojavljivanja

podataka prema prethodno zadanim granicama.

Izraz „histogram“ potekao je britanskog matematičara i statističara Karla Pearsona koji je

histogram definirao kao jedan od načina grafičkog prikaza podataka iako, povijesno gledajući,

histogrami su se koristili i prije nego su dobili ime. Budući da sliče stupčastim dijagramima i

činjenica kako se prvi stupčasti dijagram pojavio u knjizi „The Commercial and Political Atlas“

Williama Playfaira 1786. godine, može se reći kako su histogrami nastali po uzoru na stupčaste

dijagrame.

Neka se uzme relacija R s n brojčanih oznaka Xi (i = 1…n). Vrijednost Vi oznake Xi je skup

vrijednosti Xi koji se nalaze u R.

Neka je Vi = { vi (k): 1 ≤ k ≤ Di }, gdje je vi (k) < vj (k) kada je k < j.

Širina si (k) od vi (k) se definira kao si (k) = vi (k + 1) – vi (k), za 1 ≤ k < Di;

uzima se kako je si (Di) = 1.

Učestalost ili frekvencija fi (k) od vi (k) je n-torka u R sa Xi = vi (k).

Površina ai (k) od vi (k) se definira kao ai (k) = fi (k) × si (k).

Raspodjela podataka Xi je set parova Ti { (vi (1), fi (1)), (vi (2), fi (2)), …, (vi (Di), fi (Di)) }.

Učestalost pojavljivanja zajedničkih podataka (eng. joint-frequency) fi (ki, …, kn) vrijednosti

kombinacije < vi (ki), …, vn (kn) > je n-torka u R koja sadrži vi (ki) u brojčanoj oznaci Xi za svaki

i.

Iz toga slijedi kako je raspodjela T1,…,n od X1,…,n cijeli set parova vrijednosti kombinacija i

učestalosti pojavljivanja istih. [5]

5

Sl. 3.1. Primjer histograma sa zadanim podacima

Na slici 3.1. prikazan je primjer histograma napravljen u Python programskom jeziku i njegovim

bibliotekama Matplotlib, Numpy i Pyplot. Podaci iz kojih je histogram napravljen je niz od

petnaest nasumično odabranih brojeva između 1 i 100:

11, 77, 7, 53, 46, 83, 45, 64, 10, 30, 41, 15, 89, 19, 37

6

S obzirom da histogram prikazuje frekvencijsku raspodjelu podataka, histogramima je nekad

lakše u većem setu podataka odrediti aritmetičku sredinu nego stupčastim dijagramima. [6]

Sl. 3.2. Histogram s ravnomjerno raspoređenim podacima

Na slici 3.2., raspoređenost podataka je otprilike simetrična, a najviše podataka nalazi se oko

košarice vrijednosti 50, dok se vrijednosti košarica lijevo i desno smanjuju.

Sl. 3.3. Dva histograma s sličnim aritmetičkim sredinama

7

Na slici 3.3., oba histograma imaju slične aritmetičke sredine, ali su podatci različito

raspoređeni. U prvom histogramu, većina podataka leži između 40 i 60, dok su u drugom

raspoređeni kroz cijeli histogram. Bez obzira što im je aritmetička sredina možda slična, postoji

razlika u izgledu histograma.

Histogrami pokazuju koje su vrijednosti učestalije, a koje se manje pojavljuju s obzirom na

njihovu raspršenost, što se ne može shvatiti iz same liste vrijednosti. Aritmetička sredina može

pomoći, ali svejedno treba promotriti same histograme kako bi se utvrdilo o kakvim

distribucijama podataka se radi. Također, histogrami su korisni za izdvajanje podataka koji se ne

pojavljuju često u nizu podataka. Oni se pojavljuju kao izdvojena košarica u bilo kojem dijelu

histograma.

Iako je moguće stavljati više histograma na jedan graf kako bi se dobilo bolje saznanje o

vrijednostima za određene grupe podataka, dodavanjem više grupa na jedan graf gdje je svaka

grupa jedan histogram, graf se može pretrpati tako da se ne mogu donijeti zaključci o

distribucijama podataka. Obično je najbolje iskoristiti histograme za jednu ili dvije grupe

podataka odjednom.

Nedostatak histograma su činjenica da su subjektivni [7] – širina košarica je stvar osobnog

izbora što ima veliki utjecaj na izgled histograma. Ako se ne uzmu dobre granice za košarice,

moguće je dramatično promijeniti izgled histograma, pogotovo kad se radi o maloj grupi

podataka za histogram. Također, histogrami dosta ovise o temi koju se analizira, radi li se

istraživanje u kojem se uspoređuje više kategorija, nije ih moguće staviti na jedan graf pa

analizirati. Pojavi li se za histogram previše ili premalo podataka, postanu teški za analizirati jer

previše podataka može značiti težu analizu, a premalo podataka može značiti izostavljanje bitnih

podataka.

3.1.Vrste histograma

Postoje razne vrste histograma, za potrebe prikaza i objašnjavanja raznih distribucija podataka,

koristit će se Google Developers Chart [8] biblioteka, gdje korisnik sam može ubaciti podatke i

lokalno na vlastitom računalu dobiti rezultat

8

Primjer: odigran je jedan šahovski turnir. Na turniru je bilo 8 igrača, šahovske partije su bile

raspoređene po Bergerovom sustavu [9] u kojem svaki igrač igra protiv svakog igrača i bilo je 28

partija (jer igrač ne može igrati sam protiv sebe). Želi se histogramom prikazati trajanje šahovske

partije u potezima svih partija na turniru.

Neka idući niz predstavlja broj poteza u partiji: 31, 13, 67, 53, 74, 9, 38, 39, 24, 16, 47, 50, 44,

32, 19, 32, 48, 20, 29, 58, 53, 36, 40, 57, 43, 25, 24, 40.

Slijedeća tablica prikazuje podatke o broju poteza šahovskih partija raspoređene prema veličini

prema košaricama.

Tab. 3.1. Broj poteza u partiji i frekvencija pojavljivanja

Veličina košarice Broj poteza u partiji Količina partija u košarici 0 – 15 9, 13 2

16 – 30 16, 19, 20, 24, 24, 25, 29 7

31 – 45 31, 32, 32, 36, 38, 39, 40, 40, 43, 44 10

46 – 60 47, 48, 50, 53, 53, 57, 58 7

61 – 75 67, 74 2

Kad se napravi histogram pomoću Googleove skripte, dobije se slijedeći prikaz:

Sl. 3.4. Histogram broja poteza u šahovskim partijama

9

Na slici 3.4. se vidi tzv. zvonasti histogram koji obično predstavlja normalnu razdiobu. Prvi i

najjednostavniji korak provjere predstavlja li histogram normalnu razdiobu ili ne bio bi provjera

aritmetičke sredine, moda i medijana.

Aritmetička sredina [10]: x̅= 1n ∑ xini=1 = x1+x2+x3+…+xnn #(3 − 1)

gdje je:

- �̅� – aritmetička sredina partija

- n – broj promatranih partija

- 𝑥𝑖 – broj poteza u jednoj partiji

x̅= 1n ∑ xini=1 = 128 ∑ x28= x1+x2+x3+…+x2828 = 9+13+16+…+742828

i=1 = 37.89 #(3 − 2)

Medijan je središnji broj u nizu brojeva koji su poredani od najmanjeg prema najvećem pod

uvjetom da niz ima neparan broj brojeva. Ako niz ima paran broj brojeva, tada se traži

aritmetička sredina između dva središnja broja u poredanom nizu. Kada je niz brojeva neparan,

ali velik i ne može se odrediti koji je član niza medijan, tada može poslužiti iduća formula3:

𝑚𝑒𝑑𝑖𝑗𝑎𝑛 = (𝑛 + 1)2 #(3 − 3)gdje je:

- n – broj člana u nizu

Ako je broj veći, za računanje medijana parnog broja niza može se promotriti na idući način: 𝑚𝑒𝑑𝑖𝑗𝑎𝑛 = 𝑛2 − 1#(3 − 4)

gdje je:

- n – sveukupan broj članova u nizu

Prema (3-3), dobije se koliko članova treba biti ispod i iznad srednja 2 člana u nizu. 3 http://www.statisticshowto.com/probability-and-statistics/statistics-definitions/median-formula/

10

Iz tablice 3.1. i činjenici da je bilo 28 partija, može se odrediti da je niz parnog broja i da se

medijan računa na idući način: 𝑚𝑒𝑑𝑖𝑗𝑎𝑛 = 282 − 1 = 13 #(3 − 5)Odnosno, rezultat gore znači da su 14. i 15. član medijani u zadanom nizu, a to su partija s 38 i

partija 39 poteza. Uzme li se aritmetička sredina te dvije partije, dobije se slijedeći rezultat, što je

u ovom slučaju zapravo medijan:

𝑥 = 12 ∑ 𝑥22𝑖=1 = 38 + 392 = 38.5 #(3 − 6)

Posljednje što ostaje za odrediti je mod. Mod je jednak onome broju koji se najčešće pojavljuje u

nizu. Unutar jednog niza može postojati više modova.

Za podatke iz tablice 3.1., vidljivo je kako postoji 4 moda: partije koje imaju 24, 32, 40 i 53

poteza (zato što se jedine pojavljuju dva puta u nizu).

Budući da aritmetička sredina iznosi 37.89, medijan 38.5 i sva četiri moda se razlikuju od

aritmetičke sredine i medijana, može se zaključiti kako ovaj histogram ne predstavlja normalnu

razdiobu.

Za iduću karakteristiku histograma, neka se uzme slijedeći primjer: želi se napraviti histogram

koliko je 2001. godine bilo stanovnika u hrvatskim gradovima iznad 10,000 bez Osijeka, Rijeke,

Splita i Zagreba. Podaci su idući: 10208, 10633, 10923, 11231, 11478, 11821, 12090, 13056,

13426, 13735, 14688, 15147, 15329, 15683, 15956, 16696, 19491, 19506, 19644, 23955, 23956,

26468, 27024, 31533, 32029, 34302, 38667, 38839, 42615, 44322, 46833, 53531, 54085, 57460,

71471 (gradovi po redu kao i brojevi su Slatina, Knin, Trogir, Križevci, Sinj, Nova Gradiška,

Županja, Rovinj, Makarska, Kutina, Virovitica, Čakovec, Metković, Petrinja, Samobor, Poreč,

Đakovo, Požega, Zaprešić, Koprivnica, Solin, Vukovar, Bjelovar, Velika Gorica, Vinkovci,

Šibenik, Kaštela, Varaždin, Dubrovnik, Sisak, Karlovac, Slavonski Brod, Sesvete, Pula, Zadar).

11

Ubacivanjem podataka u Google skriptu, dobije se slijedeći histogram:

Sl. 3.5. Histogram broja stanovnika bez 4 najveća hrvatska grada

Zanimljiva stvar kod ovog histograma je ta što su podaci skupljeni s lijeve strane i kako se

košarice kreću prema desno, smanjuje se količina podataka unutar košarica. Takvi histogrami

nazivaju se asimetrični histogrami (eng. skewed, iskrivljeni), a mogu biti iskrivljeni na desno i na

lijevo. Najčešća greška kod određivanja je li histogram iskrivljen prema desno ili lijevo jest

gledanje gdje je skupljeno najviše podataka, tj. gdje su košarice najviše i određivanje prema

košaricama stranu iskrivljenosti. Najsigurniji test za određivanje strane iskrivljenosti treba

gledati aritmetičku sredinu, medijan i mod (iako ni to nije apsolutno točno zbog multimodalnih

distribucija). Također, vrijedi obratiti pozornost na koju stranu apscise padaju ili rastu vrijednosti

košarica. Ako vrijednosti košarica padaju u pozitivnom smjeru apscise, obično se radi o

histogramu iskrivljenom prema desno, a ako vrijednosti košarica padaju u negativnom smjeru

apscise, vjerojatno se radi o histogramu iskrivljenom prema lijevo.

Za histogram koji je iskrivljen prema desno obično vrijedi kako je aritmetička sredina veća od

medijana, a mod manji od medijana

Za histogram koji je iskrivljen prema lijevo obično vrijedi kako je aritmetička sredina manja od

medijana, a mod veći od medijana.

12

Kada se izračuna aritmetička sredina za histogram na slici 3.5., dobije se rezultat od 26223.743,

medijan 19506, a moda nema jer se svaka vrijednost pojavljuje samo jednom. Vidljivo je kako je

aritmetička sredina veća od medijana i vrijednost košarica pada u pozitivnom smjeru apscise, a

to govori da kako se radi o histogramu iskrivljenom na desno.

Neka se promotri idući primjer: ispitano je 50 ispitanika koji piju 2 ili više lijeka dnevno. Za

potrebe histograma, bitne su godine. Podaci su slijedeći: 8, 16, 19, 23, 26, 28, 31, 31, 34, 36, 39,

41, 42, 46, 46, 48, 48, 52, 52, 52, 53, 54, 54, 57, 57, 58, 59, 59, 61, 61, 61, 61, 62, 63, 63, 65, 65,

66, 66, 68, 68, 69, 69, 71, 72, 72, 72, 75, 78, 79.

Dakle, od 1 do 10 godina je jedna osoba, od 11 do 20 godina je 2 osobe, od 21 do 30 godina je 3

osobe, od 31 do 40 godina je 5 osoba, od 41 do 50 godina je 6 osoba, od 51 do 60 godina je 11

osoba, od 61 do 70 godina je 15 osoba i od 71 do 80 godina je 7 osoba. Slijedeća tablica

prikazuje podatke:

Tab. 3.2. Raspon godina i broj ispitanika

Raspon godina ispitanika Broj ispitanika

1 – 10 1

11 – 20 2

21 – 30 3

31 – 40 5

41 – 50 6

51 – 60 11

61 – 70 15

71 - 80 7

13

Stavljanjem podataka u Google skriptu, dobije se idući histogram:

Sl. 3.6. Histogram omjera raspona i broja godina osoba koje piju 2 ili više lijeka dnevno

Za razliku od histograma na slici 3.5., vidljivo je kako vrijednosti košarica padaju u negativnom

smjeru apscise. Potrebno je još izračunati aritmetičku sredinu, medijan i mod.

Aritmetička sredina iznosi 53.12, medijan je 57.5, a mod 61 (pojavljuje se 4 puta). Rezultati

govore kako je aritmetička sredina manja od medijana, a medijan manji od moda s čime se može

zaključiti kako se radi o histogramu iskrivljenom na lijevo.

Slijedeća vrsta histograma opisuje situaciju kada postoje podaci koji su raspoređeni s jedne

strane apscise i s druge strane apscise. Neka se uzme idući primjer: 50 studenata je pisalo ispit i

od 100 bodova, imali su iduće rezultate: 95, 95, 95, 85, 85, 85, 85, 85, 85, 85, 80, 80, 80, 75, 75,

75, 75, 70, 70, 70, 70, 65, 65, 60, 45, 35, 35, 25, 25, 25, 25, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,

15, 10, 10, 10, 10, 10, 5, 0, 0.

14

Tab. 3.3. Raspon broja bodova na ispitu

Raspon bodova Rezultati učenika Broj učenika

0 – 9 5, 0, 0 3

10 – 19 15, 10, 10, 10, 10, 10 6

20 – 29 25, 25, 25, 25, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 14

30 - 39 35, 35 2

40 - 49 45 1

50 – 59 - 0

60 – 69 65, 65, 60 3

70 – 79 75, 75, 75, 75, 70, 70, 70, 70 8

80 – 89 85, 85, 85, 85, 85, 85, 85, 80, 80, 80 10

90 – 100 95, 95, 95 3

Google skripta izbacuje idući histogram:

Sl. 3.7. Histogram podataka iz tablice 3.3.

15

Ovakav histogram naziva se bimodalan (eng. bi - dvostruko) zato što ima dvije odvojene grupe

podataka, a svaka od njih ima svoj mod. Vidljivo je na slici 3.7. kako je u grupi od 0 do 49

bodova ima najviše studenata koji su postigli rezultat između 20 i 29 bodova, dok u grupi od 60

do 100 bodova ima najviše studenata koji su postigli između 80 i 89 bodova. Treba također

obratiti pozornost na lokalne i globalne maksimume podataka u histogramu.

Globalni maksimum bi bio mod cijelog bimodalnog histograma, a lokalni maksimum je mod

jedne grupe podataka i mod druge grupe podataka. U slučaju histograma na slici 3.7. i podataka

iz tablice 3.3., mod prvog dijela podataka (studenti koji su imali od 0 do 50 bodova na ispitu) je

20, a mod drugog dijela podataka (studenti koji su imali od 60 do 100 bodova) je 85. Globalni

maksimum, odnosno mod cijelog bimodalnog histograma je 20 zato što se taj rezultat najviše

ponavlja.

Također, s obzirom da postoji više od jednog moda, moguć je i naziv multimodalni histogram.

Razlika između multimodalnog i bimodalnog histograma je u tome što bimodalni histogram ima

dva moda, dok multimodalni histogram ima dva ili više moda. Multimodalni histogram se

također naziva „češljasti“ histogram. [11]

16

4. ANALIZA PODATAKA POMOĆU HISTOGRAMA

Kako bi se podaci mogli analizirati, prvo je potrebno objasniti neke pojmove iz glazbe koji će

biti korišteni. Glavni pojmovi u glazbi koji će se objašnjavati bit će tonovi i njihove frekvencije

koje će Fourierovom transformacijom biti prenošeni prevedeni u frekvencije i obrnuto. Dobiveni

rezultati će na kraju biti prikazani u obliku histograma. Programski jezik koji će biti korišten je

Python i njegove biblioteke.

4.1.Glazbeno - teoretska podloga

Glazbena teorija obuhvaća širok spektar pojmova, no samo će se melodija i intervali promatrati

za stvaranje histograma. Melodija je niz tonova različite visine i trajanja koji čine zaokružen

tonski oblik i glazbeno-sadržajnom smislu tvore smislenu i dovršenu cjelinu. Osnovni tonski niz

sastoji se od sedam osnovnih tonova, a imenuje se na dva načina: glazbenom abecedom (C, D, E,

F, G, A, H) ili solmizacijom (do, re, mi, fa, so, la, ti). [12] To su osnovni znaci, lako su

prepozatljivi kao bijele tipke na glasoviru, iako se glasovir sastoji od crnih i bijelih tipki. Crne

tipke predstavljaju povišene ili snižene tonove - polutonove. Za povišene tonove dodaje se

predmetak „is“ na osnovni ton, a za snižene tonove dodaje se predmetak „es“, tako da su

povišeni tonovi: cis, dis, fis, gis, ais, his; a sniženi tonovi: ces, des, es, fes, ges, as, hes (hes ili b).

Treba napomenuti kako je u Hrvatskoj ton B snizilica za osnovni ton H, a u nekim državama,

primjerice, Sjedinjenim Američkim Državama, ton B je osnovni ton koji je jednak hrvatskom

tonu H.

Sl. 4.1. Osnovni tonovi i povisilice na klavijaturi

17

Na slici 4.1. vidi se kako između tonova E i F te H i C ne postoje crne tipke jer se radi o

prirodnim polutonovima. Želi li se ton E povisiti jedan poluton više, onda se svira ton F, isto

vrijedi i za ton H, svira se C.

Sl. 4.2. Osnovni tonovi i snizilice na klavijaturi

Prema slici 4.1. i slici 4.2., vidi se konačan odnos između osnovnih tonova, povisilica i snizilica.

Može se reći kako je jednom osnovnom tonu povisilica idućem osnovnom tonu snizilica, osim za

E i H. Dakle, ton cis (povisilica osnovnog tona C) je jednaka tonu des (snizilici tona D). Kad se

bude definirao histogram, neće se bazirati na snizilicama nego na povisilicama, pošto je za

frekvencijsko prepoznavanje tonova dovoljno „prepoznati“ koji je ton. Razlika između povisilica

i snizilica je puno važnija kad se slažu skale i gledaju intervali jer kako bi određena skala bila

složena, moraju se poštovati točno određeni tonovi i intervali, odnosno, nekad nije moguće reći

da je ton fis jednako tonu ges iako po zvuku jesu. To svojstvo u teoriji glazbe se naziva

enharmonija – tonovi su jednaki po zvuku, ali se drugačije zapisuju. Povisilice se inače

označavaju znakom sličnom ljestvicama (♯), a snizilice znakom sličnom slovu b (♭). Ako se

spoje svi osnovni tonovi i povisilice (snizilice) u jednu ljestvicu, dobit će se kromatska ljestvica

– C, C#, D, D#, E, F, F#, G, G#, A, A#, H. Ona se može ponavljati jer se tonovi nakon

određenog vremena ponavljaju u oktavi, ali nakon određenog vremena, ljudsko uho više ne može

primjetiti ton zbog frekvencije titranja tog tona.

18

Frekvencije do koje ljudsko uho odraslog čovjeka može čuti jesu između 16 i 20000 herca. Ispod

frekvencije od 16 Hz, radi se o infrazvuku. Primjer za infrazvuk može biti mahanje rukom,

stvara se val s frekvencijom od nekoliko Hz, no ljudsko uho ne može čuti tu frekvenciju. Ako je

frekvencija iznad 20000 Hz, radi se o ultrazvuku što također čovjek ne može čuti, ali ima

primjenu u medicini (ultrazvuk djeteta).

Gitara, samim time i električna gitara, ima sličan način na koji su note raspoređene. Glavni

dijelovi su tijelo na kojem je pričvršćen vrat i žice kojih najčešće ima šest. Glavna razlika

između akustičnih i električnih gitara je, osim u izgledu, način na koji proizvode zvuk. Akustične

gitare imaju rupu u sredini tijela i proizvode zvuk samo od titranja žica. Nakon što se trzne žica,

titranje žica prolazi kroz šuplji prostor unutar rupe od akustične gitare i rezoniranjem stvara

zvuk. Na taj način se dobije glasniji zvuk nego kad se svira električna gitara (ako električna nije

uključena u pojačalo). Električna gitara nema šupljinu, nego je obično napravljena od jednog

komada drveta i na sebi ima magnete koji hvataju titraje žice, pretvaraju u električne signale i

prenose do pojačala.

Gledajući od dolje prema gore, odnosno, od najtanje prema najdebljoj žici, tonovi su E, H, G, D,

A, E (donji ton E i gornji ton E su u različitim oktavama). Na vratu se nalaze pragovi i polja

kojih ima najčešće 21, 22 ili 24. Pragovi odvajaju jedno polje od drugog. Svako polje na gitari

označava jedan poluton.

Tab. 4.1. Note na poljima gitare

Broj polja na gitari

0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

6. žica E F F# G G# A A# H C C# D D# E

5. žica H C C# D D# E F F# G G# A A# H

4. žica G G# A A# H C C# D D# E F F# G

3. žica D D# E F F# G G# A A# H C C# D

2. žica A A# H C C# D D# E F F# G G# A

1. žica E F F# G G# A A# H C C# D D# E

U tablici 4.1. pod stupcem „0.“ prikazane su note gitare koje označavaju trzanje otvorene žice, tj.

bez da je ijedno polje pritisnuto. Vidljivo je kako je raspored tonova otvorenih žica identičan

rasporedu tonova na dvanaestom polju. Nakon dvanaestog polja, note se počinju ponavljati,

primjerice, ako je ton na prvom polju A žice jednak A#, ton na trinaestom polju A žice bit će

jednak A#.

19

Sve dosad navedeno za električnu gitaru vrijedi ako je u najpopularnijem štimu (eng. tuning),

odnosno, da A4 iznosi 440 Hz i da žice jesu naštimane kao E, H, G, D, A, E.

Primjerice, ton A4 ima 440 Hz, a njegova oktava A5 (12 polutonova više) ima frekvenciju 880

Hz. Svaka oktava je, frekvencijski gledano, omjera 2:1. Budući da između tonova A4 i A5 ima 12

polutonova, svaki od tih polutonova ima omjer 21/12

između sebe. [13] Zbog tog omjera i

činjenice da je A4 440 Hz, moguće je iz bilo koje frekvencije odrediti koji to približno ton. Neka

dvije note imaju frekvencije f1 i f2 i frekvencijski omjer f2/f1. Omjer u oktavi je 2:1, stoga broj

oktava koji se nalazi između frekvencija f1 i f2 iznosi log2(f2/f1). Oktave se sastoje od polutonova

koje imaju frekvencijski omjer od 21/12

, A4 je jednak 440 Hz, frekvencija tražene note fn jest

21/12

440 Hz. Lako je za odrediti koliko je polutonova između frekvencije fn i A4 formulom n = 12

log2(fn/440).

Frekvencije žica na gitari od najtanje prema najdebljoj žici su 330 (E), 247 (H), 196 (G), 147

(D), 110 (A) i 82 (E) Hz. Te frekvencije vrijede samo kad su žice otvorene i trzaju se bez da se

ijedno polje pritisne na vratu. Pritiskanjem bilo kojeg polja na bilo kojoj žici, ton se mijenja i ako

se ide više prema ruci kojom se trza, ton će biti viši kao što je opisano na tablici 3.1. Ako je ton

viši i ruka koja pritišće polja bude bliže ruci koja trza, žica koja se trza bit će kraća, više će titrati

i proizvodit će veću frekvenciju. Primjerice, u tablici 4.1. može se vidjeti kako na najdebljoj E

žici peto polje je jednako otvorenoj A žici (odmah ispod E žice). Gitaristi se obično orijentiraju

po tome i po zvuku petog polja popravljaju zvuk ako nisu zvuči kao da gitara nije naštimana jer

na petom polju žice proizvode sličnu frekvenciju kao slijedeća otvorena.

Svaki ton ima svoj MIDI broj na osnovu svoje frekvencije. Za ton A4 dogovorno vrijedi da

njegov MIDI broj iznosi 69. Svaki poluton iznad A4 ima za jedan broj više, a svaki poluton ispod

ima jedan broj manje. Brojevi također se računaju po frekvencijama jer A4 ima broj MIDI 69 i

frekvenciju 440 Hz, znači da će njegova oktava imati MIDI broj 81 i frekvenciju 880 Hz,

odnosno, MIDI broj će biti jednak 12log2(fn/440) + 69. MIDI tonovi se obično koriste u

elektronskoj glazbi gdje se koriste MIDI klavijature kao instrument.

20

4.2.Fourierova transformacija

Svi signali u vremenskoj domeni mogu biti prikazani sumom sinusoidalnih valova različitih

amplituda i frekvencija. Na toj činjenici se i zasniva Fourierova transformacija – uzima se signal,

i razlomi se na sumu sinusoidalnih valova različitih amplituda i frekvencija. [14]

Sl. 4.3. Zbroj sin(x) i sin(2x)

Sl. 4.4. Zbroj sin(x), sin(2x), sin(3x), sin(4x) i sin(5x)

21

Prema [15], svaki matematički izraz oblika: 𝐴0 + 𝛴𝑛=1∞ [cos(𝑛𝑥) + 𝐵𝑛 sin(𝑛𝑥)]#(4 − 1)

naziva se Fourierovim redom.

Fourierov polinom je definiran kao:

𝐹𝑛(𝑥) = 𝑎0 + ∑(𝑎𝑘 cos(𝑘𝑥) + 𝑏𝑘 sin(𝑘𝑥))𝑘=𝑛𝑘=1 #(4 − 2)

gdje je i = 1, …, n, a konstante a0, ak i bk su Fourierovi koeficijenti Fn(x).

Fourierovi polinomi su 2π periodične funkcije i mogu se upotrijebiti trigonometrijske

transformacije:

sin(𝑚𝑥) cos(𝑛𝑥) = 12 {sin[(𝑚 + 𝑛)𝑥] + sin[(𝑚 − 𝑛)𝑥]} #(4 − 3)

cos(𝑚𝑥) cos(𝑛𝑥) = 12 {cos[(𝑚 + 𝑛)𝑥] + cos[(𝑚 − 𝑛)𝑥]} #(4 − 4)

sin(𝑚𝑥) sin(𝑛𝑥) = 12 {cos[(𝑚 − 𝑛)𝑥] + cos[(𝑚 + 𝑛)𝑥]} #(4 − 5)

Iz (4-3), (4-4) i (4-5) mogu se dokazati sljedeće formule:

za n ≥ 0:

∫ cos(𝑛𝑥) 𝑑𝑥𝜋−𝜋 = 0, ∫ sin(𝑛𝑥) 𝑑𝑥𝜋

−𝜋 = 0#(4 − 6)

za m i n vrijedi:

∫ sin(𝑚𝑥) cos(𝑛𝑥) 𝑑𝑥𝜋−𝜋 = 0#(4 − 7)

za n ≠ m vrijedi:

∫ cos(𝑚𝑥) cos(𝑛𝑥) 𝑑𝑥𝜋−𝜋 = 0, ∫ sin(𝑚𝑥) sin(𝑛𝑥) 𝑑𝑥𝜋

−𝜋 = 0#(4 − 8)

za n ≥ 1 vrijedi:

∫ cos2(𝑛𝑥) 𝑑𝑥𝜋−𝜋 = 𝜋, ∫ sin2(𝑛𝑥) 𝑑𝑥𝜋

−𝜋 = 𝜋#(4 − 9)

22

Koristeći (4-2), (4-6), (4-7), (4-8) i (4-9), slijedi:

𝑎0 = 12𝜋 ∫ 𝐹𝑛(𝑥)𝑑𝑥𝜋−𝜋 #(4 − 10)

𝑎𝑘 = 1𝜋 ∫ 𝐹𝑛(𝑥) cos(𝑘𝑥) 𝑑𝑥𝜋−𝜋 , 1 ≤ 𝑘 ≤ 𝑛#(4 − 11)

𝑏𝑘 = 1𝜋 ∫ 𝐹𝑛(𝑥) sin(𝑘𝑥) 𝑑𝑥𝜋−𝜋 , 1 ≤ 𝑘 ≤ 𝑛#(4 − 12)

Na ovaj način moguće je bilo koju 2π periodičnu funkciju povezati s Fourierovim redovima.

Iako Fourierova transformacija generalno rečeno rastavlja ili sastavlja signale, treba reći u kojim

domenama – pravi rastavljanje vremenskog prikaza signala u frekvencijski prikaz signala.

Frekvencijska domena je samo drugačiji način gledanja istog signala. Podaci kao što su diskretne

vrijednosti nije moguće prikazati običnom Fourierovom transformacijom, za njih se koristi

diskretna Fourierova transformacija.

Ako postoji diskretan skup kompleksnih brojeva (koji se mogu dobiti, primjerice, uzorkovanjem

funkcije na nekom intervalu) [16], Fourierova transformacija definirana za kontinuirani skup

neće odgovarati. Za takav skup podataka koristi se diskretna Fourierova transformacija:

𝐹𝑗 = ∑ 𝑓𝑘𝑒2𝜋𝑖𝑗𝑘𝑛𝑛−1𝑘=0 #(4 − 13)

koja će niz kompleksnih brojeva f0, …, fn-1 pretvoriti u niz kompleksnih brojeva F0, …, Fn-1.

Inverzna funkcija od (4-13) je:

𝑓𝑘 = 1𝑛 ∑ 𝐹𝑗𝑒−2𝜋𝑖𝑘𝑗𝑛𝑛−1𝑗=0 #(4 − 14)

Također, postoji i brza Fourierova transformacija što je unaprijeđena diskretna Fourierova

transformacija koja rastavlja signal, ali zahtjeva manje izračuna. Glavna karakteristika brze

Fourierove transformacije (drugim imenom FFT) je izračunavanje diskretne Fourierove

transformacije u O(n log n) vremenu. Zbog svoje brzine i efikasnosti postaje temelj velikog

dijela modernih multimedijskih primjena (glazba, obrada slika). Ukolilko se valovi mogu zbrajati

i stvarati sinusoidalne valove, mogu se i rastavljati na sinusoidalne valove te nakon što je

rastavljen, mogu se razlučiti razne frekvencije koje su prisutne u originalnom valu. Takav način

obrade valova ima raznih primjena, jedna od njih je kompresija podataka na računalu – ako se

23

zna koje su frekvencije u podacima manje bitne, moguće je zanemariti te frekvencije čime se

dobije bolja reprezentacija podataka u memoriji, odnosno, kompresija podataka. Moguće je

također rastaviti zvučne valove čime se ignoriraju određene frekvencije za optimizaciju zvuka i

micanje šumova.

Fourierova transformacija na signalu je odličan način analize signala, ali važno je znati točnost

transformacije i kako unaprijediti jasnoću signala korištenjem prozora. Korištenjem Fourierove

transformacije za izračun frekvencijske komponente signala s točno određenom bazom podataka

daje dobre rezultate, ali ako se koriste neodređeni brojevi podataka, dolazi do nepravilnosti u

signalu. Ograničavanjem baze podataka koji se analiziraju bi značilo da se postavi prozor na

podatke. Postavljanjem prozora smanjuju se amplitude nepravilnosti kod neodređenih broja

podataka tako što se vremenska domena množi određenom bazom podataka čija se amplituda

mijenja polagano i postepeno čime se dobije ustaljeni val bez oštrih prijelaza. Ima više vrsta,

neke od njih su Hamming, Blackman, Hann, Kaiser Bessel ili flattop.

Sl. 4.5. Hannov prozor u frekvencijskoj domeni

24

U ovom radu korišten je Hannov (ili Hanningov) prozor, nazvan po Juliusu von Hannu koji

generalno zadovoljava preko 90 posto slučajeva u kojima treba postaviti prozor na signal.

25

Sinusoidalnog je oblika, ima visok vrh, sa strane se vrijednosti smanjuju i s obje strane dodiruju

nulu čime se uklanjaju nepravilnosti u signalu. U praksi je uvijek dobro provjeriti kako različite

vrste prozora djeluju na signal kako bi se dobio najbolji rezultat za aplikaciju, no s obzirom na

postotak točnosti, Hannov prozor daje zadovoljavajuće rezultate. Hannov prozor se kod analize

frekvencija žica gitare primjenjuje na jednako raspoređenim podacima gdje podaci predstavljaju

umnožak uzoraka po okviru i broju okvira po Fourierovoj transformaciji.

4.3.Prikupljanje podataka pomoću Pythona

Za unos frekvencije žice gitare u računalo, obradu signala i frekvencije, prepoznavanje tonova od

tih frekvencija i iscrtavanje histograma, korišten je Python 3.7 i njegovi paketi:

- PyAudio – paket u kojem se definira koji line-in utor će se koristiti, broj tonova koji će se

analizirati, podaci za Fourierovu transformaciju i slično

- Mingus – omogućuje rad s tonovima gitare i općenito glazbenom teorijom

- Numpy – Pythonov paket koji služi za brzi rad s matematičkim operacijama, arrayjevima

i računanjem s njima

- Matplotlib – stvaranje vizualizacija u Pythonu

- Time – paket kojim je moguće dohvatiti trenutno vrijeme

Paket PyAudio se koristi inicijalizacijom pyaudio.PyAudio() funkcije u varijablu i otvaranjem

stream-a u kojem se definiraju podaci koji će se promatrati.

Programski kod 4.1.

audio_parameters = {'format': pyaudio.paInt16,

'channels': 1,

'rate': sampling_rate,

'input': True,

'frames_per_buffer': samples_per_frame,

'input_device_index': self.input_device}

stream = pyaudio.PyAudio().open(**audio_parameters)

26

Tab. 4.2. Varijable u audio_parameters

format int ili float različitih veličina

channels broj kanala kroz koje će se preslušavati (jedan ili dva)

rate broj uzoraka koji će se promatrati input definiranjem je False, ali se preslušavaju podaci pa se prebacuje u True

frames_per_buffer definira broj okvira u međuspremniku (samples_per_frame je prethodno

u kodu definiran s vrijednošću od 48000) input_device_index označava koji ulaz na računalu (line-in) će se promatrati

Zadnja linija u programskom kodu 4.2. označava pokretanje preslušavanja ulaza signala u

računalo.

Prema [4-1], prvo je potrebno definirati funkcije za formule kojima se frekvencije pretvaraju u

određene broj i obrnuto te dodati uz pomoć paketa Mingus funkcije kojima se u konzoli ispisuju

imena tonova iz dobivenih brojeva.

Programski kod 4.2.

Objekt Note() je iz paketa Mingus, tj. jednog od njegovih containera. Jedan problem je da Note()

umjesto tona H, ispisuje ton B i vraća int vrijednosti od 0 do 11 (jer ima 12 tonova i polutonova,

a brojanje počinje od 0). Tako, primjerice, poluton ces i B budu jednaki 11. U programskom

kodu 4.2., prva funkcija from_int iz dobivenog broja vraća ime note i oktavu, počevši od toga da

je ton C-0 broj 0 i svakim polutonom, broj raste za 1. Gitara ima raspon tonova od E-2 do C-6

gdje zadnji ton ovisi o tome koliko polja gitara ima. Razlog zbog kojeg u prvoj funkciji postoji -

"""Dobiveni broj u notu/oktavu note"""

def int_to_note_name(n):

return str(Note().from_int(n - 12))

"""Note/oktave note u broj"""

def note_name_to_int(name):

return int(Note(name)) + 12

27

12, a u drugoj +12 je razlika u oktavama u Mingusovom paketu i načinu na koji on pretvara note

i polutonove u brojeve. Cijeli program je sastavljen u jednoj klasi u čijoj _init_ metodi stoji

vrijednost kojeg ulaza u računalo se promatra. U funkciji listen, navedeni su podaci koji su

potrebni za računanje Fourierove transformacije, frekvencije, glasnoće, trajanje titranja žice te

određivanja note.

Programski kod 4.3.

Tab. 4.3. Argumenti u funkciji listen

num_notes broj tona nakon kojeg se program zaustavlja, moguće ga je izmijeniti kasnije u kodu

duration varijabla za praćenje trajanja titranja određene note

sampling_rate broj uzoraka, koristi se u dijelu programa s Fourierovom transformacijom,

poželjno je mijenjati broj jer ovisno o njemu, moguće je ukloniti neke šumove koji mogu nastati unosom signala u računalo

samples_per_frame također se koristi kod Fourierove transformacije te spremanja podataka u međuspremnik

frames_per_fft korišteno kod stvaranja Hannovog prozora i početka određivanja frekvencije tona

instrument_range ograničavanje tona i polutona kojeg instrumenta se promatra, za

električnu gitaru je, ako je u najpopularnijem štimu, od E-2 do C-6

min_note_duration vrijednost trajanja titranja žice ispod koje se neće promatrati koja je frekvencija note

min_volume vrijednost glasnoće titranja žice ispod koje se neće promatrati koja je frekvencija note

output_on False u ovom dijelu programa, no u izvršnom dijelu programa prelazi u True čime se cijeli programski kod pokreće

Nakon što je definirana funkcija listen, definira se Hannov prozor, ograničavaju se tonovi koje će

se promatrati spremanjem vrijednosti instrument_range u varijable, određuju se vrijednosti

Fourierove transformacije Hannovog prozora, spremaju se vrijednosti frekvencija žica koje se

promatraju i počinje funkcija stream iz PyAudio paketa prema programskom kodu 4.1.

def listen(self, num_notes=np.inf, duration=np.inf, sampling_rate=48000, samples_per_frame=2048,

frames_per_fft=16, instrument_range=('E-2', 'C-6'), min_note_duration=.05, min_volume=10,

output_on=False):

28

Kako bi se spremile vrijednosti odsviranih tonova za analizu, potrebno je napraviti listu u kojoj

će biti MIDI vrijednosti pretvorene u brojeve prema Mingusu te koliko kojih tonova u toj listi

ima.

Programski kod 4.4.

Varijabla n predstavlja MIDI vrijednost dobivene frekvencije tona, ali s obzirom na formulu iz

[4-1], potrebno je zaokružiti dobiveni broj jer Mingus ne radi ako su rezultati u decimalnom

obliku. Za to je zadužena varijabla n0 i u idućem redu, spremljena je u varijablu gdje se nad

njom vrši funkcija za pretvaranje broja u ime tona. Zatim je potrebno spremiti dobivene brojevne

vrijednosti u listu preko if petlje u kojoj se provjerava je li se trenutni ton promjenio. Na početku

if petlje, postavlja se bool operator za provjeru postoji li taj ton trenutno u listi i tad preko for

n = freq_to_number(freq)

n0 = int(round(n))

current_note = int_to_note_name(n0)

if previous_note != current_note:

found = False

for i in range(len(note_list)):

if note_list[i][0] == n0:

note_list[i][1] += 1

found = True

break

if not found:

note_list.append([n0,1])

sound_start_time = time()

29

petlje slijedi provjera za dodavanje količine trenutnog tona. Ako for petlja ne pronalazi taj ton,

preko funkcije append dodaje se na trenutnu listu.

30

Sviranjem gitare dobije se ton koji se preko kabela debljine 6.3 mm šalje u Presonus Audiobox,

koji je spojen USB kabelom u računalo na kojem je pripremljena Python skripta i u kojoj je

podešeno da se očitavanje tona izvršava na utoru line-in utoru gdje je Presonus Audiobox, zatim

se program izvršava, na ekranu se ispisuju tonovi, lista s tonovima i stvara se histogram.

Sl. 4.6. Dijagram toka unosa frekvencije žice u računalo

Presonus Audiobox je audio sučelje za snimanje koje na prednjoj strani ima dva 6.3 mm

uključka, potenciometre za oba uključka, glasnoću uređaja, glasnoću slušalica (čiji je uključak na

stražnjoj strani uređaja) i regulator glasnoće između ulaznih i izlaznih signala. Gitara se u njega

spaja s 6.3 mm kabelom. Presonus Audiobox nema vanjsko napajanje nego se napaja preko USB

2.0 uključka kojim se spaja u računalo. Spajanjem gitare u jedan od 6.3. mm uključaka, moguće

je podesiti jačinu izlaznog signala, odnosno, koliko jako se želi prenositi signal iz gitare u

računalo te smanjiti kašnjenje signala od gitare do računala. Bez obzira što neke matične ploče

na računalima imaju line-in uključke 3.5 mm ili posebne uključke za mikrofon od 3.5 mm i

mogu primati signale od gitare ako se iskoristi adapter koji pretvara kabel od 6.3 mm u 3.5 mm,

signali će previše varirati i neće dati tolilko točne rezultate kao što će dati korištenje Presonus

Audioboxa.

31

Sl. 4.7. Presonus Audiobox

Za uređivanje i pokretanje koda, korišten je Pycharm. Pokretanjem koda, u konzoli se ispisuju

koji je ton, koliko je trajao, kolika je glasnoća i sveukupni niz koji je dosad napunjen s tonovima

u kojem je prvi član MIDI vrijednost tona, a drugi član koliko se dosad taj ton puta pojavio.

Sl. 4.8. Ispis rezultata u Pycharm konzoli

32

4.4.Prikaz prikupljenih podataka u obliku histograma

Za set podataka korišteno je 100 odsviranih tonova. Prije početka eksperimenta, potrebno je

provjeriti glasnoću unosa signala gitare u računalo u postavkama operacijskog sustava. Ako je

glasnoća unosa prevelika, program će hvatati puno tonova od šumova signala i spremati rezultate

u listu te ih prikazivati na histogramu, a ako je glasnoća premala, program neće ništa prepoznati,

tj. čuti unos signala u računalo. Potrebno je naći određenu granicu na kojoj se gitara dovoljno

čuje, a da program ne uzima previše šumova kao note. Primjeri nad kojim su vršenja mjerenja i

iz kojih su izvedeni histogrami nalaze se u prilogu. Također, u primjerima je gitara svirana

trzalicom što će dovesti do većih odstupanja u rezultatima jer sviranje trzalicom grebe metalne

žice i stvara dodatne šumove koje računalo može procesirati kao note. Jedan problem koji treba

naglasiti prije početka mjerenja je da program, odnosno, računalo ne može prepoznavati isti ton

cijelo vrijeme, samo onda kad se dogodi promjena s jednog na drugi ton. Kad se dogodi

promjena s jednog na drugi, onda se spremaju u niz. Primjerice, u dvadeset trzanja, devetnaest

uzastopnih bude E-2, a odmah iza toga jedan F-3, računalo će prepoznati to kao dva trzanja,

jedno E-2 i jedno F-3.

Prvi primjer bazira se na naizmjeničnom ponavljanju 3 note: E-2, E-3 i F-3. S obzirom na

snimku, pretpostavka je da bi trebalo biti najviše E-2 i E-3 tonova. U konzoli je ispisan slijedeći

niz: [[40, 24], [64, 69], [52, 38], [65, 23], [53, 2]]. Kao što je navedeno u [2-4], prvi član

predstavlja MIDI vrijednost note što znači da u ovoj snimci, računalo po frekvencijama

prepoznaje 5 tonova:

E-4 [64, 69], E-3 [52, 38], E-2 [40, 24], F-4 [65, 23], F-3 [53, 2]

Note su točne, ali nisu identične oktave prema onome što je svirano iako nema previše šumova.

Razlog zašto broj tonova u oktavama nije točan je što vibriranjem žica, ton može vibrirati u

različitoj oktavi ako ga se pusti da odzvanja. Broj tonova koji je trebalo mjeriti bio ograničen na

100, ali program uvijek uzme više, u ovom mjerenju je uzeo čak 56 posto više (156).

33

Sl. 4.9. Histogram prvog primjera

S obzirom na malu količinu podataka koja se analizira histogramom, svejedno se može iz njega

zaključiti da od 5 tonova odsviranih, najviše se nalazi u grupi od 20 i 40, njih 3. Najviše

odudaraju tonovi se nalaze u košarici od 0 do 10 (F-3) te 60 do 70 (E-4).

34

Drugi primjer je skoro identičan prvome primjeru, dodan je još jedna ton, A#-3. Slušanjem

snimke, svaki drugi put kad bi se trebao pojaviti ton F-3, u primjer je ubačen jedan A#-3 ton. U

konzoli bi trebalo biti četiri tona, a ovo je ispis konzole:

E-3 [52, 47], E-4 [64, 70], F-4 [65, 14], A#-3 [58, 10], E-2 [40, 15], H-4 [71, 2], F-3 [53, 4]

Program je prepoznao 162 odsvirane note, odstupanje od 62%. Note su kao i u prvom primjeru,

točne, ali u različitim oktavama. U ovom primjeru se dva puta pojavljuje ton H-4 što se može

protumačiti kao šum nastao od trzalice, način sviranja ili ljudska pogreška kod sviranja. Također,

moguće je da je ton H alikvotni ton [17] od tona E.

Sl. 4.10. Histogram drugog primjera

Dodavanjem samo jednog tona u prvi primjer, vidi se lagana asimetrija u histogramu. Pet od

sedam tonova koje je program pronašao se nalazi u grupi od 0 do 20, dok su dva tona koji

dominiraju (E-3 i E-4) odvojeni od ostatka.

35

Treći primjer spaja prvi i drugi primjer te dodaje još 6 tona, A#-2, F#-2, G-2, H-2, C-3, F-2.

Dodatkom šest tona na primjere, trebalo bi biti 10 tonova u ispisu. Slijedi ispis niza iz konzole:

E-3 [52, 27], E-4 [64, 42], F-4 [65, 12], A#-3 [58, 10], F-3 [53, 6], F#-2 [42, 5], G-2 [43, 5], H-3

[59, 5], C-4 [60, 5], E-2 [40, 8], F-2 [41, 1]

Analizirani tonovi su s obzirom na odsvirano točni, ali kao i u prvom i drugom primjeru, različite

oktave. Ima više analiziranih tonova nego što je odsvirano, no svi su točni, samo u različitim

oktavama. U ovom primjeru, ton H je odsviran za razliku od prošlog primjera. Broj odsviranih

tonova prema programu je 126, odstupanje je 26%, ali je znatno manje nego u prvom i drugom

primjeru.

Sl. 4.11. Histogram trećeg primjera

Nakon šest dodanih tonova, histogram se sve više iskrivljuje prema lijevo. Košarica između 0 i

10 najviše odudara u cijelom histogramu jer se u njoj nalazi čak 7 tonova (F-3, F#-2, G-2, H-3,

C-4, E-2 i F-2), dok je košarica između 40 i 50 odvojena sadrži ton E-2.

36

Četvrti primjer je kompletno drugačiji od dosad analiziranih, gledajući melodiju i žice na kojima

se svira. Prva tri primjera svirana su pretežito na prve tri žice (E, A, D), dok je četvrti primjer

sviran isključivo na zadnje dvije (E i H). Sadrži se od idućih tonova: A-4, G#-4. C-5, H-4, E-4,

F#-4, D-5, G-4, E-5.

Ispis u konzoli:

H-4 [71, 25], A-4 [69, 19], G#-5 [80, 10], E-5 [76, 8], F#-4 [66, 3], C-5 [72, 22], D-5 [74, 11],

G-5 [79, 3], G-4 [67, 9], A-5 [81, 9], E-4[64, 1], F#-5 [78, 1]

Program je prepoznao 121 ton, odstupanje od 21%. Svi tonovi koje je program prepoznao su

točni uz njihove oktave, jedino nije prepoznao G#-4, ali je 10 puta prepoznao njegovu oktavu

G#-5. U analizi ovog primjera nema nijednog tona koji odudara od odsviranog što se može

pripisati točnosti odsviranome ili činjenici da je veće titranje tanjih žica te da su manja

preklapanja frekvencija i manja mogućnost stvaranja odudarajućih alikvotnih tonova.

Sl. 4.12. Histogram četvrtog primjera

37

S obzirom na veću količinu tonova i manje ponavljanje jednog tona kao što je dosad bio slučaj u

prijašnjim primjerima, histogram se sve više povlači prema lijevoj strani te nema nijedna

košarica koja previše odudara s desne strane. Vidljivo je kako je u košarici od 0 do 10 najveća

koncentracija tonova, njih 7.

Tab. 4.4. Točnost analiziranih tonova u prva četiri primjera

Odstupanje u broju analiziranih tonova Broj netočno analiziranih tonova

Primjer 1 56 0

Primjer 2 62 1

Primjer 3 26 0

Primjer 4 21 0

Ukupno 41.25 1

U tablici 4.4. kod zbrajanja netočno analiziranih tonova, sve oktave istog tona su zanemarene,

odnosno, nisu uzimane u obzir kao različit ton od odsviranog, u tablici su ubačeni tonovi koji ne

pripadaju u odsviranom primjeru. Odstupanje u broju analiziranih tonova je veliko, što se može

pripisati brzini sviranja, sporosti analize programa, titranju žica i alikvotnim tonovima (računalo

iz jednog odsviranog tona možda prepozna određeni ton, ali i njegovu oktavu i napuni

međuspremnik). U prvom i drugom primjeru, koji nisu komplicirani što se izvedbe tiče,

odstupanje je veće nego u trećem i četvrtom. Razlog je što imaju manje tonova u sebi, sporiji su i

izvode se, za razliku od četvrtog primjera, na dvije najdeblje žice na gitari koje šalju veće valove

prema magnetima gitare. Program iz trzaja najdeblje žice uzima informaciju kao da je to E-2 ili

njegove oktave E-3 i E-4 zbog manje frekvencije koju žica šalje i alikvotnih tonova. Četvrti

primjer ima najmanje odstupanje jer je u cijelosti odsviran na dvije najtanje žice gitare, koje

titraju najvećom brzinom od svih otvorenih žica. Jedini netočno analizirani ton u sva četiri

primjera dogodio se u drugom primjeru.

38

Peti primjer sastoji se od 4 akorda koji su uzastopno svirani dok je između mijenjanja svirano par

tonova iz tih akorda. Teško je napraviti analizu koji se svi točno tonovi ponavljaju jer je

namjerno nepravilno svirano za potrebe demonstracije histograma. Analizu dodatno otežava

činjenica da je akord u glazbenoj teoriji istodobno zvučanje triju ili više tonova različite visine4,

a između akorda je svirano par tonova iz tih akorda. Naglasak je na koje akorde se svira: a-mol,

C-dur, G-dur i e-mol.

Niz u konzoli je:

E-4 [64, 14], A-4 [69, 9], A-3 [57, 14], C-5 [72, 5], G-5 [79, 5], C-4 [60, 8], G-4 [67, 6], H-5 [83,

6], D-5 [74, 13], F#-5 [78, 7], G-3 [55, 7], G-2 [43, 6], E-3 [52, 7], H-3 [59, 8], E-5 [76, 4], D-4

[62, 1], H-4 [71, 3], E-2 [40, 2], A-2 [45, 1], C-3 [48, 1], A#-3 [58, 1]

Program je prepoznao 128 nota, odstupanje od 28%.

Od svih analiziranih primjera dosad, ovo je najveći broj različitih tonova koji se dosad pojavio.

Budući da je akord sam po sebi zvučanje triju ili više tonova različite visine (te svaki od ta tona

može imati šum ili alikvotni ton za vrijeme rezoniranja), program teško određuje točno koji je

ton ako se u isto vrijeme svira više različitih tonova. Pobroje li se svi tonovi, bez obzira na

oktave, analizom tonova i poznavanjem intervala u glazbenoj teoriji moguće je odrediti o kojim

akordima se radi.

Tab. 4.5. Ukupan broj tonova u petom primjeru po oktavama

Tonovi

E A C G H D F# A#

Ok

tave

2 2 1 - 6 - - - -

3 7 14 1 7 8 - - 1

4 14 9 8 6 3 1 - -

5 4 - 5 5 6 13 7 -

Ukupno 27 24 14 24 17 14 7 1

4 https://www.enciklopedija.hr/natuknica.aspx?id=1136

39

Sl. 4.13. Histogram petog primjera

Usporede li se tablica 4.5. i slika 4.13., vidjet će se kako 3 tona prevladavaju – E, G i A. Kao što

je prethodno navedeno, u primjeru su svirani a-mol, C-dur, G-dur i e-mol. Kad ne bi bilo

navedeno koji se akordi sviraju u primjeru, a pogledalo bi se note, osoba koja se razumije u

intervale i slaganje skala u glazbenoj teoriji bi mogla zaključiti kako se radi o tim akordima i o

C-durskoj skali, pogotovo zbog učestalijeg pojavljivanja C i H tona (dovoljno puta su se pojavili

u nizu da se mogu protumačiti kao odsvirane note, a ne kao šumovi ili alikvotni tonovi).

40

Šesti primjer je najkompliciraniji za analizirati pomoću programa jer se sastoji od samog sviranja

akorda i to na način da nisu odsvirani potpuno jasno. Sastoji se od A-dura, a-mola, G-dura i F-

dura uz razne udarce na žice dok se ne drži pritisnuto nijedno polje što dodatno otežava analizu.

Program izbacuje niz:

A-3 [57, 25], A-2 [45, 23], A-4 [69, 9], E-5 [76, 2], E-4 [64, 12], D-3 [50, 5], D-4 [62, 6], G-3

[55, 10], G-2 [43, 4], E-2 [40, 2], H-4 [71, 4], C-4 [60, 5], C-3 [48, 3], F-3 [53, 8], C#-4 [61, 1],

E-3 [52, 7], H-3 [59, 5], F-2 [41, 5], F-4 [65, 1], C-5 [72, 1], F#-2 [42, 1], C#-3 [49, 3], D#-3 [51,

1], G#-4 [67, 1], G#-2 [44, 1], A#-3 [58, 1]

Tab. 4.6. Ukupan broj tonova u šestom primjeru po oktavama

Tonovi

C C# D D# E F F# G G# A A# H

Okta

ve

2 - - - - 2 5 1 4 1 23 - -

3 3 3 5 1 7 8 - 10 - 25 1 5

4 5 1 6 - 12 1 - - 1 9 - 4

5 1 - - - 2 - - - - - - -

Ukupno 9 4 11 1 23 14 1 14 2 57 1 9

Sl. 4.14. Histogram šestog primjera

41

Sveukupan broj tonova koje je program analizirao je 146, odstupanje od 46%. U ovom primjeru

su se pojavili svi tonovi kromatske ljestvice, ali neki samo po jednom (D#, F#, A#). Zbrajanjem

svih oktava tona A, vidi se kako je upravo on najučestaliji ton, što se može i zaključiti s obzirom

na činjenicu kako od četiri akorda u primjeru, jedan je A-dur, a drugi a-mol. Prema slici 4.14.,

dobiveni histogram je potpuno iskrivljen prema lijevo i glavnina podataka se nalazi u košarici

između 0 i 10. Od svih analiziranih primjera, šesti primjer ima najveću koncentraciju podataka u

prvoj košarici jer se sadrži kompletno od akorda, bez ijednog tona koji je odsviran samostalno.

42

5. ZAKLJUČAK

Kroz ovaj rad opisivani su histogrami, osnove glazbene teorije, karakteristike električne gitare,

tonovima na njoj, osnovni podaci o frekvencijama i valovima te primjena histograma na

frekvencijama žica električne gitare. Analiza frekvencije žica je u širokoj upotrebi u različitim

primjenama, konkretno na električnim gitarama se koriste kao štimeri kako bi se namjestila

frekvencija žice na određenu vrijednost. Histogrami analiziranih frekvencija daju drugačiji

pogled na analizu frekvencija žica. U radu je kroz šest primjera uspoređeno kako se program

ponaša i vrste histograma koje pokazuje na osnovu odsviranih primjera. Ako je korisnik dobro

upoznat s glazbenom teorijom, može iskoristiti kao program za vježbanje i nadogradnju vlastitog

znanja u glazbi.

Primjeri su testirani odvojeno te su njihovi rezultati uspoređivani kroz točnost broja analiziranih

tonova i odstupanja od količine analiziranih podataka. U histogramima prva dva primjera,

vidljivo je veliko odstupanje u broju analiziranih tonova, što se pripisuje različitoj debljini žica

gitare i rastućoj frekvenciji titranja ako je žica tanja. U ostalim primjerima, gdje raste broj

odsviranih tonova i broj žica na kojima se svira, vidi se smanjivanje odstupanja od broja

analiziranih tonova.

Iduće iteracije rada bi se mogle bazirati samo kao štimer i prenijeti na mobilne uređaje ili

aplikacija s mogućnošću snimanja gdje bi se nakon sviranja izbacivala analiza odsviranog u

kojem bi korisnik mogao vježbati dijelove glazbene teorije koji ga zanimaju (skale, intervali,

harmonija, melodija...).

Računalu je teško savršeno analizirati sviranje gitare jer, osim što je samo analiziranje titranja

žica teško, uvijek je prisutan i ljudski faktor, odnosno, koliko dobro čovjek svira zadano djelo.

Također, neke tehnike mijenjanja tonova i polutonova u sviranju gitare je računalu vrlo teško

prepoznati. Kad bi se radilo o MIDI klavijaturama koje daju točno određen MIDI ton, tad ne bi

bilo alikvotnih tonova, preklapanja signala i frekvencija, program bi bio puno precizniji, bez

obzira na ljudske pogreške.

43

LITERATURA

[1] X. Liu, D. Wang, A spectral histogram model for texton modeling and texture

discrimination, Department of Computer Science, Florida State University, studeni 2002.,

https://www.sciencedirect.com/science/article/pii/S0042698902002973, rujan 2020.

[2] T. DiCola, FFT: Fun with Fourier Transforms, Adafruit Industries, listopad 2013.,

https://learn.adafruit.com/fft-fun-with-fourier-transforms/tone-input, rujan 2020.

[3] N. Hilbish, Multiple Fundamental Frequency Pitch Detection for Real Time MIDI

Applications, VCU, 2012.,

https://scholarscompass.vcu.edu/cgi/viewcontent.cgi?article=3852&context=etd, rujan

2020.

[4] G. Hori, S. Sagayama, HMM-Based Automatic Arrangement For Guitars With

Transposition and its Implementation, Atena, Grčka, 2014.,

https://quod.lib.umich.edu/cgi/p/pod/dod-idx/hmm-based-automatic-arrangement-for-

guitars-with.pdf?c=icmc;idno=bbp2372.2014.193;format=pdf, rujan 2020.

[5] Y. Ioannidis, The History of Histograms (abridged), Proceeding VLDB '03 - Proceedings of

the 29th international conference on Very large data bases - Volume 29, stranice 19-30,

Berlin, Njemačka — 12.9.2003.

[6] J. Frost, Using Histograms to Understand Your Data, Statistics By Jim,

https://statisticsbyjim.com/basics/histograms, rujan 2020.

[7] NCSS Statistical Software, NCSS.com, Chapter 143, Histograms, http://ncss-

wpengine.netdna-ssl.com/wp-content/themes/ncss/pdf/Procedures/NCSS/Histograms.pdf,

rujan 2020.

[8] Google Charts, Histogram,

https://developers.google.com/chart/interactive/docs/gallery/histogram, rujan 2018.

[9] Tournament Director, Berger Pairings,

http://www.tournamentdirector.co.uk/berger_pairings.html, kolovoz 2018.

[10] J. Medhi, Statistical Methods: An Introductory Text, New Age International, 1992.

[11] P. M. Charantimath, Total Quality Management, Pearson Education Media, 2001.

[12] S. Šamanić, Metodički priručnik za glazbeni praktikum,

https://bib.irb.hr/datoteka/611198.Lektorirani_Prirunik1.pdf, kolovoz 2020.

[13] J. Wolfe, Note names, MIDI numbers and frequencies,

https://newt.phys.unsw.edu.au/jw/notes.html, kolovoz 2020.

44

[14] National Instruments, Understanding FFTs and Windowing,

https://download.ni.com/evaluation/pxi/Understanding%20FFTs%20and%20Windowing.p

df, kolovoz 2020.

[15] V. Grozdanić, Fourierovi redovi, Polinomi i Integrali, https://vdocuments.mx/vedrana-

grozdanic-fourierovi-redovi-polinomi-i-integrali.html, rujan 2020.

[16] D. Matijević, Fourierov red i Fourierova transformacija, stranice 1-2, 12-13, Zagreb,

Hrvatska – 2011.

[17] Hrvatska enciklopedija, svezak I, Zagreb, 1941. – stranice 244-245

45

SAŽETAK

Naslov: Histogram

Ovaj rad prikazuje histograme kao vrstu predodžbe frekvencije žice gitare te točnost računalne

analize unosa frekvencija žica gitare u računalo kroz šest primjera. Pokazane su vrste histograma

te kakve će histograme izbaciti ti primjeri. Također, uspoređena je točnost unosa frekvencija žica

te određeni su najveće prednosti i najveći nedostatci kod analize. Primjeri su poredani po

kompliciranosti za analizu računalu, objašnjeni su dobiveni histogrami te su određene prednosti i

nedostatci programa. Kroz primjere, koji rastu po kompliciranosti, povećava se točnost u analizi

broja tonova, ali smanjuje točnost određivanja tonova te mogućnost prilagodbe programa.

Prikazano je kako je program više namjenjen za analizu uzastopno sviranih niza tonova različite

visine i trajanja, a ne akorda te bi bio idealan kao štimer za gitare ili kao alat za vježbanje

glazbene teorije.

Ključne riječi: histogram, glazbena teorija, gitara, frekvencija

46

ABSTRACT

Title: Histogram

This paper shows histograms as a way of presenting value of guitar string frequency and the

accuracy of analysing those frequencies through six examples. Also, the types of histograms are

shown, what histograms those examples are outputting, accuracy of inputting guitar string

frequency in computer is compared and biggest advantages and disadvantages are defined.

Examples are sorted by how complex they are for the computer to analyse and histograms that

have been outputted have been described. Through those examples, which get more complex as

they are analysed, accuracy in analysing the number of tones is growing, but defining which tone

it is grows more difficult for the computer. It is shown how the program is more suited for

melody and less for harmony and it would be best used as a guitar tuner or as a tool to practice

music theory.

Keywords: histogram, music theory, guitar, frequency

47

ŽIVOTOPIS

Dinko Tarakčija rođen je u Osijeku 19.7.1993. godine. Završava Osnovnu školu Vladimir Nazor

u Čepinu 2008. godine s odličnim uspjehom i upisuje II. gimnaziju u Osijeku koju završava

2012. s odličnim uspjehom. Iste godine upisuje preddiplomski studij računarstva na

Elektrotehničkom fakultetu u Osijeku te je 2015. godine upisao diplomski studij na istom

fakultetu, izborni blok informacijske i podatkovne znanosti.

Potpis: ________________________________

48

PRILOZI

Prilozi se nalaze na CD-u.

1. Diplomski rad u .pdf formatu

2. Diplomski rad u .docx formatu

3. Izvorni kod s kojim su izvođena mjerenja preuzet s https://github.com/mzucker,

modificiran za rad s histogramima

4. Šest snimki iz kojih su napravljena mjerenja u .wav formatu