static ImageSurface showAudioFileWithEditableMarkers(final File audioFile) { L markers = audioFileFloatMarkers(audioFile); final ImageSurfaceWithXMarkers is = ImageSurfaceWithXMarkers(audioFileToFrequencyImage(audioFile).getBufferedImage(), markers); is.onMarkersChanged = r { setOneLineFileInfoField(audioFile, markers := struct(is.markers)) }; is.setZoom(2); showPackedFrame(fileName(audioFile), withCenteredButtons(is, "Play full", rThread { playWAV(audioFile) }, "Play clipped", rThread { playWAV(clipWAVFromMarkers(audioFile, is.markers, javaxCachesDir("Audio/clip.wav"))) })); ret is; }