odredivanje notnog zapisa glazbenih signala

14
ODREĐIVANJE NOTNOG ZAPISA GLAZBENIH SIGNALA RAUL BLEČIĆ, BORIS CRNKOVIĆ, ANDREJ IVANKOVIĆ, SEBASTIAN PETROVIĆ 28. svibnja 2007. SAŽETAK Za zapis glazbenih signala koristi se notni zapis. Pri tome svaka nota predstavlja zvučni signal određene frekvencije i trajanja. Tema ovog projekta je frekvencijskom obradom glazbenog signala dobiti njegov notni zapis. Glazbeni signali su funkcija vremena, te da bi se dobio njihov notni zapis potrebno ih je transformirati iz vremenske u vremensko- frekvencijsku domenu. Dakle, treba dobiti amplitudu signala kao funkciju dvije varijable – vremena i frekvencije. Da bi to postigli u ovom projektu koristili smo se CWT-om (Continuous Wavelet Transform). Pomoću CWT-a izolirali smo ključne frekvencije te vrijeme u kojem su se pojavile, uz zadovoljavajuću točnost. Na kraju smo iz tih podataka dobili notni zapis glazbenog signala. 1. UVOD Glazbu možemo shvatiti kao skup signala ovisno o broju instrumenata koji u njenom stvaranju sudjeluju. Svaki od tih signala na jedinstven način predstavlja pojedini instrument zbog drugačije boje zvuka koju svaki instrument posjeduje. To znači da ako uzmemo osnovni oblik zvučnog signala kao jedan skup sinusoida drugačija boja zvuka se očituje u višim harmonicima koje instrument proizvodi koji se na taj osnovni harmonik superponiraju. Važnu ulogu u analizi zvučnog signala imaju upravo osnovni harmonici o kojima će kasnije biti riječ. Nakon dobivenog signala krajnji cilj predstavlja zapis istog u notnom crtovlju. Notno crtovlje je zapravo koordinatni sustav u kojem ordinata predstavlja frekvenciju, a apscisa vrijeme. Sastoji se od 5 osnovnih crta te po potrebi pomoćnih crta sa gornje i donje strane na koje ili između kojih crtamo note. Visina smještene note ovisi o frekvenciji dok se trajanje označava grafički raznim dogovorenim oblicima. Glazbeni signal predstavljen u vremenskoj domeni matematički je izražen kao funkcija amplitude u vremenu, dok je notni zapis predstavljen kao funkcija frekvencije u vremenu. Da bi uopće bilo moguće dobiti notni zapis iz nekog realnog glazbenog signala nužna je transformacija signala iz vremenske u vremensko-frekvencijsku domenu. Fourierova transformacija, dana izrazom +∞ = dt e t f F t jω ω ) ( ) ( prebacuje signal iz vremenske u frekvencijsku domenu izražavajući tako ovisnost amplitude signala o frekvenciji. Rezultat te transformacije je frekvencijski sadržaj argumenta, a fizikalna interpretacija mjera sličnosti argumenta sa sinusom i kosinusom. Međutim, budući da se sličnost mjeri po cijeloj vremenskoj osi nuspojava je gubitak vremenske dimenzije. Već smo naveli da nam za prikaz notnog zapisa treba i vremenska i frekvencijska domena pa ovom transformacijom ne možemo dobiti željene rezultate. Moguće rješenje je ograničeno trajanje mjerenja moduliranjem signala vremenskim otvorom. Pomicanje vremenskog otvora po vremenskoj osi daje vremensku ovisnost promjene frekvencije, a rezultat toga je STFT (short-time Fourier transform). Osnovni nedostatak STFT-a je konstantna razlučivost u cijeloj vremensko- frekvencijskoj ravnini, određena parametrima vremenskog otvora. Budući da jedna vremenska točka signala često

Upload: brankosss

Post on 27-Nov-2014

202 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Odredivanje Notnog Zapisa Glazbenih Signala

ODREĐIVANJE NOTNOG ZAPISA GLAZBENIH SIGNALA

RAUL BLEČIĆ, BORIS CRNKOVIĆ, ANDREJ IVANKOVIĆ, SEBASTIAN PETROVIĆ

28. svibnja 2007.

SAŽETAK Za zapis glazbenih signala koristi se notni zapis. Pri tome svaka nota predstavlja zvučni signal određene frekvencije i trajanja. Tema ovog projekta je frekvencijskom obradom glazbenog signala dobiti njegov notni zapis. Glazbeni signali su funkcija vremena, te da bi se dobio njihov notni zapis potrebno ih je transformirati iz vremenske u vremensko-frekvencijsku domenu. Dakle, treba dobiti amplitudu signala kao funkciju dvije varijable – vremena i frekvencije. Da bi to postigli u ovom projektu koristili smo se CWT-om (Continuous Wavelet Transform). Pomoću CWT-a izolirali smo ključne frekvencije te vrijeme u kojem su se pojavile, uz zadovoljavajuću točnost. Na kraju smo iz tih podataka dobili notni zapis glazbenog signala.

1. UVOD Glazbu možemo shvatiti kao skup signala ovisno o broju instrumenata koji u njenom stvaranju sudjeluju. Svaki od tih signala na jedinstven način predstavlja pojedini instrument zbog drugačije boje zvuka koju svaki instrument posjeduje. To znači da ako uzmemo osnovni oblik zvučnog signala kao jedan skup sinusoida drugačija boja zvuka se očituje u višim harmonicima koje instrument proizvodi koji se na taj osnovni harmonik superponiraju. Važnu ulogu u analizi zvučnog signala imaju upravo osnovni harmonici o kojima će kasnije biti riječ. Nakon dobivenog signala krajnji cilj predstavlja zapis istog u notnom crtovlju. Notno crtovlje je zapravo koordinatni sustav u kojem ordinata predstavlja frekvenciju, a apscisa vrijeme. Sastoji se od 5 osnovnih crta te po potrebi pomoćnih crta sa gornje i donje strane na

koje ili između kojih crtamo note. Visina smještene note ovisi o frekvenciji dok se trajanje označava grafički raznim dogovorenim oblicima. Glazbeni signal predstavljen u vremenskoj domeni matematički je izražen kao funkcija amplitude u vremenu, dok je notni zapis predstavljen kao funkcija frekvencije u vremenu. Da bi uopće bilo moguće dobiti notni zapis iz nekog realnog glazbenog signala nužna je transformacija signala iz vremenske u vremensko-frekvencijsku domenu. Fourierova transformacija, dana izrazom

∫+∞

∞−

−= dtetfF tjωω )()(

prebacuje signal iz vremenske u frekvencijsku domenu izražavajući tako ovisnost amplitude signala o frekvenciji. Rezultat te transformacije je frekvencijski sadržaj argumenta, a fizikalna interpretacija mjera sličnosti argumenta sa sinusom i kosinusom. Međutim, budući da se sličnost mjeri po cijeloj vremenskoj osi nuspojava je gubitak vremenske dimenzije. Već smo naveli da nam za prikaz notnog zapisa treba i vremenska i frekvencijska domena pa ovom transformacijom ne možemo dobiti željene rezultate. Moguće rješenje je ograničeno trajanje mjerenja moduliranjem signala vremenskim otvorom. Pomicanje vremenskog otvora po vremenskoj osi daje vremensku ovisnost promjene frekvencije, a rezultat toga je STFT (short-time Fourier transform). Osnovni nedostatak STFT-a je konstantna razlučivost u cijeloj vremensko-frekvencijskoj ravnini, određena parametrima vremenskog otvora. Budući da jedna vremenska točka signala često

Page 2: Odredivanje Notnog Zapisa Glazbenih Signala

ima složen frekvencijski sadržaj, nejednolikom razlučivošću ukupno određenje moglo bi biti preciznije nego u jednoj točki vremensko-frekvencijske ravnine. Potrebnu nejednoliku razlučivost daje nam CWT (Continuous Wavelet Transform). Za razliku od Fourierove transformacije kod koje signal uspoređujemo sa sinusnim signalom beskonačnog trajanja i po svim frekvencijama, CWT-om signal uspoređujemo sa valićem kojem mijenjamo širinu i poziciju. To nam omogućuje mijenjanje razlučivosti po vremenu ili frekvenciji. CWT transformacija je određena izrazom

dts

ts

tfs )(1)(),( τψτγ −= ∫

+∞

∞−

pri čemu τ označava pomak po vremenskoj osi, s skalu, veličinu obrnuto proporcionalnu frekvenciji, a ψ valni oblik valića s kojim uspoređujemo signal. Analizirajuću funkciju pomičemo za τ, stišćemo ili rastežemo za s. Mijenjajući s i τ mijenjamo razlučivost po vremenu i frekvenciji. Istodobno nije moguće imati visoku razlučivost po vremenu i frekvenciji tako da te parametre mijenjamo zavisno o problemu kojeg rješavamo. Rezultat CWT-a je broj koji nam pokazuje koliko je koreliran signal s odabranim valnim oblikom valića. Neki valići koje možemo odabrati za obradu signala su:

- kompleksni Morlet-ov wavelet:

tjwt

eCet 02

2

2)( −= σψ - realni Morlet-ov wavelet:

)5cos()( 2

2

tett

−=ψ

- sombrero (eng. Mexican hat):

22

2

)1()(t

etCt−

−=ψ

- kompleksni Shannon-ov wavelet:

tj

b

b et

tCt 0)sin()( ω

ωωψ −=

Zbog mogućnosti mijenjanja razlučivosti primjenu CWT-a nalazimo na mnogim područjima, od fizike (kvantna mehanika, geofizika) preko kemije do biologije (EEG, EKG, analize sastava DNA). Ako promatramo što se trenutno događa na ovom području u svijetu moramo spomenuti Huang-Hilbertovu metodu. Po definiciji radi se o statističkom aparatu koji pomaže razlučivanju mješavine pokretnih signala. To postiže na način da se iz signala odrede svi izvori te onda posebno analizira svaki od njih. Pronalaženje izvora se vrši matematičkom fomulacijom SVD (Singular Value Decomposition) koja zapravo predstavlja analizu matrice dobivenu digitalizacijom signala. Rezultat procesa je također signal u vremensko-frekvencijskoj domeni, no riječ je o mnogo kompliciranijem postupku budući da se za svaki izvor signala vrši transformacija što zahtijeva poveću količinu računalnih resursa. U principu se programi napisani koristeći tu metodu vrte paralelno na više računalnih sustava. Također treba napomenuti da se analiza glazbenih signala pretvorila u interdisciplinarnu znanost pod kraticom MIR (Music Information Retrieval) unutar koje se intenzivno obrađuje glazba u posebnim kategorijama i oblicima, od obrade spomenutim metodama pojedinih instrumenata do polifone glazbe, stvaranja knjižnica glazbenih signala, analize specijalnih oblika, izrada programske podrške te istraživanja novih metoda.

2. METODE

Određivanje notnog zapisa glazbenih signala realizirano je funkcijom ONZGS.m u MATLAB-u (kôd funkcije dan je u Dodatku 1). Kao ulazni argument funkcija prima parametar threshold, koji određuje razinu signala koja se smatra šumom. Budući je signal skaliran na jediničnu

Page 3: Odredivanje Notnog Zapisa Glazbenih Signala

amplitudu, threshold je element skupa <0,1], a po definiciji iznosi 0,1. Parametar nije nužno unositi, međutim, ukoliko korisnik ima lošiju, zašumljenu snimku, omogućava mu da povećanjem razine thresholda i iz nje izvuče nekakve podatke. Algoritam pronalaženja notnog zapisa iz glazbenih signala temelji se na već spomenutom CWT-u. Rezultat CWT-a je matrica n x m, pri čemu je n broj redaka, odnosno broj izdvojenih frekvencija, m broj stupaca, veličina proporcionalna trajanju signala, a elementi matrice predstavljaju amplitudu signala n-te frekvencije u m-tom trenutku. Algoritam je optimiziran za gitaru, čiji je frekvencijski raspon od oko 50 Hz do oko 1500 Hz (ovisno o štimanju), pa je dovoljno da je signal otipkan frekvencijom nešto većom od 3 kHz. Standardne frekvencije otipkavanja su 44,1 kHz i 48 kHz, pa signal podotipkavamo na frekvenciju 4800 Hz ili 4410 Hz, ovisno o frekvenciji otipkavanja (za nestandardne frekvencije otipkavanja se ne vrši podotipkavanje). Podotipkavanje bitno ubrzava algoritam, budući da brzina CWT-a uvelike ovisi o broju podataka koje je potrebno analizirati, koji pak ovise o frekvenciji otipkavanja. Prije podotipkavanja je potrebno filtrirati signal da bi se izbjegla pojava aliasinga, međutim, nismo uspjeli realizirati adekvatan filtar, pa je pretpostavka daljnje analize da aliasinga nema (što je i ispunjeno ukoliko je riječ samo o gitarskom signalu). Dakle, kao što je već bilo spomenuto, frekvencijski raspon gitare je 50 – 1500 Hz. Frekvencije su diskretizirane, omjer susjednih frekvencija je 12√2. Gitara ukupno reproducira 4 oktave (ovisno o izvedbi gitare najviša oktava sadrži 6. ili 7. ton oktave, a ponekad i cijelu oktavu). Kao osnovni ton je uzet ton A 440 Hz, budući da se izrada gitare temelji na toj frekvenciji. Da bi se analizom obuhvatilo cijelo frekvencijsko područje potrebno je ukupno 5 oktava, odnosno ukupno 60 različitih frekvencija. Dakle, rezultat CWT-a je matrica sa 60 redaka. Broj

