Som det sidste projekt inden specialet, har jeg lavet et projekt (på 15 ects-point), som handler om at finde melodien i et polyfont musikstykke.

Der blev præsenteret en meget simpel metode, som er inspireret af SHS. Metoden er blevet afprøvet med den evalueringsmetode, som blev anvendt ved MIREX2006, så resultaterne kan sammenlignes med de resultater, som deltagerne ved MIREX2006 opnåede. Resultatet viste, at den foreslåede metode opnår 3. højeste score med en korrekt angivelse af melodiens fundamentalfrekvens (F0) i 80% af tiden. Det samlede resultat kan ses på nedenstående figur, hvor raw pitch angiver, hvor godt metoden finder den korrekte melodi, mens raw chroma angiver, hvor godt dette er tilfældet, når man ser bort fra oktav-fejl.

Resultater 2006

Her kan man hente rapporten.



Der er links til de relevante filer nederst på siden. Her følger først en forklaring på hvad filerne indeholder, samt hvordan man anvender dem:

Filen med kildekoden indeholder Matlab-filer for 3 versioner af den foreslåede metode. Desuden følger 2 evalueringsfunktioner med.

Den funktion som beregner melodien hedder "findMelody" og kaldes f.eks. med "findMelody('pop4.wav')". Funktionen genererer en fil, som indeholder budet på melodien. Filen kommer til at ligge samme sted som wav-filen, men får endelsen ".MEL.txt".

Den smarteste måde at afprøve "findMelody" på, er ved først at kopiere de wav-filer, som findes i træningssættet (som kan hentes herunder) ind i den folder, som "findMelody.m" findes i. Dernæst kopieres filerne "run.sh" og "runres.sh" også ind i folderen. Hvis man har bash som shell, kan man nu køre "findMelody" i et bash-script ved at udføre "./run.sh". Når scriptet er færdig, er der genereret en ".MEL.txt"-fil for hver ".wav"-fil. Nu kopieres filer med endelsen ".REF.txt" fra træningssættet, da disse filer indeholder specifikationen af melodiens korrekte frekvens. Funktionen "eval2006" kan evaluere den fundne melodi (".MEL.txt") i forhold til reference-melodien (".REF.txt"), og gør dette efter de evalueringsspecifikationer, som blev anvendt ved MIREX2006. Funktionen "eval2004" fungerer på samme måde, men evaluerer i forhold til ISMIR2004. For på automatisk vis at evaluere alle filerne, kan man udføre "./runres.sh", hvorved der generes 2 filer, nemlig "result2006.txt" og "result2004.txt".

Her kan man hente kildekoden.

Her kan man hente det træningssæt, som er blevet anvendt ved afprøvningen. De samme testfiler kan findes via hjemmesiden for MIREX2006 og ligger her.

Resultatet for den foreslåede metode kan enten genereres via kildekoden eller hentes her.

Et regneark med det samlede resultat kan findes her.