Akkordfelismerés és gépi improvizáció

OData támogatás
Konzulens:
Dr. Bank Balázs Lajos
Méréstechnika és Információs Rendszerek Tanszék

A dolgozatomnak két fő célja volt. Az első céljának zenefelvételek automatikus akkordfelismerését választottam, míg a másodiknak az ehhez szervesen kapcsolódó, számítógéppel való zenei improvizációra képes algoritmus implementálását tűztem ki.

Az akkord a nyugati zene sajátossága. Egyszerűen megfogalmazva azt mondhatjuk, hogy az akkord több hang egyidejű megszólalása, ami együtt egyfajta harmóniát ad. Egy gyakorlott zenész képes lehet arra, hogy hallás alapján felismerje az egyes akkordokat. Kevésbé gyakorlott zenészeknek - akik nem rendelkeznek még ezzel a képességgel - nagy segítség lehet egy akkordfelismerő szoftver. Egy ilyen alkalmazással könnyebben meg lehet tanulni olyan zenéket, amihez nem áll rendelkezésre kotta, vagy ez alapján akár zenei transzkripciót, feldolgozást is könnyebben lehet készíteni. Ezenkívül egy jól működő akkordfelismerő program magába foglalja annak a lehetőségét, hogy nagyméretű zenei adatbázist készítsünk, mely alkalmas lehet további gépi tanításra például zenei stílus felismerés vagy zenei improvizáció készítés kapcsán.

Az akkordfelismerés egy ma is folyamatosan fejlődő kutatási terület, teljesen egzakt algoritmus, mely tévesztés nélkül működne, még nem készült. Az eddig elkészült alkalmazásokban többféle módszerrel próbálkoztak, ilyen pl. a Rejtett Markov-modelles megközelítés, mintamegfeleltetés, neurális hálózatokkal való tanítás. Ezen módszerek az emberi döntéshozatalt próbálják matematikailag modellezni, jellemzően valószínűségi módszerek alkalmazásával. Mivel az egyszerű jelfeldolgozást alkalmazó módszerek nem tűntek elég hatékonynak, dolgozatomban az akkordfelismerést Rejtett Markov-modelles irányból közelítettem meg. Ehhez a szakirodalomban leírt eszközöket használtam fel, és azt fejlesztettem tovább saját ötleteken alapuló módszerekkel. Az elkészült programot Matlab környezetben implementáltam és annak pontosságát egy megfelelően nagyméretű zenei adatbázison teszteltem.

A dolgozatom második részében számítógéppel történő zenei improvizációkészítéssel foglalkoztam. Egy ilyen funkcióra képes szoftver alkalmas lehet a zenei improvizáció oktatására, illetve gyakorlás céljára virtuális zenésztársként is felhasználhatjuk, ha más zenészek éppen nem elérhetőek. Munkám során egy valós és egy nem valós idejű zenei improvizációra képes algoritmust implementáltam, ebből is nagyobb bonyolultsága és személyes érdeklődésem miatt a valós idejű algoritmusra koncentráltam. A nem valós idejű program leginkább csak teszt céljából készült. A valós idejű szoftver elindítása után 10 másodperc alatt meghatározza a mikrofonra érkező zenei jel tempóját, rászinkronizálódik, majd az általa felismert akkordok alapján egyszólamú zenei improvizációt készít. Ebben a programban - a gépi improvizáció igényeit figyelembe véve - egy egyszerűbb akkordfelismerő algoritmust alkalmaztam. Ezenkívül a programban implementáltam egy akkordszekvencia-felismerés funkciót is, amely a felismert akkordkör alapján jóslást ad a következő akkordra, és ez alapján folytatja tovább az improvizációt. A programot C++ nyelven implementáltam a JUCE keretrendszer segítségével. A program forráskódját, a lefordított, és önmagában is működő exe kiterjesztésű fájlt és egy négyakkordos szekvenciára a szoftver által készített dallamot mellékletként közzétettem.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.