stupaca je, kao što je već prije bilo navedeno, proporcionalan trajanju signala, a elementi matrice su amplitude signala n-te frekvencije u m-tom trenutku. Bitan ograničavajući faktor u primjeni CWT-a je princip neodređenosti u vremensko-frekvencijskoj ravnini, tj. obrnuta recipročnost rezolucija po vremenu i frekvenciji.

Slika 1. – primjeri različitih odabira

parametara waveleta

Na slici 1. su prikazani primjeri različitih razlučivosti po frekvenciji i vremenu. Najbitniji dio, osnova cijelog projekta, je odabrati pogodan odnos razlučivosti. To se postiže odabirom waveleta i parametara istoga. Na sugestiju profesora Seršića odabrali smo kompleksni Morlet-ov wavelet, a parametre smo odredili eksperimentalno. Primjer primjene CWT-a s takvim postavkama je dan na slici 2.

Slika 2. – primjer primjene CWT-a s

waveletom cmor8-1, korištenim u ONZGS-u

Iz slike je vidljivo da je ovakvim parametrima postignuta dobra vremenska razlučivost i ne toliko dobra frekvencijska razlučivost. Međutim, iz teorije glazbe i teorije glazbala jasno je da je dobivena razlučivost dovoljno dobra. Naime, za frekvenciju je uzeta samo centralna frekvencija, dok su ostale frekvencije ili

