static int similarityToClippedRecordings_h = 20; // audioFile must already be clipped static Map similarityToClippedRecordings(File audioFile) { BWImage img = audioFileToFrequencyImage(audioFile); new Map map; img = smoothResizeBWImage_heightOnly(img, similarityToClippedRecordings_h); for (File f2 : clippedNamedRecordings()) { if (sameFile(audioFile, f2)) continue; BWImage img2 = audioFileToFrequencyImage(f2); img2 = smoothResizeBWImage_heightOnly(img2, similarityToClippedRecordings_h); float sim = bwImageSimilarityResized_ignoreRatioMismatch(img, img2, 0f); print(formatDoubleX(sim*100, 2) + "%: " + f2.getName()); map.put(f2.getName(), sim); } ret mapSortedByValuesDesc(map); }