!7 replace MarkedImage with BWImageAndRange. static L markedImages; p-exp { L files = audioRecordingsWithSingleClip(); pnl(files); markedImages = map_printProgress(f audioFileToBWImageAndRange, files); showOriginalClips(); showYAveragedOnDifferentBands(); } svoid showYAveragedOnDifferentBands { // Select a band, y-average, auto-contrast repeat with sleep 1 { int h = first(markedImages).image.getHeight(); double a = random()*0.9, b = a+0.1; final int y1 = iround(a*h), y2 = iround(b*h); final new Scorer scorer; quickShowZoomedImage(mergeBWImagesVertically(map(markedImages, func(MarkedImage img) -> BWImage { new Var processedImage; L entryPoints = audio_entryPointsUsingBand_v1(img.image, intRange(y1, y2), +processedImage); audio_scoreEntryPoints(scorer, img, entryPoints); ret markIntRangesOnTopOfBWImage( markIntRangesOnTopOfBWImage(squishBWImage(processedImage!, 20), intsToSize2Ranges(entryPoints), 5), ll(intRange(img.start, img.end)), 5); }))); print(scorer + " / Band: " + y1 + " to " + y2 + " of " + h); } } svoid showOriginalClips { showImage(mergeBWImagesVertically(map renderBWImageAndRange(markedImages))); }