Page 4: Odredivanje Notnog Zapisa Glazbenih Signala

posljedica loše razlučivosti, dakle možemo ih zanemariti, ili viši harmonici, možemo ih zanemariti po teoriji glazbala, budući da svaki instrument proizvodi osnovni ton i više harmonike, ili dodatni tonovi svirani istovremeno, koji s osnovnim tonom čine akord, i koje je moguće zanemariti po teoriji glazbe. Naime, velikoj većini akorda, osim invertiranih, osnovni ton je i najdublji, a CWT prigušuje više frekvencije, što je vidljivo na slici 3.

Slika 3. – primjena CWT-a na sintetički

signal x = cos(2*pi*110*t1) + cos(2*pi*220*t2) + cos(2*pi*391*t1) + cos(2*pi*622*t2) + cos(2*pi*880*t1) +

cos(2*pi*1319*t). Vidljiv je, unatoč jednakoj amplitudi pojedinih frekvencija,

pad amplituda CWT-a s frekvencijom Prema tome, ono što ostaje je osnovni ton akorda, pa melodija ostaje sačuvana. Doduše, harmonija (vertikalna komponenta glazbe) je izgubljena, ali to je bilo nužno ukoliko se željela postići dobra vremenska razlučivost. Gore navedeno ostvareno je funkcijom Filtriranje.m (kôd je dan u Dodatku 2). Algoritam funkcije sastoji se od vremenskog usrednjavanja osnovne vremenske kvantizacijske jedinice koja je uzeta kao mjera prisutnosti određene frekvencije u signalu u jednoj jedinici. Ovdje je potrebno uočiti razliku između osnovne vremenske kvantizacijske jedinice i frekvencije otipkavanja. Frekvencija otipkavanje signala mora biti barem dvostruko veća od maksimalne frekvencije otipkavanog signala, dok je osnovna

