// here we will define a process that creates and populates a series of parallel dataset, one of each 'feature-space' that we can then eventually manipulate more easily than individual dimensions.
// define a few datasets
(
@ -6,7 +7,6 @@
~mfccDS = FluidDataSet(s,\mfcc11);
~durDS = FluidDataSet(s,\dur11);
//define as many buffers as we have parallel voices/threads in the extractor processing (default is 4)
//reduce the MFCC timbral space stats (many potential ways to explore here... just 2 provided for fun)
//reduce the MFCC timbral space stats (many potential ways to explore here... - 2 are provided to compare, with and without the derivatives before running a dimension reduction)
~tempDS = FluidDataSet(s,\temp11);
~query = FluidDataSetQuery(s);
@ -110,48 +110,57 @@ t = Main.elapsedTime;
~query.addRange((7*12),24);// and the same stats of the first derivative (moving 7 stats x 12 mfccs to the right)
~query.transform(~mfccDS, ~tempDS);
//check
//check that you end up with the expected 48 dimensions
~query.and(0,">", 11025)//also larger than a quarter of second
~query.transformJoin(~durDS, ~pitchDS, ~tempDS); //this passes to ~tempDS only the points that have the same label than those in ~durDS that satisfy the condition. No column were added so nothing from ~durDS is copied
// print to see
// print to see how many slices (rows) we have
~tempDS.print
// further conditions to assemble the query
@ -213,7 +222,7 @@ Routine{
~query.addRange(0,4) //copy only mean and stddev of pitch and confidence
~query.transform(~tempDS, ~globalDS); // pass it to the final search
// print to see
// print to see that we have less items, with only their pitch