10.07.2015 Views

Dragan Matić: Genetički algoritmi i muzika - Univerzitet u Novom Sadu

Dragan Matić: Genetički algoritmi i muzika - Univerzitet u Novom Sadu

Dragan Matić: Genetički algoritmi i muzika - Univerzitet u Novom Sadu

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Player player = new Player();player.play("C");player.play("C7h");player.play("C5maj7w");player.play("G5h+B5h+C6q_D6q");player.play("G5q G5q F5q E5q D5h");player.play("T[Allegro] V0 I0 G6q A5q V1 A5q G6q");player.play("V0 Cmajw V1 I[Flute] G4q E4q C4q E4q");player.play("T120 V0 I[Piano] G5q G5q V9 [Hand_Clap]q Rq");Klasa PatternObjektima klase Pattern predstavalju se muzički segmenti. Predstavljanjem segmenata kao paterna,korisniku se pruža mogudnost kombinovanja i modifikovanja dijelova kompozicija na različite načine, kaošto je kopiranje ili dodavanje novih dijelova, promjena oktave, tonaliteta, instrumenta, tempa i slično.Objekti klase Pattern nose kompletan set informacija o jednom dijelu kompozicije.Najvažniji metodi klase Pattern se odnose na dodavanje novih segmenata na postojedi (nekolikopreopteredenih metoda add(...), označavanje dijelova paterna koji se ponavljaju, snimanje ili učitavanjepaterna u/iz tekstualnog fajla i slično.Detaljan opis algoritma – opšti principi funkcionisanjaU algoritmu se formira populacija jedinki koje unaprijed imaju ritam sličan referentnoj jedinki (rasporedotkucaja kod svake jedinke je potpuno isti kao kod referentne, a eventualni „poremedaji“ u ritmu mogunastati usljed generisanja pauza na različitim mjestima). Svaka jedinka može da predstavlja kompletnukompoziciju, ili jedan njen dio. Fitnes funkcija se računa na osnovu tri kriterijuma, gdje je svakomkriterijumu mogude dodijeliti odgovarajudu „težinu“, tj. definisati uticaj kriterijuma na čitav fitnes.Populacija sadrži unaprijed definisan broj jedinki koje su sortirane po fitnesu. U svakom koraku iteracije,na jednoj tredini jedinki (uvijek onih sa najboljim fitnesom) se primjenjuje jedan od moguda tri operatoramutacije. Vrši se generacijski odabir nove populacije (od svih ukupno generisanih novih jedinki, zajednosa svim starima bira se nova generacija za sljededu iteraciju). Operator ukrštanja se ne koristi. Algoritamprestaje sa radom ili kada se dostigne maksimalan broj iteracija, ili kada se formira jedinka sa dovoljnodobrim fitnesom. Kvalitet jedinke je obrnut u odnosu na veličinu fitnesa (zapravo se umjesto fitnesakoristi suprotan termin - funkcija kazne (eng. penalty factor). Jedinka je sve „bolja“ kako joj se smanjujefitnes.Uvođenje referentne jedinke je opciono, a može se smatrati korisnim i praktičnim ukoliko želimo da našakompozicija ima neki prepoznatljiv ritam (raspored trajanja nota i pauza), ili, što je češdi slučaj, akoželimo da odabir trajanja nota ne prepustimo slučajnom generatoru (mnogo je veda vjerovatnoda da dese slučajnim izborom generisati prilično nepravilan i neugodan ritam). Pored determinisanja ritma,referentna jedinka utiče i na fitnes, ali samo u mjeri unaprijed izračunatih vrijednosti, koje se u algoritammogu unijeti proizvoljno i nezavisno od referentne jedinke.44

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!