vremenska kvantizacijska jedinica veličina koja određuje najmanje trajanje pojedinog tona, tj. određuje frekvenciju sviranja. Frekvencija sviranja je reda veličine 10 Hz, u našoj analizi je ona 8 Hz, što je i više od 50 puta manje od najniže frekvencije koju gitara proizvodi, pa je dovoljno promatrati rezultate CWT-a svakih 0,125 sekundi. Drugi dio algoritma je traženje maksimalne vrijednosti po vremenskim jedinicama. Na mjestu maksimalne vrijednosti upisuje se 1, što označava prisutnost signala, a na ostala se mjesta u stupcu, dakle u vremenskoj jedinici, upisuje 0. Dakle, samo je jedna frekvencija prisutna u jednoj vremenskoj jedinici što je i bila namjera. Rezultat ovog dijela algoritma je, dakle, matrica 60 x k, pri čemu je k broj osnovnih vremenskih kvantizacijskih jedinica, konkretno, trajanje signala podijeljeno s 8, a elementi matrice su 0, osim na eventualno jednom mjestu, i to na mjestu najdublje najzastupljenije frekvencije u toj osnovnoj vremenskoj kvantizacijskoj jedinici. Sve do sada je bila priprema za crtanje nota u crtovlje. Bilo je potrebno izdvojiti frekvencije, odrediti trajanje pojedinog tona i odrediti što je signal a što šum. Sada tako pripremljenu matricu šaljemo u funkciju note2.m (kôd koje je dan u Dodatku 3). Svaki stupac predstavlja jednu notu dok broj nota koje ćemo crtat, određeno brojem stupaca, nije ograničen. 60 redaka jednog stupca predstavlja 60 polutonova u rasponu frekvencije od 49 Hz do 1567 Hz, budući da smo se, kako je prethodno spomenuto, ograničili na analizu glazbenog signala gitare. U samom uvodu spomenuli smo da je notno crtovlje zapravo dobro definiran koordinatni sustav. Tim načelom se vodi i funkcija. Treba napomenuti da je cjelokupno crtanje nota izvedeno u MATLAB-u kao figure te su zapravo svi nacrtani oblici funkcije ispisane u pravom trenutku i trajanju na odgovarajućoj visini u slijedu pomoću hold on naredbe. Prvotno se nacrta pet osnovnih crta notnog crtovlja, u ovoj varijanti između vrijednosti 10 (najdonja crta) i 12

Page 5: Odredivanje Notnog Zapisa Glazbenih Signala

