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;

)