SCMIRMusicPredictor
//As used in the algorithmic jury and early electronic dance music corpus analysis projects
//
//Trains up a three part model (timbre, rhythms, summed harmonic change) over a corpus. The model can then be tested on a target piece to see how well it predicts it.
//
//Note that scores are relative to a given model.
//REQUIREMENTS: you need to set some directories in the *initClass class method.
//depends on KMeans from Quarks, and KMeansZArchive extension class for save and load
(
~corpus = [ "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/A Rest_Beyond Kaos.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Another Kaos Beyond Kaos.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Beyond The Dance - The Cult Mix.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Daymares, It Is What It Is.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Emanon Begins.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Feel Surrreal Ends The Feel Surreal.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Freestyle.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/R-Theme.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Sinister.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Some More Spaced Out.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Spaced Out.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/Strings Of The Strings Of Life.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/The Dance.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/The End.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/A Relic Long Ago.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Drama.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Dreams Of Dreamers.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Emanon Ends.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Icon (Montage Mix).wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Kaotic Harmony.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Nude Photo.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Phantom Lurks.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Phantom.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Salsa Life.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Strings Of Life.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/The Beginning.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/To Be Or Not To Be.wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Wiggin (Juan's Mix).wav", "/data/audio/mirdata/EDM/Derrick May Innovator Disc 2/Winter On The Blvd.wav" ];
)
m = SCMIRMusicPredictor("",~corpus);
//first train up on corpus; about twice realtime speed, so can take some hours if you have hours of audio!
(
{
m.prepare();
}.fork;
)
//use model to predict a piece, 4 scores result= timbre predictive score, npvi score (unused in actual projects mentioned above), predicted IOI score, predicted harmonic change score
(
{
~results = m.testPiece("/data/audio/mirdata/EDM/Derrick May Innovator Disc 1/A Rest_Beyond Kaos.wav");
}.fork;
)