(najgornja crta). To znači da će se tonovi u crtovlje upisivati u razmacima od 0,25. Kao glavni dio funkcije možemo izdvojiti dvije for petlje, jedna koja se pozicionira na pojedini stupac i druga koja u tom stupcu pretražuje postojanje i položaj jedinice. Vanjska for petlja zapravo služi samo kao pozicioniranje po x-osi odnosno pozicioniranje na mjesto gdje će biti prikazan nota. Tu upravljanje preuzima unutarnja for petlja. Dakle, zamislimo da se nalazimo unutar jednog stupca. Spomenuta petlja pretražuje retke dok ne nađe jedinicu. Kada je utvrđena jedinica u određenom retku broj retka označava frekvenciju note kako je ranije utvrđeno (od retka 1 do retka 60 frekvencije padaju). Poznato je da se najviša nota u crtovlju nalazi na vrijednosti 15,5 (odnosno jedinica u prvom retku znači da se nota treba crtati na vrijednosti 15,5). Broj retka označava koliko je potrebno spustiti vrijednost od 15,5 po koracima od 0,25 do mjesta na kojem će se crtati nota. No s obzirom da ti retci predstavljaju polutonove vrlo je važno odrediti kada se treba dogoditi pomak od 0,25, a kada ne. U svrhu toga izrađen je niz indeksa redaka koji označuju cijele (nepovišene odnosno nesnižene) tonove. Dakle, izrađena je posebna petlja koja određuje položaj note po y-osi vršeći pomake prema dolje za 0,25 samo kada se nalazi na retku čiji je indeks u nizu indeksa cijelih nota, pa tako sve dok ne dođe do retka s jedinicom kada se ispisuje se, po dogovoru, jedna 32-inka (nota pune glave sa tri zastavice na vratu). Ukoliko iz nekog razloga jedinica nije pronađena u stupcu, u crtovlju ostaje prazno mjesta, vrši se pomak po x-osi te se pretražuje slijedeći stupac, sve dok se ne dođe do kraja matrice.

3. REZULTATI

Nakon objašnjenja vrste i karakteristika signala te način rada funkcija koje se koriste preostaju rezultati. Kao signale koje ćemo propuštati kroz funkcije i kojima ćemo pokušati odrediti notni zapis koristimo realne signale snimljene gitarom i to:

C – dur ljestvica odsvirana u tri brzine

C – dur akord Fis – dur ljestvica odsvirana u dvije brzine

Fis – dur akord C-dur ljestvica predstavlja cijele tonove dok Fis-dur ljestvica predstavlja sve povišene tonove što će nam dati dobar uvid postoji li razlika u određivanju cijelih i povišenih tonova. Različite brzine nam daju odgovor na pitanje kako brzina sviranja utječe na CWT odnosno notni prikaz. Akordi nam pokazuju ponašanje CWT-a pri istodobnom sviranju više nota (u ovom slučaju 6). Brzine sviranja su raspoređene na način da je u prvoj brzini jedan ton odsviran svake sekunde dok su druga i treća otprilike dvostruko brže od prethodne. U nastavku su dani rezultati za C-dur te Fis-dur ljestvicu u tri odnosno dvije brzine te C-dur i Fis-dur akorde pri čemu je za svaku brzinu dan CWT prikaz signala, prikaz izvučenih nota iz CWT-a te notni zapis. Prikaz izvučenih nota možemo shvatiti kao vizualni prikaz tablice iz koje se gradi notni zapis.

Page 6: Odredivanje Notnog Zapisa Glazbenih Signala

Slika 4 - CWT C-dur ljestvice, 1. Brzina

Slika 5 - izolirani tonovi C-dur ljestvice, 1.

Brzina

Slika 6 - notni zapis C-dur ljestvice, 1.

brzina

Slika 7 - CWT C-dur ljestvice, 2. Brzina

Slika 8 - izolirani tonovi C-dur ljestvice, 2.

brzina

Slika 9 - notni zapis C-dur ljestvice, 2.

brzina

Page 7: Odredivanje Notnog Zapisa Glazbenih Signala

Slika 10 - CWT C-dur ljestvice, 3. Brzina

Slika 11 - izolirani tonovi C-dur ljestvice,

3. brzina

Slika 12 - notni zapis C-dur ljestvice, 3.

brzina

Slika 13 - CWT C-dur akorda

Slika 14 - izolirani tonovi C-dur akorda

Slika 15 - notni zapis C-dur akorda

Page 8: Odredivanje Notnog Zapisa Glazbenih Signala

Slika 16 - CWT Fis-dur ljestvice, 1. Brzina

Slika 17 - izolirani tonovi Fis-dur ljestvice,

1. brzina

Slika 18 - notni zapis Fis-dur ljestvice, 1.

brzina

Slika 19 - CWT Fis-dur ljestvice, 2. Brzina

Slika 20 - izolirani tonovi Fis-dur ljestvice,

2. brzina

Slika 21 - notni zapis Fis-dur ljestvice, 2.

brzina

Page 9: Odredivanje Notnog Zapisa Glazbenih Signala

Slika 22 - CWT Fis-dur akorda

Slika 23 - izolirani tonovi Fis-dur akorda

Slika 24 - notni zapis Fis-dur akorda

0 10 20 30 40 50 60 70 80 900

2

4

6

8

10

12

14

16

18

20

22

Slika 25 – primjena thresholda na signalu

sa slika 4 – 6 Prvo što možemo primjetiti gledajući rezultate je da CWT transformacija (slike 4, 7, 10, 13, 16, 19, 22) vrlo dobro hvata prvi harmonik, a nešto slabijim intenzitetom i drugi harmonik osnovnog tona. Ukoliko su ti harmonici dovoljno velike amplitude funkcija i njih prepoznaje kao samostalno odsvirane tonove i unosi ih u notni zapis. Na slikama izoliranih tonova (slike 5, 8, 11, 14, 17, 20, 23) lako je uočiti harmonike koje je funkcija uzela u obzir po odstupanju crvenih linija od glavnog ljestvičastog traga (idealne ljestvice). Naravno, budući da su note samo preslika izoliranih tonova i u notnom zapisu (slike 6, 9, 12, 15, 18, 21, 24) primjećujemo ista odstupanja. Pogreške zbog harmonika su najbolje vidljive na primjeru C-dur ljestvice 1. brzine gdje su harmonici toliko jaki da su skoro svi uzeti u obzir, stoga možemo reći da je ljestvica potpuno narušena. Druga vrsta pogreške koje se javlja je šum vidljiv u određenoj mjeri na svim CWT prikazima po cijelom platnu (nijanse svijetlo plave boje nepravilno raspoređene u okolini signala), u većini slučajeva preslab da bi bio shvaćen kao odsvirani ton no na slici 10, a pogotovo slici 4 vidimo jak šum koji se prenosi u notni zapis. Šum možemo pripisati za početak nesavršenosti izvođača. Moguće je da je pri sviranju samo okrznuo neželjenu žicu ili se ton koji je prije odsviran nije na vrijeme prigušio te utječe na buduće tonove. Druga varijanta su šumovi okoline

Page 10: Odredivanje Notnog Zapisa Glazbenih Signala

koji su uvijek prisutni i neizbježni. Zato se pri snimanju glazbenog signala posebno pazi na mjesto snimanja, ozvučenje, izbor instrumenta, a na kraju i samog izvođača ☺. Šum sa slike 10 vidljiv kao svjetlo plava traka koja se nastavlja duž signala bi mogli opisati neželjenim zahvaćanjem žice dok šum sa slike 4 svijetlo plave boje pri samom dnu, konstantne frekvencije, šumom izvana. Budući da šum u pravilu ne predstavlja signal velike amplitude uvođenjem granične vrijednosti amplituda koje ćemo promatrati rješavamo se svih amplituda niže od određene. Granična vrijednost ili threshold je određena kao postotak od maksimalne amplitude pronađene u CWT prikazu. Rezultat primjene granične amplitude odnosno thresholda za signal na slikama 4 - 6 prikazan je slikom 25. Vidimo da su nestale skoro sve nepotrebne note niske frekvencije. Amplituda preostale note niže frekvencije je očito bila veća od thresholda te se nastavila prikazivati. Treći izvor pogreške je sama napisana funkcija koja iz CWT transformacije prepoznaje tonove. U svim notnim zapisima možemo povremeno primjetiti 'lapsus' od pola tona greške. To bi značilo da je u tablici jedinica zapisana jedan redak niže ili više. Dobra strana te pogreške je što se u dosadašnjim mjerenjima nije pojavila veća pogreška od polutona pa to možemo smatrati i maksimalnom pogreškom same funkcije. Što se tiče određivanja trajanja pojedinog tona vidljivo po broju nacrtanih nota iste frekvencije, možemo reći da nema većih odstupanja te da su trajanja tonova zadovoljavajuće utvrđena. Uspoređujući C-dur i Fis-dur ljestvicu možemo zaključiti da nema razlike u analizi. Obje ljestvice se u pravilu određuju sa jednakom uspješnošću odnosno pogreškom. S obzirom da smo CWT transformacijom postigli dovoljno dobru osjetljivost u vremenskoj domeni, ne možemo očekivati urnebesnu osjetljivost u frekvencijskoj domeni. Razlog više je što smo funkciju prilagodili na eliminaciju harmonika odnosno bilo kakvih drugih signala osim

osnovnog tona. Stoga, u slučaju sa akordima (slike 13 – 15, 22 – 24) možemo reći da funkcija dobro obavlja svoj posao loše prepoznajući akorde. Prepoznati tonovi su u pravilu najniži tonovi akorda.

4. ZAKLJUČAK

Glavna karakteristika CWT-a je princip neodređenosti u vremensko-frekvencijskoj ravnini. U prijevodu, ne postoji jednoznačan način određivanja vremensko-frekvencijske ovisnosti, već je isti određen s nekoliko faktora. Princip neodređenosti ograničava točnost određivanja iste ovisnosti, te ograničava funkciju ONZGS. Međutim, unatoč svim ograničenjima funkcija daje poprilično dobre rezultate, male pogreške od pola tona uglavnom na rubnim dijelovima, te pogreške prvih harmonika. Jedina prava zamjerka je potreba za velikim računalnim resursima. Poboljšanja su moguća učiniti na nekoliko razina. Prvenstveno se to odnosi na nepostojanje anti-aliasing filtra kojeg bi bilo potrebno dodati, zatim na ograničenu brzinu sviranja, od 8 Hz, koja je, iako respektabilna, i dalje ograničavajući faktor, potom na utjecaj viših harmonika koje bi bilo potrebno ukomponirati u CWT tako da ih CWT ne prikazuje kao zasebne frekvencije već kao dio osnovnog harmonika, te na brzinu algoritma, koju je moguće povećati optimiziranjem programskog kôda. Što se tiče notnog prikaza trebalo bi ga prilagodit glazbenim standardima prikaza. To za početak podrazumijeva spajanje više jednakih 32-inki u odgovarajuće notne oznake dužeg trajanja (16-inke, 8-inke, 4-inke itd. ) te violinski ključ na početku crtovlja. Dodatno bi se mogla napraviti funkcija koja određuje tonalitet i stavlja unaprijed povisilice (ili snizilice) na početku pored violinskog ključa no takva funkcija zbog svoje širine bi predstavljala temu za još jedan projekt. Konačno, potrebno je napomenuti da je algoritam optimiziran za gitaru, dakle za specifičnost njenog zvuka. Naglasak je na

Page 11: Odredivanje Notnog Zapisa Glazbenih Signala

melodiji, pa je gubitak harmonije neizbježan. Naravno, moguće je napraviti optimizaciju za harmoniju, ali to nije bio cilj ovoga projekta.

5. LITERATURA

[1] nmdos.zesoi.fer.hr [2] Matlab 7.1 Help Tool [3] www.wikipedia.org/wiki/guitar [4] www.wikipedia.org/wiki/notes

Page 12: Odredivanje Notnog Zapisa Glazbenih Signala

Dodatak 1. function ONZGS(threshold) % ONZGS - funkcija trazi naziv glazbenog signala a kao rezultat daje prikaz % notnog zapisa istog. % ONZGS(threshold) - threshold odreduje najnizu razinu signala koja se smatra % informacijom, osnosno najvisu razinu koja se smatra sumom, skaliranom na % 1. threshold je element skupa <0, 1]. % Ukoliko parametar nije zadan ili je izvan zadanih vrijednosti uzima se % vrijednost threshold=0.1. % % Podrzani formati: wav, frekvencije otipkavanja 44100, 22050, 48000 i 24000 % % Vidi jos: Filtriranje %%% Graficko sucelje clc; disp(' '); disp(' * * * * Slucajni procesi u sustavima * * * *'); disp(' '); disp(' ODREDJIVANJE NOTNOG ZAPISA GLAZBENIH SIGNALA '); disp(' '); disp(' autori:'); disp(' Blecic Raul'); disp(' Crnkovic Boris'); disp(' Ivankovic Andrej'); disp(' Petrovic Sebastian'); disp(' '); disp('>> za help pozovite help ONZGS'); disp('>> rezultat je prikazan slikom...'); disp(' '); %%% Provjera thresholda if nargin~=1 threshold=0.1; elseif threshold>1 disp('>> Threshold je izvan zadanih vrijednosti. Vidi help ONZGS.') disp(' '); threshold=0.1; elseif threshold<=0 disp('>> Threshold je izvan zadanih vrijednosti. Vidi help ONZGS.') threshold=0.1;

disp(' '); end %%% Definiranje signala i karakteristika signala name = input('>> Naziv signala: ', 's'); [x1, fs1] = wavread(name); %%% Odreðivanje frekvencije podotipkavanja if round(fs1/4410)==fs1/4410 fs=4410; else fs=4800; end x = x1(1:fs1/fs:length(x1), 1); T = 1/fs; t = [0:length(x)]' * T; %%% priprema za CWT a3 = scal2frq(1, 'cmor8-1', T) / 440; % osnovni ton % F#, F, E, D#, D, C#, C, B, A#, A, G#, G % 2.^([ -9, -8, -7, -6, -5, -4, -3, -2, -1, 0 , 1 , 2 ]/12) * frek_a octave = a3 * 2.^([-9:2]/12); % osnovna oktava scales = [.5* octave octave 2*octave 4*octave 8*octave]; % skala za 5 oktava frequencies = scal2frq(scales, 'cmor8-1', T); % frekvencije za 5 oktava %%% CWT X = cwt(x, scales, 'cmor8-1'); X = abs(X); X = X./(max(max(X))); %%% Filtriranje rezultata [Tab, maximum] = Filtriranje(threshold, X, fs); %%% Prikaz rezultata note2(Tab); %%% Usporedba F-T ovisnosti nakon CWTa i nakon filtriranja

Page 13: Odredivanje Notnog Zapisa Glazbenih Signala

err = input('>> Za prikaz usporedbe tocnosti odaberite 1: '); if err == 1 figure imagesc(Tab) figure, h=imagesc(t, frequencies, X); ylabel('Hertza'), xlabel('sekundi'), set(get(h, 'Parent'), 'YDir', 'normal') set(get(h, 'Parent'), 'YScale', 'log') fre = fliplr(scal2frq([.5*octave octave 2*octave 4*octave 8*octave], 'cmor8-1', T)); set(get(h, 'Parent'), 'YTick', fre) grid grid minor end %%% brisanje svih varijabli clear all Dodatak 2. function [rez, maximum]=Filtriranje(parameter, X, fs) % Filtrira signal skaliran na 1 s obzirom na threshold. % % Vidi jos: ONZGS %%% trazenje srednjih vrijednosti unutar 1/8 sekunde po svim freq rez=zeros(size(X, 1), floor(size(X, 2)/fs*8)); for k=1:size(X, 1) n=1; for l=1:floor(fs/8):floor(((size(rez, 2)-1)*fs/8)) for m=l:l+fs/8 rez(k, n)=rez(k, n)+X(k, m); end rez(k, n)=rez(k, n)/fs*8; n=n+1; end end %%% trazenje maximalne vrijednosti po svim freq

maximum=max(rez); %%% filtriranje for k=1:size(rez, 2) for l=1:size(rez, 1) if maximum(k)<parameter rez(l, k)=0; elseif rez(l, k)==maximum(k) % samo jedna vrijednost rez(l, k)=1; else rez(l, k)=0; end end end Dodatak 3. function []=note2(m) [dim1,dim2]=size(m); t=[0:0.01:dim2]; tn=[0:1:10]; %crtovlje plot(t,0,'b'); hold on; plot(t,10,'r'); plot(t,10.5,'r'); plot(t,11,'r'); plot(t,11.5,'r'); plot(t,12,'r'); plot(t,22,'b'); axis tight %racunanje tablice indeksa za cijele tonove temp=[1 3 5 7 8 10 12]; indeks=temp; for i=1:1:10 indeks=[indeks temp+i*12]; end %POCETAK CRTANJA NOTA a=1;x=1; for j= 1:1:dim2 y=15.5; for i= 1:1:dim1

Page 14: Odredivanje Notnog Zapisa Glazbenih Signala

if m(i,j)>0 brn=m(i,j); for brojac=1:1:brn %crta za note izvan oznacenog crtovlja yt=y; if (yt>=12.5) t5= [x-0.3:0.001:x+0.3]; if (abs(round(yt)-yt)>0) && (~(abs(round(yt)-yt)==0.5)) yt=yt-0.25; plot(t5,yt); else plot(t5,yt); end yt=yt-0.5; while (yt>=12.5) plot(t5,yt); yt=yt-0.5; end end if (yt<=9.5) t5= [x-0.3:0.001:x+0.3]; if (abs(round(yt)-yt)>0) && (~(abs(round(yt)-yt)==0.5)) yt=yt+0.25; plot(t5,yt); else plot(t5,yt); end yt=yt+0.5; while (yt<=9.5) plot(t5,yt); yt=yt+0.5; end end %puna nota to = (0:0.01:1)'*2*pi+10; n1 = x+(1/5)*sin(to); n2 = y+(1/5)*cos(to); fill(n1,n2,'b');

%vrat note t4= [x+0.2:0.001:x+0.2+0.075]; plot(t4,y-4+20*(t4-x),'b'); %zastavice t6= [x+0.275:0.001:x+0.275+0.2]; plot(t6,y+1.3-0.2*sin(15*(t6-x)),'b'); plot(t6-0.01,y+1.1-0.2*sin(15*(t6-x)),'b'); plot(t6-0.02,y+0.9-0.2*sin(15*(t6-x)),'b'); k=1;brp=1; for k=1:1:77 if i==indeks(1,k) brp=0; end end %povisilica if brp==1 t1= [x-0.5:0.001:x-0.5+0.125]; plot(t1,y-0.1,'r'); plot(t1,y+0.1,'r'); t2= [x-0.5:0.001:x-0.5+0.0625]; plot(t2,y+4.9-0.2+10*(t2-x),'r'); t3= [x-0.5+0.0625:0.001:x-0.5+0.125]; plot(t3,y+4.9-0.2+10*(t2-x),'r'); end if ~(brojac==brn) x=x+1; end end break; end k=1;br=0; for k=1:1:77 if i==indeks(1,k) y=y-0.25;%br=1; end end end x=x+1; end hold off;